summaryrefslogtreecommitdiffstats
path: root/test-widget
diff options
context:
space:
mode:
Diffstat (limited to 'test-widget')
-rw-r--r--test-widget/launcher.sh.in60
-rw-r--r--test-widget/test-config.xml.in25
2 files changed, 85 insertions, 0 deletions
diff --git a/test-widget/launcher.sh.in b/test-widget/launcher.sh.in
new file mode 100644
index 0000000..601e88a
--- /dev/null
+++ b/test-widget/launcher.sh.in
@@ -0,0 +1,60 @@
+#!/bin/bash -x
+
+###########################################################################
+# Copyright (C) 2017, 2018 IoT.bzh
+#
+# Author: Romain Forlot <romain.forlot@iot.bzh>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+###########################################################################
+
+PORT=$1
+TOKEN=$2
+
+# Research the Api name used
+CFGFILE=$(find ${AFM_APP_INSTALL_DIR} -name "*json" -print0 | head -n1)
+API=$(grep '\"api\"' ${CFGFILE} | cut -d'"' -f4)
+
+AFBCLIENTIN=$(mktemp -u)
+AFBCLIENTOUT=$(mktemp -u)
+mkfifo $AFBCLIENTIN
+mkfifo $AFBCLIENTOUT
+
+declare -a testVerb
+
+if [[ $(jq '.testVerb|type' $CFGFILE) == "array" ]]
+then
+ testVerbLength=$(jq '.testVerb | length')
+ for (( idx=0; idx<testVerbLength; idx++ )) do
+ testVerb[$idx]=$(jq -r ".testVerb[$idx].uid" ${CFGFILE})
+ done
+else
+ testVerb[0]=$(jq -r ".testVerb.uid" ${CFGFILE})
+fi
+
+tail -f $AFBCLIENTIN | afb-client-demo ws://localhost:${PORT}/api?token=${TOKEN} > $AFBCLIENTOUT 2>&1 &
+CLIENTPID=$!
+
+testVerbLength=${#testVerb[@]}
+for (( idx=0; idx<testVerbLength; idx++ )) do
+ echo "$API ${testVerb[$idx]}" > $AFBCLIENTIN
+done
+
+while read -r line
+do
+ [ "$(echo "${line}" | grep -E 'Ran [[:digit]]+ tests in')" ] && break
+done < $AFBCLIENTOUT
+
+rm -f $AFBCLIENTIN
+rm -f $AFBCLIENTOUT
+kill $CLIENTPID
diff --git a/test-widget/test-config.xml.in b/test-widget/test-config.xml.in
new file mode 100644
index 0000000..3252c4b
--- /dev/null
+++ b/test-widget/test-config.xml.in
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" id="@PROJECT_NAME@-test" version="@PROJECT_VERSION@">
+ <name>@PROJECT_NAME@-test</name>
+ <icon src="@PROJECT_ICON@"/>
+ <content src="bin/launcher" type="application/vnd.agl.native"/>
+ <description>Supplementary widget used to launch tests for the project @PROJECT_NAME@</description>
+ <author>Romain Forlot &lt;romain.forlot@iot.bzh&gt;</author>
+ <license>APL2.0</license>
+
+ <feature name="urn:AGL:widget:required-binding">
+ <param name="aft" value="auto" />
+ </feature>
+
+ <feature name="urn:AGL:widget:required-api">
+ <param name="@API_NAME@" value="auto" />
+ </feature>
+
+ <feature name="urn:AGL:widget:required-permission">
+ <param name="urn:AGL:permission:test" value="required" />
+ </feature>
+
+ <feature name="urn:AGL:widget:file-properties">
+ <param name="bin/launcher" value="executable" />
+ </feature>
+</widget>