Git fork
at reftables-rust 319 lines 6.5 kB view raw
1#!/bin/sh 2# 3# Copyright (c) 2008 Ping Yin 4# 5 6test_description='Summary support for submodules 7 8This test script tries to verify the sanity of summary subcommand of git submodule. 9' 10 11# NOTE: This test script uses 'git add' instead of 'git submodule add' to add 12# submodules to the superproject. Some submodule subcommands such as init and 13# deinit might not work as expected in this script. t7421 does not have this 14# caveat. 15# 16# NEEDSWORK: This test script is old fashioned and may need a big cleanup due to 17# various reasons, one of them being that there are lots of commands taking place 18# outside of 'test_expect_success' block, which is no longer in good-style. 19 20. ./test-lib.sh 21 22add_file () { 23 sm=$1 24 shift 25 owd=$(pwd) 26 cd "$sm" 27 for name; do 28 echo "$name" >"$name" && 29 git add "$name" && 30 test_tick && 31 git commit -m "Add $name" 32 done >/dev/null 33 git rev-parse --short HEAD 34 cd "$owd" 35} 36commit_file () { 37 test_tick && 38 git commit "$@" -m "Commit $*" >/dev/null 39} 40 41test_expect_success 'setup submodule' ' 42 git init sm1 && 43 add_file . foo && 44 head1=$(add_file sm1 foo1 foo2) 45' 46 47test_expect_success 'added submodule' " 48 git add sm1 && 49 git submodule summary >actual && 50 cat >expected <<-EOF && 51 * sm1 0000000...$head1 (2): 52 > Add foo2 53 54 EOF 55 test_cmp expected actual 56" 57 58test_expect_success 'added submodule (subdirectory)' " 59 mkdir sub && 60 ( 61 cd sub && 62 git submodule summary >../actual 63 ) && 64 cat >expected <<-EOF && 65 * ../sm1 0000000...$head1 (2): 66 > Add foo2 67 68 EOF 69 test_cmp expected actual 70" 71 72test_expect_success 'added submodule (subdirectory only)' " 73 ( 74 cd sub && 75 git submodule summary . >../actual 76 ) && 77 test_must_be_empty actual 78" 79 80test_expect_success 'added submodule (subdirectory with explicit path)' " 81 ( 82 cd sub && 83 git submodule summary ../sm1 >../actual 84 ) && 85 cat >expected <<-EOF && 86 * ../sm1 0000000...$head1 (2): 87 > Add foo2 88 89 EOF 90 test_cmp expected actual 91" 92 93commit_file sm1 && 94head2=$(add_file sm1 foo3) 95 96test_expect_success 'modified submodule(forward)' " 97 git submodule summary >actual && 98 cat >expected <<-EOF && 99 * sm1 $head1...$head2 (1): 100 > Add foo3 101 102 EOF 103 test_cmp expected actual 104" 105 106test_expect_success 'modified submodule(forward), --files' " 107 git submodule summary --files >actual && 108 cat >expected <<-EOF && 109 * sm1 $head1...$head2 (1): 110 > Add foo3 111 112 EOF 113 test_cmp expected actual 114" 115 116test_expect_success 'no ignore=all setting has any effect' " 117 git config -f .gitmodules submodule.sm1.path sm1 && 118 git config -f .gitmodules submodule.sm1.ignore all && 119 git config submodule.sm1.ignore all && 120 git config diff.ignoreSubmodules all && 121 git submodule summary >actual && 122 cat >expected <<-EOF && 123 * sm1 $head1...$head2 (1): 124 > Add foo3 125 126 EOF 127 test_cmp expected actual && 128 git config --unset diff.ignoreSubmodules && 129 git config --remove-section submodule.sm1 && 130 git config -f .gitmodules --remove-section submodule.sm1 131" 132 133 134commit_file sm1 && 135head3=$( 136 cd sm1 && 137 git reset --hard HEAD~2 >/dev/null && 138 git rev-parse --short HEAD 139) 140 141test_expect_success 'modified submodule(backward)' " 142 git submodule summary >actual && 143 cat >expected <<-EOF && 144 * sm1 $head2...$head3 (2): 145 < Add foo3 146 < Add foo2 147 148 EOF 149 test_cmp expected actual 150" 151 152head4=$(add_file sm1 foo4 foo5) && 153head4_full=$(GIT_DIR=sm1/.git git rev-parse --verify HEAD) 154test_expect_success 'modified submodule(backward and forward)' " 155 git submodule summary >actual && 156 cat >expected <<-EOF && 157 * sm1 $head2...$head4 (4): 158 > Add foo5 159 > Add foo4 160 < Add foo3 161 < Add foo2 162 163 EOF 164 test_cmp expected actual 165" 166 167test_expect_success '--summary-limit' " 168 git submodule summary -n 3 >actual && 169 cat >expected <<-EOF && 170 * sm1 $head2...$head4 (4): 171 > Add foo5 172 > Add foo4 173 < Add foo3 174 175 EOF 176 test_cmp expected actual 177" 178 179commit_file sm1 && 180mv sm1 sm1-bak && 181echo sm1 >sm1 && 182head5=$(git hash-object sm1 | cut -c1-7) && 183git add sm1 && 184rm -f sm1 && 185mv sm1-bak sm1 186 187test_expect_success 'typechanged submodule(submodule->blob), --cached' " 188 git submodule summary --cached >actual && 189 cat >expected <<-EOF && 190 * sm1 $head4(submodule)->$head5(blob) (3): 191 < Add foo5 192 193 EOF 194 test_cmp expected actual 195" 196 197test_expect_success 'typechanged submodule(submodule->blob), --files' " 198 git submodule summary --files >actual && 199 cat >expected <<-EOF && 200 * sm1 $head5(blob)->$head4(submodule) (3): 201 > Add foo5 202 203 EOF 204 test_cmp expected actual 205" 206 207rm -rf sm1 && 208git checkout-index sm1 209test_expect_success 'typechanged submodule(submodule->blob)' " 210 git submodule summary >actual && 211 cat >expected <<-EOF && 212 * sm1 $head4(submodule)->$head5(blob): 213 214 EOF 215 test_cmp expected actual 216" 217 218test_expect_success 'setup submodule' ' 219 rm -f sm1 && 220 git init sm1 && 221 head6=$(add_file sm1 foo6 foo7) 222' 223 224test_expect_success 'nonexistent commit' " 225 git submodule summary >actual && 226 cat >expected <<-EOF && 227 * sm1 $head4...$head6: 228 Warn: sm1 doesn't contain commit $head4_full 229 230 EOF 231 test_cmp expected actual 232" 233 234commit_file 235test_expect_success 'typechanged submodule(blob->submodule)' " 236 git submodule summary >actual && 237 cat >expected <<-EOF && 238 * sm1 $head5(blob)->$head6(submodule) (2): 239 > Add foo7 240 241 EOF 242 test_cmp expected actual 243" 244 245commit_file sm1 && 246rm -rf sm1 247test_expect_success 'deleted submodule' " 248 git submodule summary >actual && 249 cat >expected <<-EOF && 250 * sm1 $head6...0000000: 251 252 EOF 253 test_cmp expected actual 254" 255 256test_expect_success 'create second submodule' ' 257 test_create_repo sm2 && 258 head7=$(add_file sm2 foo8 foo9) && 259 git add sm2 260' 261 262test_expect_success 'multiple submodules' " 263 git submodule summary >actual && 264 cat >expected <<-EOF && 265 * sm1 $head6...0000000: 266 267 * sm2 0000000...$head7 (2): 268 > Add foo9 269 270 EOF 271 test_cmp expected actual 272" 273 274test_expect_success 'path filter' " 275 git submodule summary sm2 >actual && 276 cat >expected <<-EOF && 277 * sm2 0000000...$head7 (2): 278 > Add foo9 279 280 EOF 281 test_cmp expected actual 282" 283 284commit_file sm2 285test_expect_success 'given commit' " 286 git submodule summary HEAD^ >actual && 287 cat >expected <<-EOF && 288 * sm1 $head6...0000000: 289 290 * sm2 0000000...$head7 (2): 291 > Add foo9 292 293 EOF 294 test_cmp expected actual 295" 296 297test_expect_success '--for-status' " 298 git submodule summary --for-status HEAD^ >actual && 299 test_cmp - actual <<-EOF 300 * sm1 $head6...0000000: 301 302 * sm2 0000000...$head7 (2): 303 > Add foo9 304 305 EOF 306" 307 308test_expect_success 'fail when using --files together with --cached' " 309 test_must_fail git submodule summary --files --cached 310" 311 312test_expect_success 'should not fail in an empty repo' " 313 git init xyzzy && 314 cd xyzzy && 315 git submodule summary >output 2>&1 && 316 test_must_be_empty output 317" 318 319test_done