# file : tests/builtin/mv.testscript # license : MIT; see accompanying LICENSE file test.arguments = "mv" test.options += -c : unknown-option : $* -u >'option -u' 2>"mv: unknown option '-u'" == 1 : args : { : none : $* 2>"mv: missing arguments" == 1 : no-source : $* a 2>"mv: missing source path" == 1 : no-trailing-sep : $* a b c 2>"mv: multiple source paths without trailing separator for destination directory" == 1 : empty : { : dest : $* '' 2>"mv: invalid path ''" == 1 : src1 : $* '' a 2>"mv: invalid path ''" == 1 : src2 : $* '' a b/ 2>"mv: invalid path ''" == 1 } } : synopsis-1 : : Move an entity to the specified path. : { : file : { : existing : { : to-non-existing : { touch a &!a; $* a b >>/~%EOO% &b; %move .+/a .+/b false true% %move .+/a .+/b false false% EOO test -f b && test -f a == 1 } : to-existing : { touch a b &!a; $* a b >>/~%EOO%; %move .+/a .+/b false true% %move .+/a .+/b false false% EOO test -f b && test -f a == 1 } : to-self : { touch a; $* a a >/~'%move .+/a .+/a false true%' 2>>/~%EOE% != 0 %mv: unable to move entry '.+/a' to itself% EOE } : to-dir : { touch a; mkdir b; $* a b >/~'%move .+/a .+/b false true%' 2>>/~%EOE% != 0 %mv: unable to move entry '.+/a' to '.+/b': .+% EOE } } } : dir : { : existing : { : to-non-existing : { mkdir a &!a/; $* a b &b/ >>/~%EOO%; %move .+/a .+/b false true% %move .+/a .+/b false false% EOO test -d b && test -d a == 1 } : to-non-empty : { mkdir a b; touch b/c; $* a b >/~'%move .+/a .+/b false true%' 2>>/~%EOE% != 0 %mv: unable to move entry '.+/a' to '.+/b': .+% EOE } : to-non-dir : { mkdir a; touch b; $* a b >/~'%move .+/a .+/b false true%' 2>>/~%EOE% != 0 %mv: unable to move entry '.+/a' to '.+/b': .+% EOE } } : overlap : { mkdir a; $* a a/b >/~'%move .+/a .+/a/b false true%' 2>>/~%EOE% != 0 %mv: unable to move entry '.+/a' to '.+/a/b': .+% EOE } } : non-existing : { $* a b >/~'%move .+/a .+/b false true%' 2>>/~%EOE% != 0 %mv: unable to move entry '.+/a' to '.+/b': .+% EOE } } : synopsis-2 : : Move entities into the specified directory. : { mkdir a c &!a/; touch a/b b &!a/b &!b; $* a b c/ >>/~%EOO% &c/a/ &c/a/b &c/b; %move .+/a .+/c/a false true% %move .+/a .+/c/a false false% %move .+/b .+/c/b false true% %move .+/b .+/c/b false false% EOO test -d c/a && test -f c/a/b && test -f c/b }