git-commit-vandalism/t/t3050-subprojects-fetch.sh
Jeff King 82ebb0b6ec add test_cmp function for test scripts
Many scripts compare actual and expected output using
"diff -u". This is nicer than "cmp" because the output shows
how the two differ. However, not all versions of diff
understand -u, leading to unnecessary test failure.

This adds a test_cmp function to the test scripts and
switches all "diff -u" invocations to use it. The function
uses the contents of "$GIT_TEST_CMP" to compare its
arguments; the default is "diff -u".

On systems with a less-capable diff, you can do:

  GIT_TEST_CMP=cmp make test

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-13 00:57:52 -07:00

53 lines
1.0 KiB
Bash
Executable File

#!/bin/sh
test_description='fetching and pushing project with subproject'
. ./test-lib.sh
test_expect_success setup '
test_tick &&
mkdir -p sub && (
cd sub &&
git init &&
>subfile &&
git add subfile
git commit -m "subproject commit #1"
) &&
>mainfile
git add sub mainfile &&
test_tick &&
git commit -m "superproject commit #1"
'
test_expect_success clone '
git clone file://`pwd`/.git cloned &&
(git rev-parse HEAD; git ls-files -s) >expected &&
(
cd cloned &&
(git rev-parse HEAD; git ls-files -s) >../actual
) &&
test_cmp expected actual
'
test_expect_success advance '
echo more >mainfile &&
git update-index --force-remove sub &&
mv sub/.git sub/.git-disabled &&
git add sub/subfile mainfile &&
mv sub/.git-disabled sub/.git &&
test_tick &&
git commit -m "superproject commit #2"
'
test_expect_success fetch '
(git rev-parse HEAD; git ls-files -s) >expected &&
(
cd cloned &&
git pull &&
(git rev-parse HEAD; git ls-files -s) >../actual
) &&
test_cmp expected actual
'
test_done