Below is the file 'tests/t_pivot_root.at' from this revision. You can also download the file.
AT_SETUP([pivot_root]) MONOTONE_SETUP # possible problems: # -- the new root doesn't exist # -- the new root is not a dir # -- the new root has an MT in it # -- the directory the old root is supposed to end up in doesn't exist # -- the directory the old root is supposed to end up in is not a directory # -- the directory the old root is supposed to end up in already # contains something with the given name # then make sure --execute puts things in the right place... AT_CHECK(mkdir workspace) AT_CHECK(cd workspace/ && MONOTONE setup . -b testbranch, [], [ignore], [ignore]) AT_CHECK(mkdir workspace/dir1) AT_CHECK(mkdir workspace/dir1/dir2) AT_DATA(workspace/dir1/file1, [blah blah ]) AT_CHECK(mkdir workspace/dir3) AT_CHECK(mkdir workspace/dir3/MT) AT_CHECK(cd workspace/ && MONOTONE add ., [], [ignore], [ignore]) AT_CHECK(cd workspace/ && MONOTONE commit -m foo, [], [ignore], [ignore]) AT_CHECK(cd workspace/ && MONOTONE pivot_root nosuchdir foo, [1], [ignore], [ignore]) AT_CHECK(cd workspace/ && MONOTONE pivot_root dir1/file1 foo, [1], [ignore], [ignore]) AT_CHECK(cd workspace/ && MONOTONE pivot_root dir3 old_root, [1], [ignore], [ignore]) AT_CHECK(cd workspace/ && MONOTONE pivot_root dir1 nosuchdir/old_root, [1], [ignore], [ignore]) AT_CHECK(cd workspace/ && MONOTONE pivot_root dir1 file1/old_root, [1], [ignore], [ignore]) AT_CHECK(cd workspace/ && MONOTONE pivot_root dir1 dir2, [1], [ignore], [ignore]) AT_CHECK(cd workspace/ && MONOTONE ls changed, [], [], []) AT_CHECK(cd workspace/ && MONOTONE ls missing, [], [], []) AT_CHECK(cd workspace/ && MONOTONE ls unknown, [], [], []) AT_CHECK(cd workspace/ && MONOTONE pivot_root --execute dir1 old_root, [], [ignore], [ignore]) AT_CHECK(test -d workspace/MT) AT_CHECK(test -d workspace/dir2) AT_CHECK(test -f workspace/file1) AT_CHECK(test -d workspace/old_root) AT_CHECK(test -d workspace/old_root/dir3) AT_CHECK(test -d workspace/old_root/dir3/MT) AT_CHECK(cd workspace/ && MONOTONE ls missing, [], [], []) AT_CHECK(cd workspace/ && MONOTONE ls unknown, [], [], []) AT_CHECK(cd workspace/ && MONOTONE commit -m foo, [], [ignore], [ignore]) AT_CLEANUP