t1405: some basic tests on main ref store

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Nguyễn Thái Ngọc Duy committed Mar 26, 2017 at 09:42 UTC 16feb99d54dffac664c75e23b73763d328e717b9
1 file changed +123
t/t1405-main-ref-store.sh new
+123
@@ -0,0 +1,123 @@
1 +#!/bin/sh
2 +
3 +test_description='test main ref store api'
4 +
5 +. ./test-lib.sh
6 +
7 +RUN="test-ref-store main"
8 +
9 +test_expect_success 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' '
10 + test_commit one &&
11 + N=`find .git/refs -type f | wc -l` &&
12 + test "$N" != 0 &&
13 + $RUN pack-refs 3 &&
14 + N=`find .git/refs -type f | wc -l`
15 +'
16 +
17 +test_expect_success 'peel_ref(new-tag)' '
18 + git rev-parse HEAD >expected &&
19 + git tag -a -m new-tag new-tag HEAD &&
20 + $RUN peel-ref refs/tags/new-tag >actual &&
21 + test_cmp expected actual
22 +'
23 +
24 +test_expect_success 'create_symref(FOO, refs/heads/master)' '
25 + $RUN create-symref FOO refs/heads/master nothing &&
26 + echo refs/heads/master >expected &&
27 + git symbolic-ref FOO >actual &&
28 + test_cmp expected actual
29 +'
30 +
31 +test_expect_success 'delete_refs(FOO, refs/tags/new-tag)' '
32 + git rev-parse FOO -- &&
33 + git rev-parse refs/tags/new-tag -- &&
34 + $RUN delete-refs 0 FOO refs/tags/new-tag &&
35 + test_must_fail git rev-parse FOO -- &&
36 + test_must_fail git rev-parse refs/tags/new-tag --
37 +'
38 +
39 +test_expect_success 'rename_refs(master, new-master)' '
40 + git rev-parse master >expected &&
41 + $RUN rename-ref refs/heads/master refs/heads/new-master &&
42 + git rev-parse new-master >actual &&
43 + test_cmp expected actual &&
44 + test_commit recreate-master
45 +'
46 +
47 +test_expect_success 'for_each_ref(refs/heads/)' '
48 + $RUN for-each-ref refs/heads/ | cut -c 42- >actual &&
49 + cat >expected <<-\EOF &&
50 + master 0x0
51 + new-master 0x0
52 + EOF
53 + test_cmp expected actual
54 +'
55 +
56 +test_expect_success 'resolve_ref(new-master)' '
57 + SHA1=`git rev-parse new-master` &&
58 + echo "$SHA1 refs/heads/new-master 0x0" >expected &&
59 + $RUN resolve-ref refs/heads/new-master 0 >actual &&
60 + test_cmp expected actual
61 +'
62 +
63 +test_expect_success 'verify_ref(new-master)' '
64 + $RUN verify-ref refs/heads/new-master
65 +'
66 +
67 +test_expect_success 'for_each_reflog()' '
68 + $RUN for-each-reflog | sort | cut -c 42- >actual &&
69 + cat >expected <<-\EOF &&
70 + HEAD 0x1
71 + refs/heads/master 0x0
72 + refs/heads/new-master 0x0
73 + EOF
74 + test_cmp expected actual
75 +'
76 +
77 +test_expect_success 'for_each_reflog_ent()' '
78 + $RUN for-each-reflog-ent HEAD >actual &&
79 + head -n1 actual | grep one &&
80 + tail -n2 actual | head -n1 | grep recreate-master
81 +'
82 +
83 +test_expect_success 'for_each_reflog_ent_reverse()' '
84 + $RUN for-each-reflog-ent-reverse HEAD >actual &&
85 + head -n1 actual | grep recreate-master &&
86 + tail -n2 actual | head -n1 | grep one
87 +'
88 +
89 +test_expect_success 'reflog_exists(HEAD)' '
90 + $RUN reflog-exists HEAD
91 +'
92 +
93 +test_expect_success 'delete_reflog(HEAD)' '
94 + $RUN delete-reflog HEAD &&
95 + ! test -f .git/logs/HEAD
96 +'
97 +
98 +test_expect_success 'create-reflog(HEAD)' '
99 + $RUN create-reflog HEAD 1 &&
100 + test -f .git/logs/HEAD
101 +'
102 +
103 +test_expect_success 'delete_ref(refs/heads/foo)' '
104 + git checkout -b foo &&
105 + FOO_SHA1=`git rev-parse foo` &&
106 + git checkout --detach &&
107 + test_commit bar-commit &&
108 + git checkout -b bar &&
109 + BAR_SHA1=`git rev-parse bar` &&
110 + $RUN update-ref updating refs/heads/foo $BAR_SHA1 $FOO_SHA1 0 &&
111 + echo $BAR_SHA1 >expected &&
112 + git rev-parse refs/heads/foo >actual &&
113 + test_cmp expected actual
114 +'
115 +
116 +test_expect_success 'delete_ref(refs/heads/foo)' '
117 + SHA1=`git rev-parse foo` &&
118 + git checkout --detach &&
119 + $RUN delete-ref msg refs/heads/foo $SHA1 0 &&
120 + test_must_fail git rev-parse refs/heads/foo --
121 +'
122 +
123 +test_done