# file : tests/test/script/builtin/mv.test # copyright : Copyright (c) 2014-2018 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file .include ../common.test : args : { : none : $c <'mv 2>"mv: missing arguments" == 1' && $b : no-source : $c <'mv a 2>"mv: missing source path" == 1' && $b : no-trailing-sep : $c <"mv: multiple source paths without trailing separator for destination directory" == 1 EOI : empty : { : dest : $c <"mv: invalid path ''" == 1 EOI : src1 : $c <"mv: invalid path ''" == 1 EOI : src2 : $c <"mv: invalid path ''" == 1 EOI } } : synopsis-1 : : Move an entity to the specified path. : { : file : { : existing : { : to-non-existing : $c <>/~%EOE% != 0 %mv: unable to move entity '.+/a' to itself% EOE EOI : to-dir : $c <>/~%EOE% != 0 %mv: unable to move entity '.+/a' to '.+/b': .+% EOE EOI } : outside-scope : : Need to use a path that unlikely exists (not to remove something useful). : { : fail : : Moving path outside the testscript working directory fails. : $c <>/~%EOE% == 1 %mv: '.+/fail/a/b/c' is out of working directory '.+/fail/test'% EOE EOI : force : : Moving path outside the testscript working directory is allowed with -f : option. We fail after this check succeeds as the source path does not : exist. : $c <>/~%EOE% == 1 %mv: unable to move entity '.+/force/a/b/c' to '.+/c': .+% EOE EOI } : cleanup : { : existing : : Test that moving over an existing file does not move the cleanup. If : it does, then the file would be removed while leaving the embedded : scope, and so the cleanup registered by the outer touch would fail. We : also test that the source path cleanup is removed, otherwise it would : fail. : $c <>/~%EOE% != 0 %mv: unable to move entity '.+/a' to '.+/b': .+% EOE EOI : to-non-dir : $c <>/~%EOE% != 0 %mv: unable to move entity '.+/a' to '.+/b': .+% EOE EOI } : working-dir : { : src : { $c <"mv: '([string] $~)' contains test working directory '$~'" != 0 EOI } : dst : { $c <"mv: '$~' contains test working directory '$~'" != 0 EOI } } : overlap : $c <>/~%EOE% != 0 %mv: unable to move entity '.+/a' to '.+/a/b': .+% EOE EOI : cleanup : { : sub-entry : { mkdir a; touch a/b; mv a c } : reorder : : Test that a/, that is created before b/ and so should be removed after : it, get removed before b/ after being renamed to b/c. : $c <>/~%EOE% != 0 %mv: unable to move entity '.+/a' to '.+/b': .+% EOE EOI } } : synopsis-2 : : Move entities into the specified directory. : { $c <