Imported Upstream version 2.5.1
[scm/test.git] / t / t-migrate-fixup.sh
1 #!/usr/bin/env bash
2
3 . "$(dirname "$0")/fixtures/migrate.sh"
4 . "$(dirname "$0")/testlib.sh"
5
6 begin_test "migrate import (--fixup)"
7 (
8   set -e
9
10   setup_single_local_branch_tracked_corrupt
11
12   txt_oid="$(calc_oid "$(git cat-file -p :a.txt)")"
13
14   git lfs migrate import --everything --fixup --yes
15
16   assert_pointer "refs/heads/master" "a.txt" "$txt_oid" "120"
17   assert_local_object "$txt_oid" "120"
18
19   master="$(git rev-parse refs/heads/master)"
20   master_attrs="$(git cat-file -p "$master:.gitattributes")"
21   echo "$master_attrs" | grep -q "*.txt filter=lfs diff=lfs merge=lfs"
22 )
23 end_test
24
25 begin_test "migrate import (--fixup, complex nested)"
26 (
27   set -e
28
29   setup_single_local_branch_complex_tracked
30
31   a_oid="$(calc_oid "$(git cat-file -p :a.txt)")"
32   b_oid="$(calc_oid "$(git cat-file -p :dir/b.txt)")"
33
34   git lfs migrate import --everything --fixup --yes
35
36   assert_pointer "refs/heads/master" "a.txt" "$a_oid" "1"
37   refute_pointer "refs/heads/master" "b.txt"
38
39   assert_local_object "$a_oid" "1"
40   refute_local_object "$b_oid" "1"
41
42   master="$(git rev-parse refs/heads/master)"
43   master_attrs="$(git cat-file -p "$master:.gitattributes")"
44   master_dir_attrs="$(git cat-file -p "$master:dir/.gitattributes")"
45   echo "$master_attrs" | grep -q "*.txt filter=lfs diff=lfs merge=lfs"
46   echo "$master_dir_attrs" | grep -q "*.txt !filter !diff !merge"
47 )
48 end_test
49
50 begin_test "migrate import (--fixup, --include)"
51 (
52   set -e
53
54   setup_single_local_branch_tracked_corrupt
55
56   git lfs migrate import --everything --fixup --yes --include="*.txt" 2>&1 \
57     | tee migrate.log
58
59   if [ "${PIPESTATUS[0]}" -eq 0 ]; then
60     echo >&2 "fatal: expected 'git lfs migrate ...' to fail, didn't ..."
61     exit 1
62   fi
63
64   grep -q "fatal: cannot use --fixup with --include, --exclude" migrate.log
65 )
66 end_test
67
68 begin_test "migrate import (--fixup, --exclude)"
69 (
70   set -e
71
72   setup_single_local_branch_tracked_corrupt
73
74   git lfs migrate import --everything --fixup --yes --exclude="*.txt" 2>&1 \
75     | tee migrate.log
76
77   if [ "${PIPESTATUS[0]}" -eq 0 ]; then
78     echo >&2 "fatal: expected 'git lfs migrate ...' to fail, didn't ..."
79     exit 1
80   fi
81
82   grep -q "fatal: cannot use --fixup with --include, --exclude" migrate.log
83 )
84 end_test
85
86 begin_test "migrate import (--fixup, --no-rewrite)"
87 (
88   set -e
89
90   setup_single_local_branch_tracked_corrupt
91
92   git lfs migrate import --everything --fixup --yes --no-rewrite 2>&1 \
93     | tee migrate.log
94
95   if [ "${PIPESTATUS[0]}" -eq 0 ]; then
96     echo >&2 "fatal: expected 'git lfs migrate ...' to fail, didn't ..."
97     exit 1
98   fi
99
100   grep -q "fatal: --no-rewrite and --fixup cannot be combined" migrate.log
101 )
102 end_test