$* <<EOI >>EOO # id : foo cmd EOI : id:foo cmd EOO $* <<EOI >>EOO # trail-id cmd : foo EOI : id:foo cmd EOO $* <<EOI >>EOO # summary : foo bar cmd EOI : sm:foo bar cmd EOO $* <<EOI >>EOO # trail-summary cmd: foo bar EOI : sm:foo bar cmd EOO $* <<EOI >>EOO # id-summary : foo-bar : foo bar cmd EOI : id:foo-bar : sm:foo bar cmd EOO # Initially assumed summary. # $* <<EOI >>EOO # details-summary : foo bar : bar baz cmd EOI : foo bar : bar baz cmd EOO # Initially assumed id and summary. # $* <<EOI >>EOO # details-id-summary : foo-bar : bar baz : baz fox cmd EOI : foo-bar : bar baz : baz fox cmd EOO $* <<EOI >>EOO # id-details : foo-bar : : foo bar : bar baz cmd EOI : id:foo-bar : : foo bar : bar baz cmd EOO $* <<EOI >>EOO # summary-details : foo bar : : foo bar : bar baz cmd EOI : sm:foo bar : : foo bar : bar baz cmd EOO $* <<EOI >>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 $* <<EOI >>EOO # blanks : : : foo bar : bar baz : : baz fox : : cmd EOI : foo bar : bar baz : : baz fox cmd EOO $* <<EOI >>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 $* <<EOI >>EOO # trail-compound cmd1; cmd2: foo EOI : id:foo cmd1 cmd2 EOO $* <<EOI 2>>EOE != 0 # empty : : cmd EOI testscript:1:1: error: empty description EOE $* <<EOI 2>>EOE != 0 # trail-empty cmd: EOI testscript:1:4: error: empty description EOE $* <<EOI 2>>EOE != 0 # both : foo cmd : bar EOI testscript:2:1: error: both leading and trailing descriptions EOE # Legal places for a description. # $* <<EOI >>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 <end of file> EOE $* <<EOI 2>>EOE != 0 # illegal-rcbrace { cmd : foo } EOI testscript:4:1: error: description before '}' EOE $* <<EOI 2>>EOE != 0 # illegal-setup : foo +cmd EOI testscript:2:1: error: description before setup command EOE $* <<EOI 2>>EOE != 0 # illegal-tdown : foo -cmd EOI testscript:2:1: error: description before teardown command EOE $* <<EOI 2>>EOE != 0 # illegal-var : foo x = y EOI testscript:2:1: error: description before setup/teardown variable EOE $* <<EOI 2>>EOE != 0 # illegal-test cmd1; : foo cmd2 EOI testscript:2:1: error: description inside test EOE # Id uniqueness. # $* <<EOI 2>>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 $* <<EOI 2>>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 $* <<EOI 2>>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 $* <<EOI 2>>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 $* <<EOI 2>>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 $* <<EOI 2>>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 <<EOI >>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 <<EOI >>EOO # { : foo-bar : foo bar cmd } EOI { { # 1 : id:foo-bar : sm:foo bar { # 1/foo-bar cmd } } } EOO $* -s -i <<EOI >>EOO # test-scope-group : foo-bar : foo bar { cmd } EOI { : id:foo-bar : sm:foo bar { # foo-bar cmd } } EOO