diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2025-01-06 17:13:30 +0100 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2025-01-08 06:40:52 +0100 |
commit | 278a7f95a9f50489f371b7137eff8a342b494fdf (patch) | |
tree | f23a43d502e4b7575801bdf4963e153419a2b0af | |
parent | a8575ab8757c3c22c534bcebd2558c712bc6df90 (diff) | |
download | xK-278a7f95a9f50489f371b7137eff8a342b494fdf.tar.gz xK-278a7f95a9f50489f371b7137eff8a342b494fdf.tar.xz xK-278a7f95a9f50489f371b7137eff8a342b494fdf.zip |
Port the integration test from expect to wdye
-rw-r--r-- | CMakeLists.txt | 5 | ||||
m--------- | liberty | 0 | ||||
-rwxr-xr-x | test | 52 | ||||
-rw-r--r-- | test.lua | 72 |
4 files changed, 77 insertions, 52 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 2263af0..e49d6a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -210,6 +210,11 @@ if (BUILD_TESTING) add_test (NAME custom-static-analysis COMMAND ${PROJECT_SOURCE_DIR}/test-static) endif () +option (BUILD_TESTING_WDYE "..." OFF) +if (BUILD_TESTING_WDYE) + add_subdirectory (liberty/tools/wdye) + add_test (NAME integration COMMAND wdye "${PROJECT_SOURCE_DIR}/test.lua") +endif () # Various clang-based diagnostics, loads of fake positives and spam file (GLOB clang_tidy_sources *.c) diff --git a/liberty b/liberty -Subproject 1930f138d4836f8ed9613a17bfe09dc53441618 +Subproject af889b733e81fa40d7a7ff652386585115e186f @@ -1,52 +0,0 @@ -#!/usr/bin/expect -f -# Very basic end-to-end testing for CI -set tempdir [exec mktemp -d] -set ::env(XDG_CONFIG_HOME) $tempdir - -# Run the daemon to test against -system ./xD --write-default-cfg -spawn ./xD -d - -# 10 seconds is a bit too much -set timeout 5 - -spawn ./xC - -# Fuck this Tcl shit, I want the exit code -expect_after { - eof { - puts "" - puts "Child exited prematurely" - exit 1 - } -} - -# Connect to the daemon -send "/server add localhost\n" -expect "]" -send "/set servers.localhost.addresses = \"localhost\"\n" -expect "Option changed" -send "/disconnect\n" -expect "]" -send "/connect\n" -expect "Welcome to" - -# Try some chatting -send "/join #test\n" -expect "has joined" -send "Hello\n" -expect "Hello" - -# Attributes -send "\x1bmbBold text! \x1bmc0,5And colors.\n" -expect "]" - -# Try basic commands -send "/set\n" -expect "]" -send "/help\n" -expect "]" - -# Quit -send "/quit\n" -expect "Shutting down" diff --git a/test.lua b/test.lua new file mode 100644 index 0000000..2edeca8 --- /dev/null +++ b/test.lua @@ -0,0 +1,72 @@ +#!/usr/bin/env wdye +-- Very basic end-to-end testing for CI +function exec (...) + local p = wdye.spawn(...) + local out = wdye.expect(p:eof {function (p) return p[0] end}) + if not out then + error "exec() timeout" + end + + local status = p:wait() + if status ~= 0 then + io.write(out, "\n") + error("exit status " .. status) + end + return out:gsub("%s+$", "") +end + +local temp = exec {"mktemp", "-d"} +local atexit = {} +setmetatable(atexit, {__gc = function () exec {"rm", "-rf", "--", temp} end}) + +local env = {XDG_CONFIG_HOME=temp, TERM="xterm"} +exec {"./xD", "--write-default-cfg", environ=env} + +-- Run the daemon to test against (assuming the default port 6667) +local xD = wdye.spawn {"./xD", "-d", environ=env} +local xC = wdye.spawn {"./xC", environ=env} + +function send (...) xC:send(...) end +function expect (string) + wdye.expect(xC:exact {string}, + wdye.timeout {5, function (p) error "xC timeout" end}, + xC:eof {function (p) error "xC exited prematurely" end}) +end + +-- Connect to the daemon +send "/server add localhost\n" +expect "]" +send "/set servers.localhost.addresses = \"localhost\"\n" +expect "Option changed" +send "/disconnect\n" +expect "]" +send "/connect\n" +expect "Welcome to" + +-- Try some chatting +send "/join #test\n" +expect "has joined" +send "Hello\n" +expect "Hello" + +-- Attributes +send "\x1bmbBold text! \x1bmc0,5And colors.\n" +expect "]" + +-- Try basic commands +send "/set\n" +expect "]" +send "/help\n" +expect "]" + +-- Quit +send "/quit\n" +expect "Shutting down" + +local s1 = xC:wait() +assert(s1 == 0, "xC exited abnormally: " .. s1) + +-- Send SIGINT (^C) +xD:send "\003" +local s2 = xD:wait() +assert(s2 == 0, "xD exited abnormally: " .. s2) |