diff options
Diffstat (limited to 'test/script')
| -rw-r--r-- | test/script/definition.et | 3 | ||||
| -rw-r--r-- | test/script/list.et | 42 | ||||
| -rw-r--r-- | test/script/output.et | 57 | ||||
| -rw-r--r-- | test/script/parser.et | 9 | ||||
| -rw-r--r-- | test/script/run.et | 327 | ||||
| -rw-r--r-- | test/script/shell.et | 100 |
6 files changed, 538 insertions, 0 deletions
diff --git a/test/script/definition.et b/test/script/definition.et index d2da737..45951cd 100644 --- a/test/script/definition.et +++ b/test/script/definition.et @@ -10,9 +10,12 @@ test Definition: expect /load-done/ send "run Test" + expect /global-info - Starting test ‘Test’/ expect /child-stdout p 4/ expect /match p 4/ expect /child-stdout p 11/ expect /match p 11/ + expect /run-test-result Test (.*)/ capture result + guard (result == "done") expect /(.*)/ capture done guard (done == "run-done") diff --git a/test/script/list.et b/test/script/list.et new file mode 100644 index 0000000..4b493a5 --- /dev/null +++ b/test/script/list.et @@ -0,0 +1,42 @@ +module list + +asset scripts: + path: ../asset/list + +def expect_next_stdout (what) from p: + expect /child-stdout shell (.*)/ from p capture line + guard (line == what) + + +test ListConcat: + spawn as p + with p: + send "load ${scripts.path}/concat.et" + expect /load-done/ + + send "run Test" + expect_next_stdout from p: + "c1 1" + "c1-end" + "c2 1" + "c2-end" + "c3 1" + "c3 2" + "c3 3" + "c3 6" + "c3 5" + "c3 2" + "c3 3" + "c3-end" + "c4 1" + "c4 2" + "c4 3" + "c4 6" + "c4 5" + "c4 2" + "c4 3" + "c4-end" + local: + expect /run-test-result Test (.*)/ capture result + guard (result == "done") + expect /run-done/ diff --git a/test/script/output.et b/test/script/output.et new file mode 100644 index 0000000..f210490 --- /dev/null +++ b/test/script/output.et @@ -0,0 +1,57 @@ +module output + +asset scripts: + path: ../asset/output + +test FlushOutput: + spawn as p + with p: + send "load ${scripts.path}/flush.et" + expect /load-done/ + + send "run Test" + expect /child-stdout p a/ + expect /child-stdout p b/ + expect /child-stdout p c/ + expect /child-stdout p d/ + expect /child-stdout p e/ + expect /match p e/ + expect /ignored p b/ + expect /ignored p c/ + expect /ignored p d/ + expect /match p a/ + expect /match-fail expect.*/ + + expect /run-test-result Test (.*)/ capture result + guard (result == "failed") + expect /run-done/ + +test IgnoreOutput: + spawn as p + with p: + send "load ${scripts.path}/ignore.et" + expect /load-done/ + + send "run Test" + expect /child-stdout p a/ + expect /child-stdout p b/ + expect /child-stdout p c/ + expect /child-stdout p d/ + expect /child-stdin p x/ + expect /child-stdout p e/ + expect /child-stdout p F/ + expect /child-stdout p g/ + expect /child-stdout p H/ + expect /match p d/ + expect /ignored p b/ + expect /ignored p c/ + expect /match p a/ + expect /ignored p e/ + expect /match p H/ + expect /ignored p g/ + expect /match p F/ + expect /match-fail expect.*/ + + expect /run-test-result Test (.*)/ capture result + guard (result == "failed") + expect /run-done/ diff --git a/test/script/parser.et b/test/script/parser.et index 554e345..908431e 100644 --- a/test/script/parser.et +++ b/test/script/parser.et @@ -11,3 +11,12 @@ test Parser: send "load ${scripts.path}/indent.et" expect /load-done/ + + send "load ${scripts.path}/function.et" + expect /load-done/ + + send "load ${scripts.path}/function-fail.et" + expect /load-failed parse-error/ + + send "load ${scripts.path}/tags.et" + expect /load-done/ diff --git a/test/script/run.et b/test/script/run.et new file mode 100644 index 0000000..87218c0 --- /dev/null +++ b/test/script/run.et @@ -0,0 +1,327 @@ +module run + +asset scripts: + path: ../asset/run + +asset scripts_success: + path: ../asset/run-success + +asset scripts_fail: + path: ../asset/run-fail + + +test TrivialRun: + spawn as p + with p: + send "load ${scripts.path}/trivial.et" + expect /load-done/ + + send "run AlwaysSucceeds" + local: + expect /run-test-result AlwaysSucceeds (.*)/ capture result + guard (result == "done") + expect /run-done/ + + send "run AlwaysFails" + local: + expect /match-fail .*/ + expect /run-test-result AlwaysFails (.*)/ capture result + guard (result == "failed") + expect /run-done/ + + +test SimpleRun: + let should_succeed = [ "bool", "command-flush", "command-ignore" ] + let should_fail = [ "bool", "command-ignore" ] + spawn as p + + with p: + for file in should_succeed: + send "load ${scripts_success.path}/$file.et" + local: + expect /(load-.*)/ capture done + guard (done == "load-done") + flush + + send "run Test" + local: + expect /run-test-result Test (.*)/ capture result + guard (result == "done") + expect /run-done/ + flush + + for file in should_fail: + send "load ${scripts_fail.path}/$file.et" + local: + expect /(load-.*)/ capture done + guard (done == "load-done") + flush + + send "run Test" + local: + expect /run-test-result Test (.*)/ capture result + guard (result == "failed") + expect /run-done/ + flush + + +test RunConfig: + node n + local: + shell on n: + cp ${scripts.path}/erebos-tester.yaml . + mkdir tools + cp ${scripts.path}/tools/echo.sh ./tools/tool + mkdir scripts + cp ${scripts.path}/trivial.et ./scripts/ + cp ${scripts.path}/echo.et ./scripts/ + + spawn as p on n + + with p: + send "load-config" + expect /load-config-done/ + send "run *" + expect /run-test-result AlwaysSucceeds done/ + expect /run-test-result AlwaysFails failed/ + expect /child-stdin p abcdef/ + expect /child-stdout p abcdef/ + expect /match p abcdef/ + expect /run-test-result ExpectEcho done/ + expect /run-done/ + + +test GetSysInfo: + node n + local: + shell on n: + cp ${scripts.path}/erebos-tester.yaml . + mkdir tools + cp ${scripts.path}/tools/sysinfo.sh ./tools/tool + mkdir scripts + cp ${scripts.path}/sysinfo.et ./scripts/ + + spawn as p on n + + with p: + send "load-config" + expect /load-config-done/ + send "run SysInfo" + expect /run-done/ + + +test CallStack: + spawn as p + with p: + send "load ${scripts.path}/callstack.et" + expect /load-done/ + + send "run AG" + expect /match-fail guard failed/ + expect /match-fail-line .*\/callstack.et:3:5: .*/ + expect /match-fail-var x 1/ + local: + expect /(match-fail-.*)/ capture done + guard (done == "match-fail-done") + local: + expect /run-test-result AG (.*)/ capture result + guard (result == "failed") + expect /run-done/ + flush + + send "run AE" + expect /match-fail expect failed/ + expect /match-fail-line .*\/callstack.et:8:5: .*/ + expect /match-fail-var x 2/ + local: + expect /(match-fail-.*)/ capture done + guard (done == "match-fail-done") + local: + expect /run-test-result AE (.*)/ capture result + guard (result == "failed") + expect /run-done/ + flush + + send "run BG" + expect /match-fail guard failed/ + expect /match-fail-line .*\/callstack.et:12:5: .*/ + expect /match-fail-var x 1/ + expect /match-fail-line .*\/callstack.et:15:5: .*/ + local: + expect /(match-fail-.*)/ capture done + guard (done == "match-fail-done") + local: + expect /run-test-result BG (.*)/ capture result + guard (result == "failed") + expect /run-done/ + flush + + send "run CG" + expect /match-fail guard failed/ + expect /match-fail-line .*\/callstack.et:19:5: .*/ + expect /match-fail-var x 3/ + expect /match-fail-var y 2/ + expect /match-fail-line .*\/callstack.et:23:5: .*/ + expect /match-fail-var z 3/ + local: + expect /(match-fail-.*)/ capture done + guard (done == "match-fail-done") + local: + expect /run-test-result CG (.*)/ capture result + guard (result == "failed") + expect /run-done/ + flush + + send "run BE" + expect /match-fail expect failed/ + expect /match-fail-line .*\/callstack.et:27:5: .*/ + expect /match-fail-var x 1/ + expect /match-fail-line .*\/callstack.et:31:5: .*/ + expect /match-fail-var p <process:p#[0-9]+>/ + local: + expect /(match-fail-.*)/ capture done + guard (done == "match-fail-done") + local: + expect /run-test-result BE (.*)/ capture result + guard (result == "failed") + expect /run-done/ + flush + + send "run CE" + expect /match-fail expect failed/ + expect /match-fail-line .*\/callstack.et:36:5: .*/ + expect /match-fail-var x 3/ + expect /match-fail-var y 2/ + expect /match-fail-line .*\/callstack.et:41:5: .*/ + expect /match-fail-var p <process:p#[0-9]+>/ + expect /match-fail-var z 3/ + local: + expect /(match-fail-.*)/ capture done + guard (done == "match-fail-done") + local: + expect /run-test-result CE (.*)/ capture result + guard (result == "failed") + expect /run-done/ + flush + + +test RunTag: + spawn as p + with p: + send "load ${scripts.path}/tags.et" + local: + expect /(load-.*)/ capture done + guard (done == "load-done") + flush + + send "run A" + local: + expect /run-test-result A1 (.*)/ capture result + guard (result == "done") + local: + expect /run-test-result A2 (.*)/ capture result + guard (result == "done") + local: + expect /run-(.*)/ capture done + guard (done == "done") + + send "run B C" + local: + expect /run-test-result B1 (.*)/ capture result + guard (result == "done") + local: + expect /run-test-result B2 (.*)/ capture result + guard (result == "done") + local: + expect /run-test-result C1 (.*)/ capture result + guard (result == "done") + local: + expect /run-test-result C2 (.*)/ capture result + guard (result == "done") + local: + expect /run-test-result BC (.*)/ capture result + guard (result == "done") + local: + expect /run-(.*)/ capture done + guard (done == "done") + + +test RunTagExclude: + spawn as p + with p: + send "load ${scripts.path}/tags.et" + local: + expect /(load-.*)/ capture done + guard (done == "load-done") + flush + + send "run * ^A ^C ^T2 ^B1" + local: + expect /run-test-result T1 (.*)/ capture result + guard (result == "done") + local: + expect /run-test-result B2 (.*)/ capture result + guard (result == "done") + local: + expect /run-(.*)/ capture done + guard (done == "done") + + send "run T1 B1 A C ^B ^A1" + local: + expect /run-test-result T1 (.*)/ capture result + guard (result == "done") + local: + expect /run-test-result A2 (.*)/ capture result + guard (result == "done") + local: + expect /run-test-result C1 (.*)/ capture result + guard (result == "done") + local: + expect /run-test-result C2 (.*)/ capture result + guard (result == "done") + local: + expect /run-(.*)/ capture done + guard (done == "done") + + +test RunExcludeConfig1: + node n + local: + shell on n: + cp ${scripts.path}/erebos-tester-select1.yaml erebos-tester.yaml + cp ${scripts.path}/tags.et . + + spawn as p on n + with p: + send "load-config" + expect /load-config-done/ + send "run *" + expect /run-test-result T1 done/ + expect /run-test-result T2 done/ + expect /run-test-result A1 done/ + expect /run-test-result A2 done/ + expect /run-test-result C1 done/ + expect /run-test-result C2 done/ + local: + expect /run-(.*)/ capture done + guard (done == "done") + +test RunExcludeConfig2: + node n + local: + shell on n: + cp ${scripts.path}/erebos-tester-select2.yaml erebos-tester.yaml + cp ${scripts.path}/tags.et . + + spawn as p on n + with p: + send "load-config" + expect /load-config-done/ + send "run *" + expect /run-test-result T2 done/ + expect /run-test-result A2 done/ + expect /run-test-result B1 done/ + expect /run-test-result B2 done/ + local: + expect /run-(.*)/ capture done + guard (done == "done") diff --git a/test/script/shell.et b/test/script/shell.et new file mode 100644 index 0000000..00826c8 --- /dev/null +++ b/test/script/shell.et @@ -0,0 +1,100 @@ +asset scripts: + path: ../asset/shell + + +test ShellSpawn: + spawn as p + with p: + send "load ${scripts.path}/spawn.et" + local: + expect /(load-.*)/ capture done + guard (done == "load-done") + flush + + send "run *" + expect /run-test-result ShellTrue done/ + expect /child-fail sh failed at: .*: false/ + expect /child-fail sh exit code: 1/ + expect /run-test-result ShellFalse failed/ + expect /run-done/ + + +def expect_next_stdout from p (expected): + expect from p /child-stdout sh (.*)/ capture line + guard (line == expected) + +test ShellEcho: + spawn as p + with p: + send "load ${scripts.path}/echo.et" + local: + expect /(load-.*)/ capture done + guard (done == "load-done") + flush + + send "run *" + + expect_next_stdout from p: + "a b c" + "a b c" + "a b d" + "a b c d" + + "abcd xyz" + "aa bc d" + "b echo c" + + "a b" + "a b" + "\$space_str" + + "\$ \" \\" + "\"\"a" + "' \" \\\\\\ \\" + "a b c" + + "\" ' \\ \$ # | > < ; [ ] { } ( ) * ? ~ & !" + + with p: + expect /run-test-result Echo done/ + expect /run-done/ + + +test ShellPipe: + spawn as p + with p: + send "load ${scripts.path}/pipe.et" + local: + expect /(load-.*)/ capture done + guard (done == "load-done") + flush + + send "run *" + + expect_next_stdout from p: + "bc" + "b" + with p: + expect /run-test-result Pipe done/ + + expect_next_stdout from p: + "x" + "b" + "c" + "y" + "b" + "c" + "z" + with p: + expect /run-test-result Redirect done/ + + expect_next_stdout from p: + "c" + "e" + "g" + "bcdefg" + with p: + expect /run-test-result PipeRedirect done/ + + with p: + expect /run-done/ |