update-index: add test for chmod flags
authorThomas Gummerer <t.gummerer@gmail.com>
Wed, 14 Sep 2016 21:07:45 +0000 (22:07 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 14 Sep 2016 22:03:49 +0000 (15:03 -0700)
Currently there is no test checking the expected behaviour when multiple
chmod flags with different arguments are passed. As argument handling
is not in line with other git commands it's easy to miss and
accidentally change the current behaviour.

While there, fix the argument type of chmod_path, which takes an int,
but had a char passed in.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/update-index.c
t/t2107-update-index-basic.sh
index b8b8522249337703eb66b245ad263e7dc1b41582..57bd5af1446e2b19e89a33649504406716672f67 100644 (file)
@@ -419,7 +419,7 @@ static int add_cacheinfo(unsigned int mode, const unsigned char *sha1,
        return 0;
 }
 
-static void chmod_path(int flip, const char *path)
+static void chmod_path(char flip, const char *path)
 {
        int pos;
        struct cache_entry *ce;
index dfe02f48183ad77a93d72c0f5e952380b63a9229..32ac6e09bdc81acfb8de5cf887302794d20c8ece 100755 (executable)
@@ -80,4 +80,17 @@ test_expect_success '.lock files cleaned up' '
        )
 '
 
+test_expect_success '--chmod=+x and chmod=-x in the same argument list' '
+       >A &&
+       >B &&
+       git add A B &&
+       git update-index --chmod=+x A --chmod=-x B &&
+       cat >expect <<-\EOF &&
+       100755 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0       A
+       100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0       B
+       EOF
+       git ls-files --stage A B >actual &&
+       test_cmp expect actual
+'
+
 test_done