From c84feb364b20e2c2c4cab333aca27775891cd508 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Thu, 1 May 2014 02:07:52 -0500 Subject: [PATCH] test: dd file operation tests Inspired by gitifyhg. Signed-off-by: Felipe Contreras --- test/main.t | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/test/main.t b/test/main.t index 1628321..76435d7 100755 --- a/test/main.t +++ b/test/main.t @@ -53,6 +53,17 @@ check_bookmark () { fi } +check_files () { + git --git-dir=$1/.git ls-files > actual && + if test $# -gt 1 + then + printf "%s\n" "$2" > expected + else + > expected + fi && + test_cmp expected actual +} + check_push () { expected_ret=$1 ret=0 ref_ret=0 @@ -948,4 +959,69 @@ test_expect_success 'push tag different branch' ' test_cmp expected actual ' +test_expect_success 'cloning a removed file works' ' + test_when_finished "rm -rf hgrepo gitrepo" && + + ( + hg init hgrepo && + cd hgrepo && + + echo test > test_file && + hg add test_file && + hg commit -m add && + + hg rm test_file && + hg commit -m remove + ) && + + git clone "hg::hgrepo" gitrepo && + check_files gitrepo +' + +test_expect_success 'cloning a file replaced with a directory' ' + test_when_finished "rm -rf hgrepo gitrepo" && + + ( + hg init hgrepo && + cd hgrepo && + + echo test > dir_or_file && + hg add dir_or_file && + hg commit -m add && + + hg rm dir_or_file && + mkdir dir_or_file && + echo test > dir_or_file/test_file && + hg add dir_or_file/test_file && + hg commit -m replase + ) && + + git clone "hg::hgrepo" gitrepo && + check_files gitrepo "dir_or_file/test_file" +' + +test_expect_success 'clone replace directory with a file' ' + test_when_finished "rm -rf hgrepo gitrepo" && + + ( + hg init hgrepo && + cd hgrepo && + + mkdir dir_or_file && + echo test > dir_or_file/test_file && + hg add dir_or_file/test_file && + hg commit -m add && + + hg rm dir_or_file/test_file && + echo test > dir_or_file && + hg add dir_or_file && + hg commit -m add && + + hg rm dir_or_file + ) && + + git clone "hg::hgrepo" gitrepo && + check_files gitrepo "dir_or_file" +' + test_done