gistore 1.0.0.rc4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG +30 -0
- data/COPYING +340 -0
- data/README.md +98 -0
- data/exe/gistore +15 -0
- data/lib/gistore.rb +20 -0
- data/lib/gistore/cmd/add.rb +15 -0
- data/lib/gistore/cmd/checkout.rb +49 -0
- data/lib/gistore/cmd/commit.rb +171 -0
- data/lib/gistore/cmd/config.rb +23 -0
- data/lib/gistore/cmd/export-to-backups.rb +79 -0
- data/lib/gistore/cmd/gc.rb +15 -0
- data/lib/gistore/cmd/git-version.rb +14 -0
- data/lib/gistore/cmd/init.rb +36 -0
- data/lib/gistore/cmd/restore-from-backups.rb +91 -0
- data/lib/gistore/cmd/rm.rb +15 -0
- data/lib/gistore/cmd/safe-commands.rb +53 -0
- data/lib/gistore/cmd/status.rb +40 -0
- data/lib/gistore/cmd/task.rb +85 -0
- data/lib/gistore/cmd/version.rb +27 -0
- data/lib/gistore/config.rb +13 -0
- data/lib/gistore/config/gistore.yml +1 -0
- data/lib/gistore/error.rb +6 -0
- data/lib/gistore/repo.rb +683 -0
- data/lib/gistore/runner.rb +43 -0
- data/lib/gistore/templates/description +1 -0
- data/lib/gistore/templates/hooks/applypatch-msg.sample +15 -0
- data/lib/gistore/templates/hooks/commit-msg.sample +24 -0
- data/lib/gistore/templates/hooks/post-update.sample +8 -0
- data/lib/gistore/templates/hooks/pre-applypatch.sample +14 -0
- data/lib/gistore/templates/hooks/pre-commit.sample +49 -0
- data/lib/gistore/templates/hooks/pre-push.sample +54 -0
- data/lib/gistore/templates/hooks/pre-rebase.sample +169 -0
- data/lib/gistore/templates/hooks/prepare-commit-msg.sample +36 -0
- data/lib/gistore/templates/hooks/update.sample +128 -0
- data/lib/gistore/templates/info/exclude +6 -0
- data/lib/gistore/utils.rb +382 -0
- data/lib/gistore/version.rb +4 -0
- data/t/Makefile +80 -0
- data/t/README +745 -0
- data/t/aggregate-results.sh +46 -0
- data/t/lib-worktree.sh +76 -0
- data/t/t0000-init.sh +75 -0
- data/t/t0010-config.sh +75 -0
- data/t/t0020-version.sh +32 -0
- data/t/t1000-add-remove.sh +89 -0
- data/t/t1010-status.sh +87 -0
- data/t/t1020-commit.sh +134 -0
- data/t/t1030-commit-and-rotate.sh +266 -0
- data/t/t2000-task-and-commit-all.sh +132 -0
- data/t/t3000-checkout.sh +115 -0
- data/t/t3010-export-and-restore.sh +141 -0
- data/t/test-binary-1.png +0 -0
- data/t/test-binary-2.png +0 -0
- data/t/test-lib-functions.sh +722 -0
- data/t/test-lib.sh +684 -0
- metadata +161 -0
@@ -0,0 +1,46 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
failed_tests=
|
4
|
+
fixed=0
|
5
|
+
success=0
|
6
|
+
failed=0
|
7
|
+
broken=0
|
8
|
+
total=0
|
9
|
+
|
10
|
+
while read file
|
11
|
+
do
|
12
|
+
while read type value
|
13
|
+
do
|
14
|
+
case $type in
|
15
|
+
'')
|
16
|
+
continue ;;
|
17
|
+
fixed)
|
18
|
+
fixed=$(($fixed + $value)) ;;
|
19
|
+
success)
|
20
|
+
success=$(($success + $value)) ;;
|
21
|
+
failed)
|
22
|
+
failed=$(($failed + $value))
|
23
|
+
if test $value != 0
|
24
|
+
then
|
25
|
+
testnum=$(expr "$file" : 'test-results/\(t[0-9]*\)-')
|
26
|
+
failed_tests="$failed_tests $testnum"
|
27
|
+
fi
|
28
|
+
;;
|
29
|
+
broken)
|
30
|
+
broken=$(($broken + $value)) ;;
|
31
|
+
total)
|
32
|
+
total=$(($total + $value)) ;;
|
33
|
+
esac
|
34
|
+
done <"$file"
|
35
|
+
done
|
36
|
+
|
37
|
+
if test -n "$failed_tests"
|
38
|
+
then
|
39
|
+
printf "\nfailed test(s):$failed_tests\n\n"
|
40
|
+
fi
|
41
|
+
|
42
|
+
printf "%-8s%d\n" fixed $fixed
|
43
|
+
printf "%-8s%d\n" success $success
|
44
|
+
printf "%-8s%d\n" failed $failed
|
45
|
+
printf "%-8s%d\n" broken $broken
|
46
|
+
printf "%-8s%d\n" total $total
|
data/t/lib-worktree.sh
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jiang Xin
|
4
|
+
#
|
5
|
+
|
6
|
+
prepare_work_tree()
|
7
|
+
{
|
8
|
+
mkdir -p root/src/lib/a
|
9
|
+
mkdir -p root/src/lib/b
|
10
|
+
mkdir -p root/src/lib/empty
|
11
|
+
mkdir -p root/src/images
|
12
|
+
mkdir -p root/doc/
|
13
|
+
echo "readme" > root/src/README.txt
|
14
|
+
echo "foo" > root/src/lib/a/foo.c
|
15
|
+
echo "bar" > root/src/lib/b/bar.o
|
16
|
+
echo "baz" > root/src/lib/b/baz.a
|
17
|
+
cp ${TEST_DIRECTORY}/test-binary-1.png root/src/images
|
18
|
+
cp ${TEST_DIRECTORY}/test-binary-2.png root/src/images
|
19
|
+
echo "copyright" > root/doc/COPYRIGHT
|
20
|
+
touch root/.hidden
|
21
|
+
|
22
|
+
mkdir -p root/mod1/
|
23
|
+
(
|
24
|
+
cd root/mod1
|
25
|
+
echo "readme" > README.txt
|
26
|
+
mkdir lib
|
27
|
+
cd lib
|
28
|
+
git init
|
29
|
+
mkdir src doc
|
30
|
+
echo "foo" > src/foo.c
|
31
|
+
echo "bar" > doc/bar.txt
|
32
|
+
git add -A .
|
33
|
+
git commit -m 'initial submodule mod1'
|
34
|
+
)
|
35
|
+
mkdir -p root/mod2/
|
36
|
+
(
|
37
|
+
cd root/mod2
|
38
|
+
git init
|
39
|
+
echo "readme" > README.txt
|
40
|
+
mkdir src doc
|
41
|
+
echo "foo" > src/foo.c
|
42
|
+
echo "bar" > doc/bar.txt
|
43
|
+
git add -A .
|
44
|
+
git commit -m 'initial submodule mod2'
|
45
|
+
mkdir lib
|
46
|
+
cd lib
|
47
|
+
git init
|
48
|
+
echo "hello" > hello.txt
|
49
|
+
git add -A .
|
50
|
+
git commit -m 'initial lib under mod2'
|
51
|
+
)
|
52
|
+
}
|
53
|
+
|
54
|
+
count_git_commits()
|
55
|
+
{
|
56
|
+
repo=$1
|
57
|
+
git --git-dir "$repo" rev-list HEAD 2>/dev/null | wc -l | sed -e 's/ //g'
|
58
|
+
}
|
59
|
+
|
60
|
+
count_git_objects()
|
61
|
+
{
|
62
|
+
repo=$1
|
63
|
+
num=0
|
64
|
+
git --git-dir "$repo" count-objects -v | sort | \
|
65
|
+
while read line; do
|
66
|
+
case $line in
|
67
|
+
count:*)
|
68
|
+
num=$((num + ${line#count:}))
|
69
|
+
;;
|
70
|
+
in-pack:*)
|
71
|
+
num=$((num + ${line#in-pack:}))
|
72
|
+
echo $num
|
73
|
+
;;
|
74
|
+
esac
|
75
|
+
done
|
76
|
+
}
|
data/t/t0000-init.sh
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jiang Xin
|
4
|
+
#
|
5
|
+
|
6
|
+
test_description='Test gistore init'
|
7
|
+
|
8
|
+
TEST_NO_CREATE_REPO=NoThanks
|
9
|
+
. ./test-lib.sh
|
10
|
+
|
11
|
+
test_expect_success 'init with default normal plan' '
|
12
|
+
(
|
13
|
+
mkdir default &&
|
14
|
+
cd default &&
|
15
|
+
gistore init &&
|
16
|
+
test "$(gistore config plan)" = "normal"
|
17
|
+
)
|
18
|
+
'
|
19
|
+
|
20
|
+
cat >expect <<EOF
|
21
|
+
Repository format 1
|
22
|
+
EOF
|
23
|
+
|
24
|
+
test_expect_success 'check repo format version' '
|
25
|
+
gistore --version --repo default | tail -1 > actual &&
|
26
|
+
test_cmp expect actual
|
27
|
+
'
|
28
|
+
|
29
|
+
cat >expect <<EOF
|
30
|
+
Error: Non-empty directory 'default' is already exist.
|
31
|
+
EOF
|
32
|
+
|
33
|
+
test_expect_success 'can not init on a no-empty directory' '
|
34
|
+
test_must_fail gistore init --repo default &&
|
35
|
+
(gistore init --repo default 2>actual || true ) &&
|
36
|
+
test_cmp expect actual
|
37
|
+
'
|
38
|
+
|
39
|
+
test_expect_success 'check default gistore/git configurations' '
|
40
|
+
(
|
41
|
+
cd default &&
|
42
|
+
test "$(gistore config full_backup_number)" = "12" &&
|
43
|
+
test "$(gistore config increment_backup_number)" = "30" &&
|
44
|
+
test -z "$(gistore config gc.auto)" &&
|
45
|
+
test -z "$(gistore config core.compression)" &&
|
46
|
+
test -z "$(gistore config core.loosecompression)" &&
|
47
|
+
test "$(gistore config --bool core.quotepath)" = "false" &&
|
48
|
+
test "$(gistore config --bool core.autocrlf)" = "false" &&
|
49
|
+
test "$(gistore config --bool core.logAllRefUpdates)" = "true" &&
|
50
|
+
test "$(gistore config core.sharedRepository)" = "group" &&
|
51
|
+
test "$(gistore config core.bigFileThreshold)" = "2m"
|
52
|
+
)
|
53
|
+
'
|
54
|
+
|
55
|
+
test_expect_success 'init with --no-compress plan' '
|
56
|
+
(
|
57
|
+
gistore init --repo notz --plan no-compress &&
|
58
|
+
test "$(gistore config --repo notz plan)" = "no-compress" &&
|
59
|
+
test -z "$(gistore config --repo notz gc.auto)" &&
|
60
|
+
test "$(gistore config --repo notz core.compression)" = "0" &&
|
61
|
+
test "$(gistore config --repo notz core.loosecompression)" = "0"
|
62
|
+
)
|
63
|
+
'
|
64
|
+
|
65
|
+
test_expect_success 'init with --no-gc plan' '
|
66
|
+
(
|
67
|
+
gistore init --repo notgc --plan no-gc &&
|
68
|
+
test "$(gistore config --repo notgc plan)" = "no-gc" &&
|
69
|
+
test "$(gistore config --repo notgc gc.auto)" = "0" &&
|
70
|
+
test "$(gistore config --repo notgc core.compression)" = "0" &&
|
71
|
+
test "$(gistore config --repo notgc core.loosecompression)" = "0"
|
72
|
+
)
|
73
|
+
'
|
74
|
+
|
75
|
+
test_done
|
data/t/t0010-config.sh
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jiang Xin
|
4
|
+
#
|
5
|
+
|
6
|
+
test_description='Test gistore config'
|
7
|
+
|
8
|
+
TEST_NO_CREATE_REPO=
|
9
|
+
. ./test-lib.sh
|
10
|
+
|
11
|
+
test_expect_success 'default is normal plan' '
|
12
|
+
test "$(gistore config plan)" = "normal"
|
13
|
+
'
|
14
|
+
|
15
|
+
test_expect_success 'check default gistore configurations' '
|
16
|
+
test "$(gistore config full_backup_number)" = "12" &&
|
17
|
+
test "$(gistore config increment_backup_number)" = "30" &&
|
18
|
+
test -z "$(gistore config gc.auto)" &&
|
19
|
+
test -z "$(gistore config core.compression)" &&
|
20
|
+
test -z "$(gistore config core.loosecompression)" &&
|
21
|
+
test "$(gistore config --bool core.quotepath)" = "false" &&
|
22
|
+
test "$(gistore config --bool core.autocrlf)" = "false" &&
|
23
|
+
test "$(gistore config --bool core.logAllRefUpdates)" = "true" &&
|
24
|
+
test "$(gistore config core.sharedRepository)" = "group" &&
|
25
|
+
test "$(gistore config core.bigFileThreshold)" = "2m"
|
26
|
+
'
|
27
|
+
|
28
|
+
test_expect_success 'change plan from normal to no-gc' '
|
29
|
+
test "$(gistore config plan)" = "normal" &&
|
30
|
+
gistore config --plan no-gc &&
|
31
|
+
test "$(gistore config plan)" = "no-gc" &&
|
32
|
+
test "$(gistore config gc.auto)" = "0" &&
|
33
|
+
test "$(gistore config core.compression)" = "0" &&
|
34
|
+
test "$(gistore config core.loosecompression)" = "0"
|
35
|
+
'
|
36
|
+
|
37
|
+
test_expect_success 'change plan from no-gc to no-compress' '
|
38
|
+
test "$(gistore config plan)" = "no-gc" &&
|
39
|
+
gistore config --plan no-compress &&
|
40
|
+
test "$(gistore config plan)" = "no-compress" &&
|
41
|
+
test -z "$(gistore config gc.auto)" &&
|
42
|
+
test "$(gistore config core.compression)" = "0" &&
|
43
|
+
test "$(gistore config core.loosecompression)" = "0"
|
44
|
+
'
|
45
|
+
|
46
|
+
test_expect_success 'change plan without --plan option' '
|
47
|
+
test "$(gistore config plan)" = "no-compress" &&
|
48
|
+
gistore config plan no-gc &&
|
49
|
+
gistore config plan normal &&
|
50
|
+
test "$(gistore config plan)" = "normal" &&
|
51
|
+
test -z "$(gistore config gc.auto)" &&
|
52
|
+
test -z "$(gistore config core.compression)" &&
|
53
|
+
test -z "$(gistore config core.loosecompression)"
|
54
|
+
'
|
55
|
+
|
56
|
+
test_expect_success 'read/write gistore configurations' '
|
57
|
+
test "$(gistore config full_backup_number)" = "12" &&
|
58
|
+
test "$(gistore config increment_backup_number)" = "30" &&
|
59
|
+
gistore config full_backup_number 5 &&
|
60
|
+
gistore config increment_backup_number 9 &&
|
61
|
+
test "$(gistore config full_backup_number)" = "5" &&
|
62
|
+
test "$(gistore config increment_backup_number)" = "9" &&
|
63
|
+
test_must_fail gistore config non_exist_config value &&
|
64
|
+
test_must_fail gistore config --unset non.exist.config
|
65
|
+
'
|
66
|
+
|
67
|
+
test_expect_success 'read/write git configurations' '
|
68
|
+
gistore config x.y.z foobar &&
|
69
|
+
test "$(gistore config x.y.z)" = "foobar" &&
|
70
|
+
test "$(git config x.y.z)" = "foobar" &&
|
71
|
+
git config x.y.z baz &&
|
72
|
+
test "$(gistore config x.y.z)" = "baz"
|
73
|
+
'
|
74
|
+
|
75
|
+
test_done
|
data/t/t0020-version.sh
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jiang Xin
|
4
|
+
#
|
5
|
+
|
6
|
+
test_description='Test git version compare'
|
7
|
+
|
8
|
+
TEST_NO_CREATE_REPO=NoThanks
|
9
|
+
. ./test-lib.sh
|
10
|
+
|
11
|
+
test_expect_success 'gistore version' '
|
12
|
+
gistore --version | grep -q "Gistore version [0-9]\+" &&
|
13
|
+
test "$(gistore -v)" = "$(gistore --version)" &&
|
14
|
+
test "$(gistore version)" = "$(gistore --version)"
|
15
|
+
'
|
16
|
+
|
17
|
+
test_expect_success 'compare two versions' '
|
18
|
+
test $(gistore check-git-version 1.8.5 1.8.5) -eq 0 &&
|
19
|
+
test $(gistore check-git-version 1.8.4 1.8.4.1) -eq -1 &&
|
20
|
+
test $(gistore check-git-version 1.7.5 1.7.11) -eq -1 &&
|
21
|
+
test $(gistore check-git-version 1.7.11 1.7.5) -eq 1 &&
|
22
|
+
test $(gistore check-git-version 1.7.11 1.7.5) -eq 1 &&
|
23
|
+
test $(gistore check-git-version 1.7.11 2.0) -eq -1 &&
|
24
|
+
test $(gistore check-git-version 2.0 1.8.5) -eq 1
|
25
|
+
'
|
26
|
+
|
27
|
+
test_expect_success 'compare with current version' '
|
28
|
+
test $(gistore check-git-version 0.99.1) -eq 1 &&
|
29
|
+
test $(gistore check-git-version 0.99.1.2) -eq 1
|
30
|
+
'
|
31
|
+
|
32
|
+
test_done
|
@@ -0,0 +1,89 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jiang Xin
|
4
|
+
#
|
5
|
+
|
6
|
+
test_description='Test gistore add and rm'
|
7
|
+
|
8
|
+
TEST_NO_CREATE_REPO=NoThanks
|
9
|
+
. ./lib-worktree.sh
|
10
|
+
. ./test-lib.sh
|
11
|
+
|
12
|
+
cwd=$(pwd -P)
|
13
|
+
|
14
|
+
cat >expect << EOF
|
15
|
+
$cwd/root/doc
|
16
|
+
$cwd/root/src
|
17
|
+
EOF
|
18
|
+
|
19
|
+
test_expect_success 'repo initial with blank backup list' '
|
20
|
+
gistore init --repo repo.git &&
|
21
|
+
gistore status --repo repo.git --backup | sed -e /^$/d | > actual &&
|
22
|
+
test ! -s actual
|
23
|
+
'
|
24
|
+
|
25
|
+
test_expect_success 'add root/src and root/doc' '
|
26
|
+
gistore add --repo repo.git root/src &&
|
27
|
+
gistore add --repo repo.git root/doc &&
|
28
|
+
gistore status --repo repo.git --backup >actual &&
|
29
|
+
test_cmp expect actual
|
30
|
+
'
|
31
|
+
|
32
|
+
cat >expect << EOF
|
33
|
+
$cwd/root/src
|
34
|
+
EOF
|
35
|
+
|
36
|
+
test_expect_success 'remove root/doc' '
|
37
|
+
(
|
38
|
+
cd repo.git &&
|
39
|
+
gistore rm ../root/doc &&
|
40
|
+
gistore status --backup >../actual
|
41
|
+
) && test_cmp expect actual
|
42
|
+
'
|
43
|
+
|
44
|
+
cat >expect << EOF
|
45
|
+
$cwd/root
|
46
|
+
EOF
|
47
|
+
|
48
|
+
test_expect_success 'root override root/src and root/doc' '
|
49
|
+
gistore add --repo repo.git root/src &&
|
50
|
+
gistore add --repo repo.git root &&
|
51
|
+
gistore add --repo repo.git root/doc &&
|
52
|
+
gistore status --repo repo.git --backup > actual &&
|
53
|
+
test_cmp expect actual
|
54
|
+
'
|
55
|
+
|
56
|
+
test_expect_success 'not add parent of repo' '
|
57
|
+
gistore add --repo repo.git .. &&
|
58
|
+
gistore add --repo repo.git . &&
|
59
|
+
gistore status --repo repo.git --backup > actual &&
|
60
|
+
test_cmp expect actual
|
61
|
+
'
|
62
|
+
|
63
|
+
test_expect_success 'not add subdir of repo' '
|
64
|
+
gistore add --repo repo.git repo.git &&
|
65
|
+
gistore add --repo repo.git repo.git/objects &&
|
66
|
+
gistore add --repo repo.git repo.git/refs &&
|
67
|
+
gistore status --repo repo.git --backup > actual &&
|
68
|
+
test_cmp expect actual
|
69
|
+
'
|
70
|
+
|
71
|
+
cat >expect <<EOF
|
72
|
+
Error: Can not find repo at "non-exist-repo.git"
|
73
|
+
EOF
|
74
|
+
|
75
|
+
test_expect_success 'fail to add/remove on non-exist repo' '
|
76
|
+
test_must_fail gistore add --repo non-exist-repo.git root/src &&
|
77
|
+
(gistore add --repo non-exist-repo.git 2>actual || true) &&
|
78
|
+
test_cmp expect actual &&
|
79
|
+
test_must_fail gistore rm --repo non-exist-repo.git root/src &&
|
80
|
+
(gistore add --repo non-exist-repo.git 2>actual || true) &&
|
81
|
+
test_cmp expect actual
|
82
|
+
'
|
83
|
+
|
84
|
+
test_expect_success 'fail if no argument for add/remove' '
|
85
|
+
test_must_fail gistore add --repo repo.git &&
|
86
|
+
test_must_fail gistore rm --repo repo.git
|
87
|
+
'
|
88
|
+
|
89
|
+
test_done
|
data/t/t1010-status.sh
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jiang Xin
|
4
|
+
#
|
5
|
+
|
6
|
+
test_description='Test gistore status'
|
7
|
+
|
8
|
+
TEST_NO_CREATE_REPO=NoThanks
|
9
|
+
. ./lib-worktree.sh
|
10
|
+
. ./test-lib.sh
|
11
|
+
|
12
|
+
cwd=$(pwd -P)
|
13
|
+
|
14
|
+
cat >expect << EOF
|
15
|
+
root/doc
|
16
|
+
root/src
|
17
|
+
EOF
|
18
|
+
|
19
|
+
# Parent .gitignore ignore all this directory, and new file
|
20
|
+
# will not show in git-status.
|
21
|
+
test_expect_success 'remove to avoid .gitignore side-effect' '
|
22
|
+
if [ -f "$TEST_DIRECTORY/.gitignore" ]; then
|
23
|
+
mv "$TEST_DIRECTORY/.gitignore" "$TEST_DIRECTORY/.gitignore.save"
|
24
|
+
fi
|
25
|
+
'
|
26
|
+
|
27
|
+
test_expect_success 'status show backup list' '
|
28
|
+
prepare_work_tree &&
|
29
|
+
gistore init --repo repo.git &&
|
30
|
+
gistore add --repo repo.git root/src &&
|
31
|
+
gistore add --repo repo.git root/doc &&
|
32
|
+
gistore status --repo repo.git --backup \
|
33
|
+
| sed -e "s#^${cwd}/##g" > actual &&
|
34
|
+
test_cmp expect actual
|
35
|
+
'
|
36
|
+
|
37
|
+
# Before git v1.7.4, filenames in git-status are NOT quoted.
|
38
|
+
# So strip double quote before compare with this.
|
39
|
+
cat >expect << EOF
|
40
|
+
M root/doc/COPYRIGHT
|
41
|
+
M root/src/README.txt
|
42
|
+
D root/src/images/test-binary-1.png
|
43
|
+
D root/src/lib/b/baz.a
|
44
|
+
?? root/src/lib/a/foo.h
|
45
|
+
EOF
|
46
|
+
|
47
|
+
test_expect_success GIT_CAP_WILDMATCH 'status --git (1)' '
|
48
|
+
gistore commit --repo repo.git && \
|
49
|
+
echo "hack" >> root/doc/COPYRIGHT && \
|
50
|
+
echo "hack" >> root/src/README.txt && \
|
51
|
+
touch root/src/lib/a/foo.h && \
|
52
|
+
rm root/src/images/test-binary-1.png && \
|
53
|
+
rm root/src/lib/b/baz.a && \
|
54
|
+
gistore status --repo repo.git --git -s \
|
55
|
+
| sed -e "s#${cwd#/}/##g" | sed -e "s/\"//g" > actual &&
|
56
|
+
test_cmp expect actual
|
57
|
+
'
|
58
|
+
|
59
|
+
# Rstore parent .gitignore file
|
60
|
+
test_expect_success 'restore .gitignore' '
|
61
|
+
if [ -f "$TEST_DIRECTORY/.gitignore.save" ]; then
|
62
|
+
mv "$TEST_DIRECTORY/.gitignore.save" "$TEST_DIRECTORY/.gitignore"
|
63
|
+
fi
|
64
|
+
'
|
65
|
+
|
66
|
+
cat >expect <<EOF
|
67
|
+
Error: Can not find repo at "non-exist-repo.git"
|
68
|
+
EOF
|
69
|
+
|
70
|
+
test_expect_success 'fail for non-exist gitstore repo' '
|
71
|
+
test_must_fail gistore status --repo non-exist-repo.git &&
|
72
|
+
(gistore add --repo non-exist-repo.git 2>actual || true) &&
|
73
|
+
test_cmp expect actual
|
74
|
+
'
|
75
|
+
|
76
|
+
cat >expect <<EOF
|
77
|
+
Error: Failure while executing: git status --bad-git-status-option
|
78
|
+
EOF
|
79
|
+
|
80
|
+
test_expect_success 'fail for bad git status options' '
|
81
|
+
test_must_fail gistore status --repo repo.git --bad-git-status-option &&
|
82
|
+
(gistore status --repo repo.git --bad-git-status-option 2>&1 | grep "^Error" |
|
83
|
+
sed -e "s/ [^ ]*\/git/ git/" > actual || true) &&
|
84
|
+
test_cmp expect actual
|
85
|
+
'
|
86
|
+
|
87
|
+
test_done
|