From cf4b8b8c311d3232233741519bcc356b48ce4bdc Mon Sep 17 00:00:00 2001
From: William Desportes <williamdes@wdes.fr>
Date: Fri, 23 Dec 2022 18:54:04 +0400
Subject: [PATCH] Add an autopkgtest suite

---
 debian/tests/control        |  2 ++
 debian/tests/jasmine        | 37 ++++++++++++++++++++++++++++++++
 debian/tests/test-runner.py | 42 +++++++++++++++++++++++++++++++++++++
 3 files changed, 81 insertions(+)
 create mode 100755 debian/tests/control
 create mode 100755 debian/tests/jasmine
 create mode 100644 debian/tests/test-runner.py

diff --git a/debian/tests/control b/debian/tests/control
new file mode 100755
index 0000000..c639311
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,2 @@
+Tests: jasmine
+Depends: lighttpd <!nocheck>, python3-selenium, node-jest, @
diff --git a/debian/tests/jasmine b/debian/tests/jasmine
new file mode 100755
index 0000000..bec3118
--- /dev/null
+++ b/debian/tests/jasmine
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+set -eu
+
+# TEMP
+rm -rv $AUTOPKGTEST_TMP/*
+
+PORT=8888
+DOCROOT="$AUTOPKGTEST_TMP/docroot"
+CONF="$AUTOPKGTEST_TMP/lighttpd.conf"
+mkdir -p "$DOCROOT"
+cat >"$CONF" <<EOF
+server.document-root = "$DOCROOT"
+server.port = $PORT
+mimetype.assign   += ( ".html" => "text/html", ".css" => "text/css" )
+EOF
+
+mkdir -p $DOCROOT/debian/tests
+mkdir -p $DOCROOT/src
+
+cp ./test/jquery-ui-timepicker-addon_spec.js $DOCROOT
+cp ./test/SpecRunner.html $DOCROOT
+cp ./debian/jasmine-fixture-2.0.0.js $DOCROOT/debian
+cp ./src/jquery-ui-timepicker-addon.js $DOCROOT/src
+ln -s /usr/share/nodejs/jasmine-core/lib/jasmine-core $DOCROOT/debian/tests/jasmine-core
+
+# validate test configuration
+lighttpd -tt -f "$CONF"
+
+lighttpd -D -f "$CONF" &
+LIGHTTPD_PID=$!
+
+# Do tests
+
+python3 ./debian/tests/test-runner.py
+
+trap 'kill "$LIGHTTPD_PID"' EXIT
diff --git a/debian/tests/test-runner.py b/debian/tests/test-runner.py
new file mode 100644
index 0000000..c083b5d
--- /dev/null
+++ b/debian/tests/test-runner.py
@@ -0,0 +1,42 @@
+from selenium import webdriver
+from selenium.webdriver.common.by import By
+
+options = webdriver.ChromeOptions()
+options.add_argument("--headless")
+options.add_argument("--disable-extensions")
+driver = webdriver.Chrome(options=options)
+
+print("Running tests")
+driver.get("http://localhost:8888/SpecRunner.html?random=false")
+assert "jquery-ui-timepicker-addon Spec Runner" in driver.title
+
+jasmine_version = driver.find_element(By.CLASS_NAME, "jasmine-version")
+print("Ran tests on Jasmine " + jasmine_version.text)
+
+elem = driver.find_element(By.CLASS_NAME, "jasmine-symbol-summary")
+
+for li_node in elem.find_elements(By.TAG_NAME, 'li'):
+    li_class = li_node.get_attribute("class")
+    if li_class == "jasmine-passed":
+        print(".", end = "")
+    elif li_class == "jasmine-failed":
+        print("x", end = "")
+    elif li_class == "jasmine-incomplete":
+        print("!", end = "")
+    elif li_class == "jasmine-pending":
+        print("?", end = "")
+    else:
+        print("missing class: " + li_class)
+
+print("")
+test_result = driver.find_element(By.CLASS_NAME, "jasmine-overall-result")
+print(test_result.text)
+
+assert "76 specs" in test_result.text
+assert "0 failures" in test_result.text
+assert "2 pending specs" in test_result.text
+assert "76 specs, 0 failures, 2 pending specs" in test_result.text
+
+driver.close()
+
+print("End of tests")
-- 
GitLab