# file : tests/name/extension.testscript # license : MIT; see accompanying LICENSE file .include ../common.testscript +cat <=build/root.build define txt: file txt{*}: extension = txt EOI : name : { test.arguments = --match-only update : unspecified : touch foo.txt; $* <>EOO ./: txt{foo} print $name(txt{foo}) print $extension(txt{foo}) print txt{fo?} EOI foo [null] txt{foo} EOO : specified : touch foo.text; $* <>EOO ./: txt{foo.text} print $name(txt{foo.text}) print $extension(txt{foo.text}) print txt{fo?.text} EOI foo text txt{foo.text} EOO : specified-triple : touch fo.o.text; $* <>EOO ./: txt{fo...o.text} print $name(txt{fo...o.text}) print $extension(txt{fo...o.text}) print txt{f?...o.text} EOI fo o.text txt{fo...o.text} EOO : multiple-triples : $* <'./: txt{f...o...o}' 2>>EOE != 0 :1:5: error: multiple triple dots in target name 'f...o...o' EOE : multiple-singles : touch fo.o.text; $* <>EOO ./: txt{fo.o.text} print $name(txt{fo.o.text}) print $extension(txt{fo.o.text}) print txt{f?.o.text} EOI fo.o text txt{fo.o.text} EOO : escape-basename : touch fo.o.text; $* <>EOO ./: txt{fo..o.text} print $name(txt{fo..o.text}) print $extension(txt{fo..o.text}) print txt{f?..o.text} EOI fo.o text txt{fo.o.text} EOO : escape-extension : touch fo.o.text; $* <>EOO ./: txt{fo.o..text} print $name(txt{fo.o..text}) print $extension(txt{fo.o..text}) print txt{f?.o..text} EOI fo o.text txt{fo...o.text} EOO : trailing : { : no-extension : touch foo; $* <>EOO ./: txt{foo.} print $name(txt{foo.}) print $extension(txt{foo.}) print txt{fo?.} EOI foo txt{foo.} EOO : dot-no-extension : touch f.oo; $* <>EOO ./: txt{f.oo.} print $name(txt{f.oo.}) print $extension(txt{f.oo.}) print txt{f.o?.} EOI f.oo EOO : default-extension : touch foo.testscript.txt; $* <>EOO ./: txt{foo.testscript...} print $name(txt{foo.testscript...}) print $extension(txt{foo.testscript...}) print txt{fo?.testscript...} EOI foo.testscript [null] txt{foo.testscript...} EOO # Trailing dots are not allowed on Windows. # : escape-one : if ($cxx.target.class != 'windows') { touch foo.; $* <>EOO ./: txt{foo..} print $name(txt{foo..}) print $extension(txt{foo..}) print txt{fo?..} EOI foo. txt{foo..} EOO } : escape-two : if ($cxx.target.class != 'windows') { touch foo..; $* <>EOO ./: txt{foo....} print $name(txt{foo....}) print $extension(txt{foo....}) print txt{fo?....} EOI foo.. txt{foo....} EOO } } : leading : { : single : touch .foo.txt; $* <>EOO ./: txt{.foo} print $name(txt{.foo}) print $extension(txt{.foo}) print txt{.fo?} EOI .foo [null] txt{.foo} EOO : triple : $* <'./: txt{...foo}' 2>>EOE != 0 :1:5: error: leading triple dots in target name '...foo' EOE : escape-one : touch .foo.txt; $* <>EOO ./: txt{..foo} print $name(txt{..foo}) print $extension(txt{..foo}) print txt{..fo?} EOI .foo [null] txt{.foo} EOO : escape-two : touch ..foo.txt; $* <>EOO ./: txt{....foo} print $name(txt{....foo}) print $extension(txt{....foo}) print txt{....fo?} EOI ..foo [null] txt{....foo} EOO } : specified-invalid : $* <'./: txt{fo.....o}' 2>>EOE != 0 :1:5: error: invalid dot sequence in target name 'fo.....o' EOE : specified-dot-only : $* <'./: txt{..}' 2>>EOE != 0 :1:5: error: invalid target name '..' EOE } : pattern : { : specified-none : touch foo; $* <'print txt{fo?.}' >'txt{foo.}' : specified-default : touch foo.testscript.txt; $* <'print txt{fo?.testscript...}' >'txt{foo.testscript...}' : dir : touch foo.txt; $* <'print txt{./f*}' >'txt{./foo}' : dir-leading-triple : $* <'print txt{./...f*}' 2>>EOE != 0 :1:11: error: leading triple dots in target name './...f*' EOE # Trailing dots are not allowed on Windows. # : specified-escape : if ($cxx.target.class != 'windows') { touch foo.; $* <'print txt{fo?..}' >'txt{foo..}' } }