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