$* <>EOO # id : foo cmd EOI : id:foo cmd EOO $* <>EOO # trail-id cmd : foo EOI : id:foo cmd EOO $* <>EOO # summary : foo bar cmd EOI : sm:foo bar cmd EOO $* <>EOO # trail-summary cmd: foo bar EOI : sm:foo bar cmd EOO $* <>EOO # id-summary : foo-bar : foo bar cmd EOI : id:foo-bar : sm:foo bar cmd EOO # Initially assumed summary. # $* <>EOO # details-summary : foo bar : bar baz cmd EOI : foo bar : bar baz cmd EOO # Initially assumed id and summary. # $* <>EOO # details-id-summary : foo-bar : bar baz : baz fox cmd EOI : foo-bar : bar baz : baz fox cmd EOO $* <>EOO # id-details : foo-bar : : foo bar : bar baz cmd EOI : id:foo-bar : : foo bar : bar baz cmd EOO $* <>EOO # summary-details : foo bar : : foo bar : bar baz cmd EOI : sm:foo bar : : foo bar : bar baz cmd EOO $* <>EOO # id-summary-details : foo-bar : foo bar : : foo bar : bar baz cmd EOI : id:foo-bar : sm:foo bar : : foo bar : bar baz cmd EOO $* <>EOO # blanks : : : foo bar : bar baz : : baz fox : : cmd EOI : foo bar : bar baz : : baz fox cmd EOO $* <>EOO # strip : foo-bar : bar baz : : baz fox : fox biz :biz buz : cmd EOI : id:foo-bar : sm:bar baz : : baz fox : fox biz : biz buz cmd EOO $* <>EOO # trail-compound cmd1; cmd2: foo EOI : id:foo cmd1 cmd2 EOO $* <>EOE != 0 # empty : : cmd EOI testscript:1:1: error: empty description EOE $* <>EOE != 0 # trail-empty cmd: EOI testscript:1:4: error: empty description EOE $* <>EOE != 0 # both : foo cmd : bar EOI testscript:2:1: error: both leading and trailing descriptions EOE # Legal places for a description. # $* <>EOO # legal-var : foo bar x = y; cmd $x EOI : sm:foo bar cmd y EOO # Illegal places for a description. # $* <": foo" 2>>EOE != 0 # illegal-eof testscript:2:1: error: description before EOE $* <>EOE != 0 # illegal-rcbrace { cmd : foo } EOI testscript:4:1: error: description before '}' EOE $* <>EOE != 0 # illegal-setup : foo +cmd EOI testscript:2:1: error: description before setup command EOE $* <>EOE != 0 # illegal-tdown : foo -cmd EOI testscript:2:1: error: description before teardown command EOE $* <>EOE != 0 # illegal-var : foo x = y EOI testscript:2:1: error: description before setup/teardown variable EOE $* <>EOE != 0 # illegal-var-if : foo if true x = y end EOI testscript:2:1: error: description before/after setup/teardown variable-if EOE $* <>EOE != 0 # illegal-var-if-after if true x = y end : foo EOI testscript:1:1: error: description before/after setup/teardown variable-if EOE $* <>EOE != 0 # illegal-test cmd1; : foo cmd2 EOI testscript:2:1: error: description inside test EOE # Id uniqueness. # $* <>EOE != 0 # id-dup-test-test : foo cmd : foo cmd EOI testscript:3:1: error: duplicate id foo testscript:1:1: info: previously used here EOE $* <>EOE != 0 # id-dup-test-group : foo cmd : foo { cmd cmd } EOI testscript:3:1: error: duplicate id foo testscript:1:1: info: previously used here EOE $* <>EOE != 0 # id-dup-group-test : foo { cmd cmd } : foo cmd EOI testscript:6:1: error: duplicate id foo testscript:1:1: info: previously used here EOE $* <>EOE != 0 # id-dup-group-group : foo { cmd cmd } : foo { cmd cmd } EOI testscript:6:1: error: duplicate id foo testscript:1:1: info: previously used here EOE $* <>EOE != 0 # id-dup-group-derived : 3 cmd { cmd cmd } EOI testscript:3:1: error: duplicate id 3 testscript:1:1: info: previously used here EOE $* <>EOE != 0 # id-dup-test-derived : 3 cmd cmd EOI testscript:3:1: error: duplicate id 3 testscript:1:1: info: previously used here EOE # Interaction with test scope merging. # : test-scope-both : : No merge since both have description. : $* -s -i <>EOO : foo { : bar cmd } EOI { : id:foo { # foo : id:bar { # foo/bar cmd } } } EOO : test-scope-test : : No merge since test has description. : $* -s -i <>EOO # { : foo-bar : foo bar cmd } EOI { { # 1 : id:foo-bar : sm:foo bar { # 1/foo-bar cmd } } } EOO $* -s -i <>EOO # test-scope-group : foo-bar : foo bar { cmd } EOI { : id:foo-bar : sm:foo bar { # foo-bar cmd } } EOO