#!/bin/sh # # Copyright (c) 2009 Junio C Hamano global test_description := ''git-apply notices removal patches generated by GNU diff'' source ./test-lib.sh test_expect_success setup ' cat <<-EOF >c && diff -ruN a/file b/file --- a/file TS0 +++ b/file TS1 @@ -0,0 +1 @@ +something EOF cat <<-EOF >d && diff -ruN a/file b/file --- a/file TS0 +++ b/file TS1 @@ -1 +0,0 @@ -something EOF timeWest="1982-09-16 07:00:00.000000000 -0800" && timeGMT="1982-09-16 15:00:00.000000000 +0000" && timeEast="1982-09-17 00:00:00.000000000 +0900" && epocWest="1969-12-31 16:00:00.000000000 -0800" && epocGMT="1970-01-01 00:00:00.000000000 +0000" && epocEast="1970-01-01 09:00:00.000000000 +0900" && epocWest2="1969-12-31 16:00:00 -08:00" && sed -e "s/TS0/$epocWest/" -e "s/TS1/$timeWest/" createWest.patch && sed -e "s/TS0/$epocEast/" -e "s/TS1/$timeEast/" createEast.patch && sed -e "s/TS0/$epocGMT/" -e "s/TS1/$timeGMT/" createGMT.patch && sed -e "s/TS0/$timeWest/" -e "s/TS1/$timeWest/" addWest.patch && sed -e "s/TS0/$timeEast/" -e "s/TS1/$timeEast/" addEast.patch && sed -e "s/TS0/$timeGMT/" -e "s/TS1/$timeGMT/" addGMT.patch && sed -e "s/TS0/$timeWest/" -e "s/TS1/$timeWest/" emptyWest.patch && sed -e "s/TS0/$timeEast/" -e "s/TS1/$timeEast/" emptyEast.patch && sed -e "s/TS0/$timeGMT/" -e "s/TS1/$timeGMT/" emptyGMT.patch && sed -e "s/TS0/$timeWest/" -e "s/TS1/$epocWest/" removeWest.patch && sed -e "s/TS0/$timeEast/" -e "s/TS1/$epocEast/" removeEast.patch && sed -e "s/TS0/$timeGMT/" -e "s/TS1/$epocGMT/" removeGMT.patch && sed -e "s/TS0/$timeWest/" -e "s/TS1/$epocWest2/" removeWest2.patch && echo something >something && >empty ' for patch in [*.patch] { test_expect_success "test $patch" ' rm -f file .git/index && case "$patch" in create*) # must be able to create git apply --index $patch && test_cmp file something && # must notice the file is already there >file && git add file && test_must_fail git apply $patch ;; add*) # must be able to create or patch git apply $patch && test_cmp file something && >file && git apply $patch && test_cmp file something ;; empty*) # must leave an empty file cat something >file && git add file && git apply --index $patch && test -f file && test_cmp empty file ;; remove*) # must remove the file cat something >file && git add file && git apply --index $patch && ! test -f file ;; esac ' } test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"git-apply notices removal patches generated by GNU diff">)} spids: [10] ) ] spids: [10] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <"\n"> <"\tcat <<-EOF >c &&\n"> <"\tdiff -ruN a/file b/file\n"> <"\t--- a/file\tTS0\n"> <"\t+++ b/file\tTS1\n"> <"\t@@ -0,0 +1 @@\n"> <"\t+something\n"> <"\tEOF\n"> <"\n"> <"\tcat <<-EOF >d &&\n"> <"\tdiff -ruN a/file b/file\n"> <"\t--- a/file\tTS0\n"> <"\t+++ b/file\tTS1\n"> <"\t@@ -1 +0,0 @@\n"> <"\t-something\n"> <"\tEOF\n"> <"\n"> <"\ttimeWest=\"1982-09-16 07:00:00.000000000 -0800\" &&\n"> <"\t timeGMT=\"1982-09-16 15:00:00.000000000 +0000\" &&\n"> <"\ttimeEast=\"1982-09-17 00:00:00.000000000 +0900\" &&\n"> <"\n"> <"\tepocWest=\"1969-12-31 16:00:00.000000000 -0800\" &&\n"> <"\t epocGMT=\"1970-01-01 00:00:00.000000000 +0000\" &&\n"> <"\tepocEast=\"1970-01-01 09:00:00.000000000 +0900\" &&\n"> <"\tepocWest2=\"1969-12-31 16:00:00 -08:00\" &&\n"> <"\n"> <"\tsed -e \"s/TS0/$epocWest/\" -e \"s/TS1/$timeWest/\" createWest.patch &&\n"> <"\tsed -e \"s/TS0/$epocEast/\" -e \"s/TS1/$timeEast/\" createEast.patch &&\n"> <"\tsed -e \"s/TS0/$epocGMT/\" -e \"s/TS1/$timeGMT/\" createGMT.patch &&\n"> <"\n"> <"\tsed -e \"s/TS0/$timeWest/\" -e \"s/TS1/$timeWest/\" addWest.patch &&\n"> <"\tsed -e \"s/TS0/$timeEast/\" -e \"s/TS1/$timeEast/\" addEast.patch &&\n"> <"\tsed -e \"s/TS0/$timeGMT/\" -e \"s/TS1/$timeGMT/\" addGMT.patch &&\n"> <"\n"> <"\tsed -e \"s/TS0/$timeWest/\" -e \"s/TS1/$timeWest/\" emptyWest.patch &&\n"> <"\tsed -e \"s/TS0/$timeEast/\" -e \"s/TS1/$timeEast/\" emptyEast.patch &&\n"> <"\tsed -e \"s/TS0/$timeGMT/\" -e \"s/TS1/$timeGMT/\" emptyGMT.patch &&\n"> <"\n"> <"\tsed -e \"s/TS0/$timeWest/\" -e \"s/TS1/$epocWest/\" removeWest.patch &&\n"> <"\tsed -e \"s/TS0/$timeEast/\" -e \"s/TS1/$epocEast/\" removeEast.patch &&\n"> <"\tsed -e \"s/TS0/$timeGMT/\" -e \"s/TS1/$epocGMT/\" removeGMT.patch &&\n"> <"\tsed -e \"s/TS0/$timeWest/\" -e \"s/TS1/$epocWest2/\" removeWest2.patch &&\n"> <"\n"> <"\techo something >something &&\n"> <"\t>empty\n"> ) } ) (ForEach iter_name: patch iter_words: [{(Lit_Other "*") (.patch)}] do_arg_iter: False body: (DoGroup children: [ (C {(test_expect_success)} {(DQ ("test ") ($ VSub_Name "$patch"))} { (SQ <"\n"> <"\t\trm -f file .git/index &&\n"> <"\t\tcase \"$patch\" in\n"> <"\t\tcreate*)\n"> <"\t\t\t# must be able to create\n"> <"\t\t\tgit apply --index $patch &&\n"> <"\t\t\ttest_cmp file something &&\n"> <"\t\t\t# must notice the file is already there\n"> <"\t\t\t>file &&\n"> <"\t\t\tgit add file &&\n"> <"\t\t\ttest_must_fail git apply $patch\n"> <"\t\t\t;;\n"> <"\t\tadd*)\n"> <"\t\t\t# must be able to create or patch\n"> <"\t\t\tgit apply $patch &&\n"> <"\t\t\ttest_cmp file something &&\n"> <"\t\t\t>file &&\n"> <"\t\t\tgit apply $patch &&\n"> <"\t\t\ttest_cmp file something\n"> <"\t\t\t;;\n"> <"\t\tempty*)\n"> <"\t\t\t# must leave an empty file\n"> <"\t\t\tcat something >file &&\n"> <"\t\t\tgit add file &&\n"> <"\t\t\tgit apply --index $patch &&\n"> <"\t\t\ttest -f file &&\n"> <"\t\t\ttest_cmp empty file\n"> <"\t\t\t;;\n"> <"\t\tremove*)\n"> <"\t\t\t# must remove the file\n"> <"\t\t\tcat something >file &&\n"> <"\t\t\tgit add file &&\n"> <"\t\t\tgit apply --index $patch &&\n"> <"\t\t\t! test -f file\n"> <"\t\t\t;;\n"> <"\t\tesac\n"> <"\t"> ) } ) ] spids: [83 133] ) spids: [79 -1] ) (C {(test_done)}) ] )