Git fork
at reftables-rust 83 lines 2.4 kB view raw
1#!/bin/sh 2 3test_description='Basic subproject functionality' 4 5. ./test-lib.sh 6 7test_expect_success 'setup: create superproject' ' 8 : >Makefile && 9 git add Makefile && 10 git commit -m "Superproject created" 11' 12 13test_expect_success 'setup: create subprojects' ' 14 mkdir sub1 && 15 ( cd sub1 && git init && : >Makefile && git add * && 16 git commit -q -m "subproject 1" ) && 17 mkdir sub2 && 18 ( cd sub2 && git init && : >Makefile && git add * && 19 git commit -q -m "subproject 2" ) && 20 git update-index --add sub1 && 21 git add sub2 && 22 git commit -q -m "subprojects added" && 23 GIT_PRINT_SHA1_ELLIPSIS="yes" git diff-tree --abbrev=5 HEAD^ HEAD |cut -d" " -f-3,5- >current && 24 git branch save HEAD && 25 cat >expected <<-\EOF && 26 :000000 160000 00000... A sub1 27 :000000 160000 00000... A sub2 28 EOF 29 test_cmp expected current 30' 31 32test_expect_success 'check if fsck ignores the subprojects' ' 33 git fsck --full 34' 35 36test_expect_success 'check if commit in a subproject detected' ' 37 ( cd sub1 && 38 echo "all:" >>Makefile && 39 echo " true" >>Makefile && 40 git commit -q -a -m "make all" ) && 41 test_expect_code 1 git diff-files --exit-code 42' 43 44test_expect_success 'check if a changed subproject HEAD can be committed' ' 45 git commit -q -a -m "sub1 changed" && 46 test_expect_code 1 git diff-tree --exit-code HEAD^ HEAD 47' 48 49test_expect_success 'check if diff-index works for subproject elements' ' 50 test_expect_code 1 git diff-index --exit-code --cached save -- sub1 51' 52 53test_expect_success 'check if diff-tree works for subproject elements' ' 54 test_expect_code 1 git diff-tree --exit-code HEAD^ HEAD -- sub1 55' 56 57test_expect_success 'check if git diff works for subproject elements' ' 58 test_expect_code 1 git diff --exit-code HEAD^ HEAD 59' 60 61test_expect_success 'check if clone works' ' 62 git ls-files -s >expected && 63 git clone -l -s . cloned && 64 ( cd cloned && git ls-files -s ) >current && 65 test_cmp expected current 66' 67 68test_expect_success 'removing and adding subproject' ' 69 git update-index --force-remove -- sub2 && 70 mv sub2 sub3 && 71 git add sub3 && 72 git commit -q -m "renaming a subproject" && 73 test_expect_code 1 git diff -M --name-status --exit-code HEAD^ HEAD 74' 75 76# the index must contain the object name the HEAD of the 77# subproject sub1 was at the point "save" 78test_expect_success 'checkout in superproject' ' 79 git checkout save && 80 git diff-index --exit-code --raw --cached save -- sub1 81' 82 83test_done