Merge branch 'ab/test-2'
* ab/test-2: (51 commits) tests: factor HOME=$(pwd) in test-lib.sh test-lib: use subshell instead of cd $new && .. && cd $old tests: simplify "missing PREREQ" message t/t0000-basic.sh: Run the passing TODO test inside its own test-lib test-lib: Allow overriding of TEST_DIRECTORY test-lib: Use "$GIT_BUILD_DIR" instead of "$TEST_DIRECTORY"/../ test-lib: Use $TEST_DIRECTORY or $GIT_BUILD_DIR instead of $(pwd) and ../ test: Introduce $GIT_BUILD_DIR cvs tests: do not touch test CVS repositories shipped with source t/t9602-cvsimport-branches-tags.sh: Add a PERL prerequisite t/t9601-cvsimport-vendor-branch.sh: Add a PERL prerequisite t/t7105-reset-patch.sh: Add a PERL prerequisite t/t9001-send-email.sh: convert setup code to tests t/t9001-send-email.sh: change from skip_all=* to prereq skip t/t9001-send-email.sh: Remove needless PROG=* assignment t/t9600-cvsimport.sh: change from skip_all=* to prereq skip lib-patch-mode tests: change from skip_all=* to prereq skip t/t3701-add-interactive.sh: change from skip_all=* to prereq skip tests: Move FILEMODE prerequisite to lib-prereq-FILEMODE.sh t/Makefile: Create test-results dir for smoke target ... Conflicts: t/t6035-merge-dir-to-symlink.sh
This commit is contained in:
commit
a2c6726417
6
.gitignore
vendored
6
.gitignore
vendored
@ -186,6 +186,12 @@
|
|||||||
*.[aos]
|
*.[aos]
|
||||||
*.py[co]
|
*.py[co]
|
||||||
.depend/
|
.depend/
|
||||||
|
*.gcda
|
||||||
|
*.gcno
|
||||||
|
*.gcov
|
||||||
|
/coverage-untested-functions
|
||||||
|
/cover_db/
|
||||||
|
/cover_db_html/
|
||||||
*+
|
*+
|
||||||
/config.mak
|
/config.mak
|
||||||
/autom4te.cache
|
/autom4te.cache
|
||||||
|
25
Makefile
25
Makefile
@ -310,6 +310,7 @@ TCL_PATH = tclsh
|
|||||||
TCLTK_PATH = wish
|
TCLTK_PATH = wish
|
||||||
PTHREAD_LIBS = -lpthread
|
PTHREAD_LIBS = -lpthread
|
||||||
PTHREAD_CFLAGS =
|
PTHREAD_CFLAGS =
|
||||||
|
GCOV = gcov
|
||||||
|
|
||||||
export TCL_PATH TCLTK_PATH
|
export TCL_PATH TCLTK_PATH
|
||||||
|
|
||||||
@ -1499,6 +1500,7 @@ ifndef V
|
|||||||
QUIET_BUILT_IN = @echo ' ' BUILTIN $@;
|
QUIET_BUILT_IN = @echo ' ' BUILTIN $@;
|
||||||
QUIET_GEN = @echo ' ' GEN $@;
|
QUIET_GEN = @echo ' ' GEN $@;
|
||||||
QUIET_LNCP = @echo ' ' LN/CP $@;
|
QUIET_LNCP = @echo ' ' LN/CP $@;
|
||||||
|
QUIET_GCOV = @echo ' ' GCOV $@;
|
||||||
QUIET_SUBDIR0 = +@subdir=
|
QUIET_SUBDIR0 = +@subdir=
|
||||||
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
||||||
$(MAKE) $(PRINT_DIR) -C $$subdir
|
$(MAKE) $(PRINT_DIR) -C $$subdir
|
||||||
@ -2324,11 +2326,18 @@ coverage:
|
|||||||
$(MAKE) coverage-build
|
$(MAKE) coverage-build
|
||||||
$(MAKE) coverage-report
|
$(MAKE) coverage-report
|
||||||
|
|
||||||
|
object_dirs := $(sort $(dir $(OBJECTS)))
|
||||||
coverage-clean:
|
coverage-clean:
|
||||||
rm -f *.gcda *.gcno
|
$(RM) $(addsuffix *.gcov,$(object_dirs))
|
||||||
|
$(RM) $(addsuffix *.gcda,$(object_dirs))
|
||||||
|
$(RM) $(addsuffix *.gcno,$(object_dirs))
|
||||||
|
$(RM) coverage-untested-functions
|
||||||
|
$(RM) -r cover_db/
|
||||||
|
$(RM) -r cover_db_html/
|
||||||
|
|
||||||
COVERAGE_CFLAGS = $(CFLAGS) -O0 -ftest-coverage -fprofile-arcs
|
COVERAGE_CFLAGS = $(CFLAGS) -O0 -ftest-coverage -fprofile-arcs
|
||||||
COVERAGE_LDFLAGS = $(CFLAGS) -O0 -lgcov
|
COVERAGE_LDFLAGS = $(CFLAGS) -O0 -lgcov
|
||||||
|
GCOVFLAGS = --preserve-paths --branch-probabilities --all-blocks
|
||||||
|
|
||||||
coverage-build: coverage-clean
|
coverage-build: coverage-clean
|
||||||
$(MAKE) CFLAGS="$(COVERAGE_CFLAGS)" LDFLAGS="$(COVERAGE_LDFLAGS)" all
|
$(MAKE) CFLAGS="$(COVERAGE_CFLAGS)" LDFLAGS="$(COVERAGE_LDFLAGS)" all
|
||||||
@ -2336,7 +2345,17 @@ coverage-build: coverage-clean
|
|||||||
-j1 test
|
-j1 test
|
||||||
|
|
||||||
coverage-report:
|
coverage-report:
|
||||||
gcov -b *.c
|
$(QUIET_GCOV)for dir in $(object_dirs); do \
|
||||||
|
$(GCOV) $(GCOVFLAGS) --object-directory=$$dir $$dir*.c || exit; \
|
||||||
|
done
|
||||||
|
|
||||||
|
coverage-untested-functions: coverage-report
|
||||||
grep '^function.*called 0 ' *.c.gcov \
|
grep '^function.*called 0 ' *.c.gcov \
|
||||||
| sed -e 's/\([^:]*\)\.gcov: *function \([^ ]*\) called.*/\1: \2/' \
|
| sed -e 's/\([^:]*\)\.gcov: *function \([^ ]*\) called.*/\1: \2/' \
|
||||||
| tee coverage-untested-functions
|
> coverage-untested-functions
|
||||||
|
|
||||||
|
cover_db: coverage-report
|
||||||
|
gcov2perl -db cover_db *.gcov
|
||||||
|
|
||||||
|
cover_db_html: cover_db
|
||||||
|
cover -report html -outputdir cover_db_html cover_db
|
||||||
|
42
t/Makefile
42
t/Makefile
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#GIT_TEST_OPTS=--verbose --debug
|
#GIT_TEST_OPTS=--verbose --debug
|
||||||
SHELL_PATH ?= $(SHELL)
|
SHELL_PATH ?= $(SHELL)
|
||||||
|
PERL_PATH ?= /usr/bin/perl
|
||||||
TAR ?= $(TAR)
|
TAR ?= $(TAR)
|
||||||
RM ?= rm -f
|
RM ?= rm -f
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ pre-clean:
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -r 'trash directory'.* test-results
|
$(RM) -r 'trash directory'.* test-results
|
||||||
$(RM) t????/cvsroot/CVSROOT/?*
|
|
||||||
$(RM) -r valgrind/bin
|
$(RM) -r valgrind/bin
|
||||||
$(RM) .prove
|
$(RM) .prove
|
||||||
|
|
||||||
@ -49,4 +49,42 @@ full-svn-test:
|
|||||||
valgrind:
|
valgrind:
|
||||||
GIT_TEST_OPTS=--valgrind $(MAKE)
|
GIT_TEST_OPTS=--valgrind $(MAKE)
|
||||||
|
|
||||||
.PHONY: pre-clean $(T) aggregate-results clean valgrind
|
# Smoke testing targets
|
||||||
|
-include ../GIT-VERSION-FILE
|
||||||
|
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo unknown')
|
||||||
|
uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo unknown')
|
||||||
|
|
||||||
|
test-results:
|
||||||
|
mkdir -p test-results
|
||||||
|
|
||||||
|
test-results/git-smoke.tar.gz: test-results
|
||||||
|
$(PERL_PATH) ./harness \
|
||||||
|
--archive="test-results/git-smoke.tar.gz" \
|
||||||
|
$(T)
|
||||||
|
|
||||||
|
smoke: test-results/git-smoke.tar.gz
|
||||||
|
|
||||||
|
SMOKE_UPLOAD_FLAGS =
|
||||||
|
ifdef SMOKE_USERNAME
|
||||||
|
SMOKE_UPLOAD_FLAGS += -F username="$(SMOKE_USERNAME)" -F password="$(SMOKE_PASSWORD)"
|
||||||
|
endif
|
||||||
|
ifdef SMOKE_COMMENT
|
||||||
|
SMOKE_UPLOAD_FLAGS += -F comments="$(SMOKE_COMMENT)"
|
||||||
|
endif
|
||||||
|
ifdef SMOKE_TAGS
|
||||||
|
SMOKE_UPLOAD_FLAGS += -F tags="$(SMOKE_TAGS)"
|
||||||
|
endif
|
||||||
|
|
||||||
|
smoke_report: smoke
|
||||||
|
curl \
|
||||||
|
-H "Expect: " \
|
||||||
|
-F project=Git \
|
||||||
|
-F architecture="$(uname_M)" \
|
||||||
|
-F platform="$(uname_S)" \
|
||||||
|
-F revision="$(GIT_VERSION)" \
|
||||||
|
-F report_file=@test-results/git-smoke.tar.gz \
|
||||||
|
$(SMOKE_UPLOAD_FLAGS) \
|
||||||
|
http://smoke.git.nix.is/app/projects/process_add_report/1 \
|
||||||
|
| grep -v ^Redirecting
|
||||||
|
|
||||||
|
.PHONY: pre-clean $(T) aggregate-results clean valgrind smoke smoke_report
|
||||||
|
201
t/README
201
t/README
@ -268,6 +268,18 @@ Do:
|
|||||||
git push gh &&
|
git push gh &&
|
||||||
test ...
|
test ...
|
||||||
|
|
||||||
|
- Check the test coverage for your tests. See the "Test coverage"
|
||||||
|
below.
|
||||||
|
|
||||||
|
Don't blindly follow test coverage metrics, they're a good way to
|
||||||
|
spot if you've missed something. If a new function you added
|
||||||
|
doesn't have any coverage you're probably doing something wrong,
|
||||||
|
but having 100% coverage doesn't necessarily mean that you tested
|
||||||
|
everything.
|
||||||
|
|
||||||
|
Tests that are likely to smoke out future regressions are better
|
||||||
|
than tests that just inflate the coverage metrics.
|
||||||
|
|
||||||
Don't:
|
Don't:
|
||||||
|
|
||||||
- exit() within a <script> part.
|
- exit() within a <script> part.
|
||||||
@ -307,9 +319,21 @@ Keep in mind:
|
|||||||
Skipping tests
|
Skipping tests
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
If you need to skip all the remaining tests you should set skip_all
|
If you need to skip tests you should do so be using the three-arg form
|
||||||
and immediately call test_done. The string you give to skip_all will
|
of the test_* functions (see the "Test harness library" section
|
||||||
be used as an explanation for why the test was skipped. for instance:
|
below), e.g.:
|
||||||
|
|
||||||
|
test_expect_success PERL 'I need Perl' "
|
||||||
|
'$PERL_PATH' -e 'hlagh() if unf_unf()'
|
||||||
|
"
|
||||||
|
|
||||||
|
The advantage of skipping tests like this is that platforms that don't
|
||||||
|
have the PERL and other optional dependencies get an indication of how
|
||||||
|
many tests they're missing.
|
||||||
|
|
||||||
|
If the test code is too hairy for that (i.e. does a lot of setup work
|
||||||
|
outside test assertions) you can also skip all remaining tests by
|
||||||
|
setting skip_all and immediately call test_done:
|
||||||
|
|
||||||
if ! test_have_prereq PERL
|
if ! test_have_prereq PERL
|
||||||
then
|
then
|
||||||
@ -317,6 +341,9 @@ be used as an explanation for why the test was skipped. for instance:
|
|||||||
test_done
|
test_done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
The string you give to skip_all will be used as an explanation for why
|
||||||
|
the test was skipped.
|
||||||
|
|
||||||
End with test_done
|
End with test_done
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
@ -350,6 +377,12 @@ library for your script to use.
|
|||||||
test_expect_success TTY 'git --paginate rev-list uses a pager' \
|
test_expect_success TTY 'git --paginate rev-list uses a pager' \
|
||||||
' ... '
|
' ... '
|
||||||
|
|
||||||
|
You can also supply a comma-separated list of prerequisites, in the
|
||||||
|
rare case where your test depends on more than one:
|
||||||
|
|
||||||
|
test_expect_success PERL,PYTHON 'yo dawg' \
|
||||||
|
' test $(perl -E 'print eval "1 +" . qx[python -c "print 2"]') == "4" '
|
||||||
|
|
||||||
- test_expect_failure [<prereq>] <message> <script>
|
- test_expect_failure [<prereq>] <message> <script>
|
||||||
|
|
||||||
This is NOT the opposite of test_expect_success, but is used
|
This is NOT the opposite of test_expect_success, but is used
|
||||||
@ -404,11 +437,12 @@ library for your script to use.
|
|||||||
- test_set_prereq SOME_PREREQ
|
- test_set_prereq SOME_PREREQ
|
||||||
|
|
||||||
Set a test prerequisite to be used later with test_have_prereq. The
|
Set a test prerequisite to be used later with test_have_prereq. The
|
||||||
test-lib will set some prerequisites for you, e.g. PERL and PYTHON
|
test-lib will set some prerequisites for you, see the
|
||||||
which are derived from ./GIT-BUILD-OPTIONS (grep test_set_prereq
|
"Prerequisites" section below for a full list of these.
|
||||||
test-lib.sh for more). Others you can set yourself and use later
|
|
||||||
with either test_have_prereq directly, or the three argument
|
Others you can set yourself and use later with either
|
||||||
invocation of test_expect_success and test_expect_failure.
|
test_have_prereq directly, or the three argument invocation of
|
||||||
|
test_expect_success and test_expect_failure.
|
||||||
|
|
||||||
- test_have_prereq SOME PREREQ
|
- test_have_prereq SOME PREREQ
|
||||||
|
|
||||||
@ -488,6 +522,45 @@ library for your script to use.
|
|||||||
...
|
...
|
||||||
'
|
'
|
||||||
|
|
||||||
|
Prerequisites
|
||||||
|
-------------
|
||||||
|
|
||||||
|
These are the prerequisites that the test library predefines with
|
||||||
|
test_have_prereq.
|
||||||
|
|
||||||
|
See the prereq argument to the test_* functions in the "Test harness
|
||||||
|
library" section above and the "test_have_prereq" function for how to
|
||||||
|
use these, and "test_set_prereq" for how to define your own.
|
||||||
|
|
||||||
|
- PERL & PYTHON
|
||||||
|
|
||||||
|
Git wasn't compiled with NO_PERL=YesPlease or
|
||||||
|
NO_PYTHON=YesPlease. Wrap any tests that need Perl or Python in
|
||||||
|
these.
|
||||||
|
|
||||||
|
- POSIXPERM
|
||||||
|
|
||||||
|
The filesystem supports POSIX style permission bits.
|
||||||
|
|
||||||
|
- BSLASHPSPEC
|
||||||
|
|
||||||
|
Backslashes in pathspec are not directory separators. This is not
|
||||||
|
set on Windows. See 6fd1106a for details.
|
||||||
|
|
||||||
|
- EXECKEEPSPID
|
||||||
|
|
||||||
|
The process retains the same pid across exec(2). See fb9a2bea for
|
||||||
|
details.
|
||||||
|
|
||||||
|
- SYMLINKS
|
||||||
|
|
||||||
|
The filesystem we're on supports symbolic links. E.g. a FAT
|
||||||
|
filesystem doesn't support these. See 704a3143 for details.
|
||||||
|
|
||||||
|
- SANITY
|
||||||
|
|
||||||
|
Test is not run by root user, and an attempt to write to an
|
||||||
|
unwritable file is expected to fail correctly.
|
||||||
|
|
||||||
Tips for Writing Tests
|
Tips for Writing Tests
|
||||||
----------------------
|
----------------------
|
||||||
@ -515,3 +588,115 @@ the purpose of t0000-basic.sh, which is to isolate that level of
|
|||||||
validation in one place. Your test also ends up needing
|
validation in one place. Your test also ends up needing
|
||||||
updating when such a change to the internal happens, so do _not_
|
updating when such a change to the internal happens, so do _not_
|
||||||
do it and leave the low level of validation to t0000-basic.sh.
|
do it and leave the low level of validation to t0000-basic.sh.
|
||||||
|
|
||||||
|
Test coverage
|
||||||
|
-------------
|
||||||
|
|
||||||
|
You can use the coverage tests to find code paths that are not being
|
||||||
|
used or properly exercised yet.
|
||||||
|
|
||||||
|
To do that, run the coverage target at the top-level (not in the t/
|
||||||
|
directory):
|
||||||
|
|
||||||
|
make coverage
|
||||||
|
|
||||||
|
That'll compile Git with GCC's coverage arguments, and generate a test
|
||||||
|
report with gcov after the tests finish. Running the coverage tests
|
||||||
|
can take a while, since running the tests in parallel is incompatible
|
||||||
|
with GCC's coverage mode.
|
||||||
|
|
||||||
|
After the tests have run you can generate a list of untested
|
||||||
|
functions:
|
||||||
|
|
||||||
|
make coverage-untested-functions
|
||||||
|
|
||||||
|
You can also generate a detailed per-file HTML report using the
|
||||||
|
Devel::Cover module. To install it do:
|
||||||
|
|
||||||
|
# On Debian or Ubuntu:
|
||||||
|
sudo aptitude install libdevel-cover-perl
|
||||||
|
|
||||||
|
# From the CPAN with cpanminus
|
||||||
|
curl -L http://cpanmin.us | perl - --sudo --self-upgrade
|
||||||
|
cpanm --sudo Devel::Cover
|
||||||
|
|
||||||
|
Then, at the top-level:
|
||||||
|
|
||||||
|
make cover_db_html
|
||||||
|
|
||||||
|
That'll generate a detailed cover report in the "cover_db_html"
|
||||||
|
directory, which you can then copy to a webserver, or inspect locally
|
||||||
|
in a browser.
|
||||||
|
|
||||||
|
Smoke testing
|
||||||
|
-------------
|
||||||
|
|
||||||
|
The Git test suite has support for smoke testing. Smoke testing is
|
||||||
|
when you submit the results of a test run to a central server for
|
||||||
|
analysis and aggregation.
|
||||||
|
|
||||||
|
Running a smoke tester is an easy and valuable way of contributing to
|
||||||
|
Git development, particularly if you have access to an uncommon OS on
|
||||||
|
obscure hardware.
|
||||||
|
|
||||||
|
After building Git you can generate a smoke report like this in the
|
||||||
|
"t" directory:
|
||||||
|
|
||||||
|
make clean smoke
|
||||||
|
|
||||||
|
You can also pass arguments via the environment. This should make it
|
||||||
|
faster:
|
||||||
|
|
||||||
|
GIT_TEST_OPTS='--root=/dev/shm' TEST_JOBS=10 make clean smoke
|
||||||
|
|
||||||
|
The "smoke" target will run the Git test suite with Perl's
|
||||||
|
"TAP::Harness" module, and package up the results in a .tar.gz archive
|
||||||
|
with "TAP::Harness::Archive". The former is included with Perl v5.10.1
|
||||||
|
or later, but you'll need to install the latter from the CPAN. See the
|
||||||
|
"Test coverage" section above for how you might do that.
|
||||||
|
|
||||||
|
Once the "smoke" target finishes you'll see a message like this:
|
||||||
|
|
||||||
|
TAP Archive created at <path to git>/t/test-results/git-smoke.tar.gz
|
||||||
|
|
||||||
|
To upload the smoke report you need to have curl(1) installed, then
|
||||||
|
do:
|
||||||
|
|
||||||
|
make smoke_report
|
||||||
|
|
||||||
|
To upload the report anonymously. Hopefully that'll return something
|
||||||
|
like "Reported #7 added.".
|
||||||
|
|
||||||
|
If you're going to be uploading reports frequently please request a
|
||||||
|
user account by E-Mailing gitsmoke@v.nix.is. Once you have a username
|
||||||
|
and password you'll be able to do:
|
||||||
|
|
||||||
|
SMOKE_USERNAME=<username> SMOKE_PASSWORD=<password> make smoke_report
|
||||||
|
|
||||||
|
You can also add an additional comment to attach to the report, and/or
|
||||||
|
a comma separated list of tags:
|
||||||
|
|
||||||
|
SMOKE_USERNAME=<username> SMOKE_PASSWORD=<password> \
|
||||||
|
SMOKE_COMMENT=<comment> SMOKE_TAGS=<tags> \
|
||||||
|
make smoke_report
|
||||||
|
|
||||||
|
Once the report is uploaded it'll be made available at
|
||||||
|
http://smoke.git.nix.is, here's an overview of Recent Smoke Reports
|
||||||
|
for Git:
|
||||||
|
|
||||||
|
http://smoke.git.nix.is/app/projects/smoke_reports/1
|
||||||
|
|
||||||
|
The reports will also be mirrored to GitHub every few hours:
|
||||||
|
|
||||||
|
http://github.com/gitsmoke/smoke-reports
|
||||||
|
|
||||||
|
The Smolder SQLite database is also mirrored and made available for
|
||||||
|
download:
|
||||||
|
|
||||||
|
http://github.com/gitsmoke/smoke-database
|
||||||
|
|
||||||
|
Note that the database includes hashed (with crypt()) user passwords
|
||||||
|
and E-Mail addresses. Don't use a valuable password for the smoke
|
||||||
|
service if you have an account, or an E-Mail address you don't want to
|
||||||
|
be publicly known. The user accounts are just meant to be convenient
|
||||||
|
labels, they're not meant to be secure.
|
||||||
|
21
t/harness
Executable file
21
t/harness
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Getopt::Long ();
|
||||||
|
use TAP::Harness::Archive;
|
||||||
|
|
||||||
|
Getopt::Long::Parser->new(
|
||||||
|
config => [ qw/ pass_through / ],
|
||||||
|
)->getoptions(
|
||||||
|
'jobs:1' => \(my $jobs = $ENV{TEST_JOBS}),
|
||||||
|
'archive=s' => \my $archive,
|
||||||
|
) or die "$0: Couldn't getoptions()";
|
||||||
|
|
||||||
|
TAP::Harness::Archive->new({
|
||||||
|
jobs => $jobs,
|
||||||
|
archive => $archive,
|
||||||
|
($ENV{GIT_TEST_OPTS}
|
||||||
|
? (test_args => [ split /\s+/, $ENV{GIT_TEST_OPTS} ])
|
||||||
|
: ()),
|
||||||
|
extra_properties => {},
|
||||||
|
})->runtests(@ARGV);
|
@ -3,9 +3,6 @@
|
|||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
unset CVS_SERVER
|
unset CVS_SERVER
|
||||||
# for clean cvsps cache
|
|
||||||
HOME=$(pwd)
|
|
||||||
export HOME
|
|
||||||
|
|
||||||
if ! type cvs >/dev/null 2>&1
|
if ! type cvs >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
@ -30,6 +27,12 @@ case "$cvsps_version" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
setup_cvs_test_repository () {
|
||||||
|
CVSROOT="$(pwd)/.cvsroot" &&
|
||||||
|
cp -r "$TEST_DIRECTORY/$1/cvsroot" "$CVSROOT" &&
|
||||||
|
export CVSROOT
|
||||||
|
}
|
||||||
|
|
||||||
test_cvs_co () {
|
test_cvs_co () {
|
||||||
# Usage: test_cvs_co BRANCH_NAME
|
# Usage: test_cvs_co BRANCH_NAME
|
||||||
rm -rf module-cvs-"$1"
|
rm -rf module-cvs-"$1"
|
||||||
|
@ -2,11 +2,6 @@
|
|||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq PERL; then
|
|
||||||
skip_all='skipping --patch tests, perl not available'
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
set_state () {
|
set_state () {
|
||||||
echo "$3" > "$1" &&
|
echo "$3" > "$1" &&
|
||||||
git add "$1" &&
|
git add "$1" &&
|
||||||
|
11
t/lib-prereq-FILEMODE.sh
Normal file
11
t/lib-prereq-FILEMODE.sh
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2010 Ævar Arnfjörð Bjarmason
|
||||||
|
#
|
||||||
|
|
||||||
|
if test "$(git config --bool core.filemode)" = false
|
||||||
|
then
|
||||||
|
say 'filemode disabled on the filesystem'
|
||||||
|
else
|
||||||
|
test_set_prereq FILEMODE
|
||||||
|
fi
|
@ -54,9 +54,40 @@ test_expect_success 'success is reported like this' '
|
|||||||
test_expect_failure 'pretend we have a known breakage' '
|
test_expect_failure 'pretend we have a known breakage' '
|
||||||
false
|
false
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pretend we have fixed a known breakage (run in sub test-lib)' "
|
||||||
|
mkdir passing-todo &&
|
||||||
|
(cd passing-todo &&
|
||||||
|
cat >passing-todo.sh <<EOF &&
|
||||||
|
#!$SHELL_PATH
|
||||||
|
|
||||||
|
test_description='A passing TODO test
|
||||||
|
|
||||||
|
This is run in a sub test-lib so that we do not get incorrect passing
|
||||||
|
metrics
|
||||||
|
'
|
||||||
|
|
||||||
|
# Point to the t/test-lib.sh, which isn't in ../ as usual
|
||||||
|
TEST_DIRECTORY=\"$TEST_DIRECTORY\"
|
||||||
|
. \"\$TEST_DIRECTORY\"/test-lib.sh
|
||||||
|
|
||||||
test_expect_failure 'pretend we have fixed a known breakage' '
|
test_expect_failure 'pretend we have fixed a known breakage' '
|
||||||
:
|
:
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_done
|
||||||
|
EOF
|
||||||
|
chmod +x passing-todo.sh &&
|
||||||
|
./passing-todo.sh >out 2>err &&
|
||||||
|
! test -s err &&
|
||||||
|
cat >expect <<EOF &&
|
||||||
|
ok 1 - pretend we have fixed a known breakage # TODO known breakage
|
||||||
|
# fixed 1 known breakage(s)
|
||||||
|
# passed all 1 test(s)
|
||||||
|
1..1
|
||||||
|
EOF
|
||||||
|
test_cmp expect out)
|
||||||
|
"
|
||||||
test_set_prereq HAVEIT
|
test_set_prereq HAVEIT
|
||||||
haveit=no
|
haveit=no
|
||||||
test_expect_success HAVEIT 'test runs if prerequisite is satisfied' '
|
test_expect_success HAVEIT 'test runs if prerequisite is satisfied' '
|
||||||
@ -73,6 +104,27 @@ then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
test_set_prereq HAVETHIS
|
||||||
|
haveit=no
|
||||||
|
test_expect_success HAVETHIS,HAVEIT 'test runs if prerequisites are satisfied' '
|
||||||
|
test_have_prereq HAVEIT &&
|
||||||
|
test_have_prereq HAVETHIS &&
|
||||||
|
haveit=yes
|
||||||
|
'
|
||||||
|
donthaveit=yes
|
||||||
|
test_expect_success HAVEIT,DONTHAVEIT 'unmet prerequisites causes test to be skipped' '
|
||||||
|
donthaveit=no
|
||||||
|
'
|
||||||
|
donthaveiteither=yes
|
||||||
|
test_expect_success DONTHAVEIT,HAVEIT 'unmet prerequisites causes test to be skipped' '
|
||||||
|
donthaveiteither=no
|
||||||
|
'
|
||||||
|
if test $haveit$donthaveit$donthaveiteither != yesyesyes
|
||||||
|
then
|
||||||
|
say "bug in test framework: multiple prerequisite tags do not work reliably"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
clean=no
|
clean=no
|
||||||
test_expect_success 'tests clean up after themselves' '
|
test_expect_success 'tests clean up after themselves' '
|
||||||
test_when_finished clean=yes
|
test_when_finished clean=yes
|
||||||
|
@ -171,8 +171,6 @@ test_expect_success 'init with init.templatedir set' '
|
|||||||
mkdir templatedir-source &&
|
mkdir templatedir-source &&
|
||||||
echo Content >templatedir-source/file &&
|
echo Content >templatedir-source/file &&
|
||||||
(
|
(
|
||||||
HOME="`pwd`" &&
|
|
||||||
export HOME &&
|
|
||||||
test_config="${HOME}/.gitconfig" &&
|
test_config="${HOME}/.gitconfig" &&
|
||||||
git config -f "$test_config" init.templatedir "${HOME}/templatedir-source" &&
|
git config -f "$test_config" init.templatedir "${HOME}/templatedir-source" &&
|
||||||
mkdir templatedir-set &&
|
mkdir templatedir-set &&
|
||||||
@ -188,8 +186,6 @@ test_expect_success 'init with init.templatedir set' '
|
|||||||
|
|
||||||
test_expect_success 'init --bare/--shared overrides system/global config' '
|
test_expect_success 'init --bare/--shared overrides system/global config' '
|
||||||
(
|
(
|
||||||
HOME="`pwd`" &&
|
|
||||||
export HOME &&
|
|
||||||
test_config="$HOME"/.gitconfig &&
|
test_config="$HOME"/.gitconfig &&
|
||||||
unset GIT_CONFIG_NOGLOBAL &&
|
unset GIT_CONFIG_NOGLOBAL &&
|
||||||
git config -f "$test_config" core.bare false &&
|
git config -f "$test_config" core.bare false &&
|
||||||
@ -205,8 +201,6 @@ test_expect_success 'init --bare/--shared overrides system/global config' '
|
|||||||
|
|
||||||
test_expect_success 'init honors global core.sharedRepository' '
|
test_expect_success 'init honors global core.sharedRepository' '
|
||||||
(
|
(
|
||||||
HOME="`pwd`" &&
|
|
||||||
export HOME &&
|
|
||||||
test_config="$HOME"/.gitconfig &&
|
test_config="$HOME"/.gitconfig &&
|
||||||
unset GIT_CONFIG_NOGLOBAL &&
|
unset GIT_CONFIG_NOGLOBAL &&
|
||||||
git config -f "$test_config" core.sharedRepository 0666 &&
|
git config -f "$test_config" core.sharedRepository 0666 &&
|
||||||
@ -301,7 +295,7 @@ test_expect_success 'init notices EEXIST (2)' '
|
|||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'init notices EPERM' '
|
test_expect_success POSIXPERM,SANITY 'init notices EPERM' '
|
||||||
rm -fr newdir &&
|
rm -fr newdir &&
|
||||||
(
|
(
|
||||||
mkdir newdir &&
|
mkdir newdir &&
|
||||||
|
@ -15,7 +15,7 @@ test_expect_success setup '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'write-tree should notice unwritable repository' '
|
test_expect_success POSIXPERM,SANITY 'write-tree should notice unwritable repository' '
|
||||||
|
|
||||||
(
|
(
|
||||||
chmod a-w .git/objects .git/objects/?? &&
|
chmod a-w .git/objects .git/objects/?? &&
|
||||||
@ -27,7 +27,7 @@ test_expect_success POSIXPERM 'write-tree should notice unwritable repository' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'commit should notice unwritable repository' '
|
test_expect_success POSIXPERM,SANITY 'commit should notice unwritable repository' '
|
||||||
|
|
||||||
(
|
(
|
||||||
chmod a-w .git/objects .git/objects/?? &&
|
chmod a-w .git/objects .git/objects/?? &&
|
||||||
@ -39,7 +39,7 @@ test_expect_success POSIXPERM 'commit should notice unwritable repository' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'update-index should notice unwritable repository' '
|
test_expect_success POSIXPERM,SANITY 'update-index should notice unwritable repository' '
|
||||||
|
|
||||||
(
|
(
|
||||||
echo 6O >file &&
|
echo 6O >file &&
|
||||||
@ -52,7 +52,7 @@ test_expect_success POSIXPERM 'update-index should notice unwritable repository'
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'add should notice unwritable repository' '
|
test_expect_success POSIXPERM,SANITY 'add should notice unwritable repository' '
|
||||||
|
|
||||||
(
|
(
|
||||||
echo b >file &&
|
echo b >file &&
|
||||||
|
@ -177,7 +177,7 @@ test_expect_success SYMLINKS 'funny symlink in work tree' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success SYMLINKS 'funny symlink in work tree, un-unlink-able' '
|
test_expect_success SYMLINKS,SANITY 'funny symlink in work tree, un-unlink-able' '
|
||||||
|
|
||||||
rm -fr a b &&
|
rm -fr a b &&
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
|
@ -18,9 +18,11 @@ umask 077
|
|||||||
setfacl_out="$(setfacl -m u:root:rwx . 2>&1)"
|
setfacl_out="$(setfacl -m u:root:rwx . 2>&1)"
|
||||||
setfacl_ret=$?
|
setfacl_ret=$?
|
||||||
|
|
||||||
if [ $setfacl_ret != 0 ]; then
|
if test $setfacl_ret != 0
|
||||||
skip_all="Skipping ACL tests: unable to use setfacl (output: '$setfacl_out'; return code: '$setfacl_ret')"
|
then
|
||||||
test_done
|
say "Unable to use setfacl (output: '$setfacl_out'; return code: '$setfacl_ret')"
|
||||||
|
else
|
||||||
|
test_set_prereq SETFACL
|
||||||
fi
|
fi
|
||||||
|
|
||||||
check_perms_and_acl () {
|
check_perms_and_acl () {
|
||||||
@ -34,7 +36,7 @@ check_perms_and_acl () {
|
|||||||
|
|
||||||
dirs_to_set="./ .git/ .git/objects/ .git/objects/pack/"
|
dirs_to_set="./ .git/ .git/objects/ .git/objects/pack/"
|
||||||
|
|
||||||
test_expect_success 'Setup test repo' '
|
test_expect_success SETFACL 'Setup test repo' '
|
||||||
setfacl -m d:u::rwx,d:g::---,d:o:---,d:m:rwx $dirs_to_set &&
|
setfacl -m d:u::rwx,d:g::---,d:o:---,d:m:rwx $dirs_to_set &&
|
||||||
setfacl -m m:rwx $dirs_to_set &&
|
setfacl -m m:rwx $dirs_to_set &&
|
||||||
setfacl -m u:root:rwx $dirs_to_set &&
|
setfacl -m u:root:rwx $dirs_to_set &&
|
||||||
@ -46,12 +48,12 @@ test_expect_success 'Setup test repo' '
|
|||||||
git commit -m "init"
|
git commit -m "init"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Objects creation does not break ACLs with restrictive umask' '
|
test_expect_success SETFACL 'Objects creation does not break ACLs with restrictive umask' '
|
||||||
# SHA1 for empty blob
|
# SHA1 for empty blob
|
||||||
check_perms_and_acl .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
|
check_perms_and_acl .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git gc does not break ACLs with restrictive umask' '
|
test_expect_success SETFACL 'git gc does not break ACLs with restrictive umask' '
|
||||||
git gc &&
|
git gc &&
|
||||||
check_perms_and_acl .git/objects/pack/*.pack
|
check_perms_and_acl .git/objects/pack/*.pack
|
||||||
'
|
'
|
||||||
|
@ -6,13 +6,7 @@ test_description='git checkout to switch between branches with symlink<->dir'
|
|||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq SYMLINKS
|
test_expect_success SYMLINKS setup '
|
||||||
then
|
|
||||||
skip_all="symbolic links not supported - skipping tests"
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success setup '
|
|
||||||
|
|
||||||
mkdir frotz &&
|
mkdir frotz &&
|
||||||
echo hello >frotz/filfre &&
|
echo hello >frotz/filfre &&
|
||||||
@ -38,18 +32,18 @@ test_expect_success setup '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'switch from symlink to dir' '
|
test_expect_success SYMLINKS 'switch from symlink to dir' '
|
||||||
|
|
||||||
git checkout master
|
git checkout master
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Remove temporary directories & switch to master' '
|
test_expect_success SYMLINKS 'Remove temporary directories & switch to master' '
|
||||||
rm -fr frotz xyzzy nitfol &&
|
rm -fr frotz xyzzy nitfol &&
|
||||||
git checkout -f master
|
git checkout -f master
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'switch from dir to symlink' '
|
test_expect_success SYMLINKS 'switch from dir to symlink' '
|
||||||
|
|
||||||
git checkout side
|
git checkout side
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ test_description='git checkout --patch'
|
|||||||
|
|
||||||
. ./lib-patch-mode.sh
|
. ./lib-patch-mode.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success PERL 'setup' '
|
||||||
mkdir dir &&
|
mkdir dir &&
|
||||||
echo parent > dir/foo &&
|
echo parent > dir/foo &&
|
||||||
echo dummy > bar &&
|
echo dummy > bar &&
|
||||||
@ -18,40 +18,40 @@ test_expect_success 'setup' '
|
|||||||
|
|
||||||
# note: bar sorts before dir/foo, so the first 'n' is always to skip 'bar'
|
# note: bar sorts before dir/foo, so the first 'n' is always to skip 'bar'
|
||||||
|
|
||||||
test_expect_success 'saying "n" does nothing' '
|
test_expect_success PERL 'saying "n" does nothing' '
|
||||||
set_and_save_state dir/foo work head &&
|
set_and_save_state dir/foo work head &&
|
||||||
(echo n; echo n) | git checkout -p &&
|
(echo n; echo n) | git checkout -p &&
|
||||||
verify_saved_state bar &&
|
verify_saved_state bar &&
|
||||||
verify_saved_state dir/foo
|
verify_saved_state dir/foo
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git checkout -p' '
|
test_expect_success PERL 'git checkout -p' '
|
||||||
(echo n; echo y) | git checkout -p &&
|
(echo n; echo y) | git checkout -p &&
|
||||||
verify_saved_state bar &&
|
verify_saved_state bar &&
|
||||||
verify_state dir/foo head head
|
verify_state dir/foo head head
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git checkout -p with staged changes' '
|
test_expect_success PERL 'git checkout -p with staged changes' '
|
||||||
set_state dir/foo work index
|
set_state dir/foo work index
|
||||||
(echo n; echo y) | git checkout -p &&
|
(echo n; echo y) | git checkout -p &&
|
||||||
verify_saved_state bar &&
|
verify_saved_state bar &&
|
||||||
verify_state dir/foo index index
|
verify_state dir/foo index index
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git checkout -p HEAD with NO staged changes: abort' '
|
test_expect_success PERL 'git checkout -p HEAD with NO staged changes: abort' '
|
||||||
set_and_save_state dir/foo work head &&
|
set_and_save_state dir/foo work head &&
|
||||||
(echo n; echo y; echo n) | git checkout -p HEAD &&
|
(echo n; echo y; echo n) | git checkout -p HEAD &&
|
||||||
verify_saved_state bar &&
|
verify_saved_state bar &&
|
||||||
verify_saved_state dir/foo
|
verify_saved_state dir/foo
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git checkout -p HEAD with NO staged changes: apply' '
|
test_expect_success PERL 'git checkout -p HEAD with NO staged changes: apply' '
|
||||||
(echo n; echo y; echo y) | git checkout -p HEAD &&
|
(echo n; echo y; echo y) | git checkout -p HEAD &&
|
||||||
verify_saved_state bar &&
|
verify_saved_state bar &&
|
||||||
verify_state dir/foo head head
|
verify_state dir/foo head head
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git checkout -p HEAD with change already staged' '
|
test_expect_success PERL 'git checkout -p HEAD with change already staged' '
|
||||||
set_state dir/foo index index
|
set_state dir/foo index index
|
||||||
# the third n is to get out in case it mistakenly does not apply
|
# the third n is to get out in case it mistakenly does not apply
|
||||||
(echo n; echo y; echo n) | git checkout -p HEAD &&
|
(echo n; echo y; echo n) | git checkout -p HEAD &&
|
||||||
@ -59,14 +59,14 @@ test_expect_success 'git checkout -p HEAD with change already staged' '
|
|||||||
verify_state dir/foo head head
|
verify_state dir/foo head head
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git checkout -p HEAD^' '
|
test_expect_success PERL 'git checkout -p HEAD^' '
|
||||||
# the third n is to get out in case it mistakenly does not apply
|
# the third n is to get out in case it mistakenly does not apply
|
||||||
(echo n; echo y; echo n) | git checkout -p HEAD^ &&
|
(echo n; echo y; echo n) | git checkout -p HEAD^ &&
|
||||||
verify_saved_state bar &&
|
verify_saved_state bar &&
|
||||||
verify_state dir/foo parent parent
|
verify_state dir/foo parent parent
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git checkout -p handles deletion' '
|
test_expect_success PERL 'git checkout -p handles deletion' '
|
||||||
set_state dir/foo work index &&
|
set_state dir/foo work index &&
|
||||||
rm dir/foo &&
|
rm dir/foo &&
|
||||||
(echo n; echo y) | git checkout -p &&
|
(echo n; echo y) | git checkout -p &&
|
||||||
@ -79,28 +79,28 @@ test_expect_success 'git checkout -p handles deletion' '
|
|||||||
# dir/foo. There's always an extra 'n' to reject edits to dir/foo in
|
# dir/foo. There's always an extra 'n' to reject edits to dir/foo in
|
||||||
# the failure case (and thus get out of the loop).
|
# the failure case (and thus get out of the loop).
|
||||||
|
|
||||||
test_expect_success 'path limiting works: dir' '
|
test_expect_success PERL 'path limiting works: dir' '
|
||||||
set_state dir/foo work head &&
|
set_state dir/foo work head &&
|
||||||
(echo y; echo n) | git checkout -p dir &&
|
(echo y; echo n) | git checkout -p dir &&
|
||||||
verify_saved_state bar &&
|
verify_saved_state bar &&
|
||||||
verify_state dir/foo head head
|
verify_state dir/foo head head
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'path limiting works: -- dir' '
|
test_expect_success PERL 'path limiting works: -- dir' '
|
||||||
set_state dir/foo work head &&
|
set_state dir/foo work head &&
|
||||||
(echo y; echo n) | git checkout -p -- dir &&
|
(echo y; echo n) | git checkout -p -- dir &&
|
||||||
verify_saved_state bar &&
|
verify_saved_state bar &&
|
||||||
verify_state dir/foo head head
|
verify_state dir/foo head head
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'path limiting works: HEAD^ -- dir' '
|
test_expect_success PERL 'path limiting works: HEAD^ -- dir' '
|
||||||
# the third n is to get out in case it mistakenly does not apply
|
# the third n is to get out in case it mistakenly does not apply
|
||||||
(echo y; echo n; echo n) | git checkout -p HEAD^ -- dir &&
|
(echo y; echo n; echo n) | git checkout -p HEAD^ -- dir &&
|
||||||
verify_saved_state bar &&
|
verify_saved_state bar &&
|
||||||
verify_state dir/foo parent parent
|
verify_state dir/foo parent parent
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'path limiting works: foo inside dir' '
|
test_expect_success PERL 'path limiting works: foo inside dir' '
|
||||||
set_state dir/foo work head &&
|
set_state dir/foo work head &&
|
||||||
# the third n is to get out in case it mistakenly does not apply
|
# the third n is to get out in case it mistakenly does not apply
|
||||||
(echo y; echo n; echo n) | (cd dir && git checkout -p foo) &&
|
(echo y; echo n; echo n) | (cd dir && git checkout -p foo) &&
|
||||||
@ -108,7 +108,7 @@ test_expect_success 'path limiting works: foo inside dir' '
|
|||||||
verify_state dir/foo head head
|
verify_state dir/foo head head
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'none of this moved HEAD' '
|
test_expect_success PERL 'none of this moved HEAD' '
|
||||||
verify_saved_head
|
verify_saved_head
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -24,19 +24,25 @@ EOF
|
|||||||
cat 2>/dev/null >"$p1" "$p0"
|
cat 2>/dev/null >"$p1" "$p0"
|
||||||
echo 'Foo Bar Baz' >"$p2"
|
echo 'Foo Bar Baz' >"$p2"
|
||||||
|
|
||||||
test -f "$p1" && cmp "$p0" "$p1" || {
|
if test -f "$p1" && cmp "$p0" "$p1"
|
||||||
|
then
|
||||||
|
test_set_prereq TABS_IN_FILENAMES
|
||||||
|
else
|
||||||
# since FAT/NTFS does not allow tabs in filenames, skip this test
|
# since FAT/NTFS does not allow tabs in filenames, skip this test
|
||||||
skip_all='Your filesystem does not allow tabs in filenames, test skipped.'
|
say 'Your filesystem does not allow tabs in filenames'
|
||||||
test_done
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expect' "
|
||||||
echo 'just space
|
echo 'just space
|
||||||
no-funny' >expected
|
no-funny' >expected
|
||||||
test_expect_success 'git ls-files no-funny' \
|
"
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git ls-files no-funny' \
|
||||||
'git update-index --add "$p0" "$p2" &&
|
'git update-index --add "$p0" "$p2" &&
|
||||||
git ls-files >current &&
|
git ls-files >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expect' '
|
||||||
t0=`git write-tree`
|
t0=`git write-tree`
|
||||||
echo "$t0" >t0
|
echo "$t0" >t0
|
||||||
|
|
||||||
@ -45,18 +51,24 @@ just space
|
|||||||
no-funny
|
no-funny
|
||||||
"tabs\t,\" (dq) and spaces"
|
"tabs\t,\" (dq) and spaces"
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'git ls-files with-funny' \
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git ls-files with-funny' \
|
||||||
'git update-index --add "$p1" &&
|
'git update-index --add "$p1" &&
|
||||||
git ls-files >current &&
|
git ls-files >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expect' "
|
||||||
echo 'just space
|
echo 'just space
|
||||||
no-funny
|
no-funny
|
||||||
tabs ," (dq) and spaces' >expected
|
tabs ,\" (dq) and spaces' >expected
|
||||||
test_expect_success 'git ls-files -z with-funny' \
|
"
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git ls-files -z with-funny' \
|
||||||
'git ls-files -z | perl -pe y/\\000/\\012/ >current &&
|
'git ls-files -z | perl -pe y/\\000/\\012/ >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expect' '
|
||||||
t1=`git write-tree`
|
t1=`git write-tree`
|
||||||
echo "$t1" >t1
|
echo "$t1" >t1
|
||||||
|
|
||||||
@ -65,60 +77,78 @@ just space
|
|||||||
no-funny
|
no-funny
|
||||||
"tabs\t,\" (dq) and spaces"
|
"tabs\t,\" (dq) and spaces"
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'git ls-tree with funny' \
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git ls-tree with funny' \
|
||||||
'git ls-tree -r $t1 | sed -e "s/^[^ ]* //" >current &&
|
'git ls-tree -r $t1 | sed -e "s/^[^ ]* //" >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expect' '
|
||||||
cat > expected <<\EOF
|
cat > expected <<\EOF
|
||||||
A "tabs\t,\" (dq) and spaces"
|
A "tabs\t,\" (dq) and spaces"
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'git diff-index with-funny' \
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git diff-index with-funny' \
|
||||||
'git diff-index --name-status $t0 >current &&
|
'git diff-index --name-status $t0 >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
test_expect_success 'git diff-tree with-funny' \
|
test_expect_success TABS_IN_FILENAMES 'git diff-tree with-funny' \
|
||||||
'git diff-tree --name-status $t0 $t1 >current &&
|
'git diff-tree --name-status $t0 $t1 >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expect' "
|
||||||
echo 'A
|
echo 'A
|
||||||
tabs ," (dq) and spaces' >expected
|
tabs ,\" (dq) and spaces' >expected
|
||||||
test_expect_success 'git diff-index -z with-funny' \
|
"
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git diff-index -z with-funny' \
|
||||||
'git diff-index -z --name-status $t0 | perl -pe y/\\000/\\012/ >current &&
|
'git diff-index -z --name-status $t0 | perl -pe y/\\000/\\012/ >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
test_expect_success 'git diff-tree -z with-funny' \
|
test_expect_success TABS_IN_FILENAMES 'git diff-tree -z with-funny' \
|
||||||
'git diff-tree -z --name-status $t0 $t1 | perl -pe y/\\000/\\012/ >current &&
|
'git diff-tree -z --name-status $t0 $t1 | perl -pe y/\\000/\\012/ >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expect' '
|
||||||
cat > expected <<\EOF
|
cat > expected <<\EOF
|
||||||
CNUM no-funny "tabs\t,\" (dq) and spaces"
|
CNUM no-funny "tabs\t,\" (dq) and spaces"
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'git diff-tree -C with-funny' \
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git diff-tree -C with-funny' \
|
||||||
'git diff-tree -C --find-copies-harder --name-status \
|
'git diff-tree -C --find-copies-harder --name-status \
|
||||||
$t0 $t1 | sed -e 's/^C[0-9]*/CNUM/' >current &&
|
$t0 $t1 | sed -e 's/^C[0-9]*/CNUM/' >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expect' '
|
||||||
cat > expected <<\EOF
|
cat > expected <<\EOF
|
||||||
RNUM no-funny "tabs\t,\" (dq) and spaces"
|
RNUM no-funny "tabs\t,\" (dq) and spaces"
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'git diff-tree delete with-funny' \
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git diff-tree delete with-funny' \
|
||||||
'git update-index --force-remove "$p0" &&
|
'git update-index --force-remove "$p0" &&
|
||||||
git diff-index -M --name-status \
|
git diff-index -M --name-status \
|
||||||
$t0 | sed -e 's/^R[0-9]*/RNUM/' >current &&
|
$t0 | sed -e 's/^R[0-9]*/RNUM/' >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expect' '
|
||||||
cat > expected <<\EOF
|
cat > expected <<\EOF
|
||||||
diff --git a/no-funny "b/tabs\t,\" (dq) and spaces"
|
diff --git a/no-funny "b/tabs\t,\" (dq) and spaces"
|
||||||
similarity index NUM%
|
similarity index NUM%
|
||||||
rename from no-funny
|
rename from no-funny
|
||||||
rename to "tabs\t,\" (dq) and spaces"
|
rename to "tabs\t,\" (dq) and spaces"
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'git diff-tree delete with-funny' \
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git diff-tree delete with-funny' \
|
||||||
'git diff-index -M -p $t0 |
|
'git diff-index -M -p $t0 |
|
||||||
sed -e "s/index [0-9]*%/index NUM%/" >current &&
|
sed -e "s/index [0-9]*%/index NUM%/" >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
chmod +x "$p1"
|
test_expect_success TABS_IN_FILENAMES 'setup expect' '
|
||||||
|
chmod +x "$p1" &&
|
||||||
cat > expected <<\EOF
|
cat > expected <<\EOF
|
||||||
diff --git a/no-funny "b/tabs\t,\" (dq) and spaces"
|
diff --git a/no-funny "b/tabs\t,\" (dq) and spaces"
|
||||||
old mode 100644
|
old mode 100644
|
||||||
@ -127,31 +157,39 @@ similarity index NUM%
|
|||||||
rename from no-funny
|
rename from no-funny
|
||||||
rename to "tabs\t,\" (dq) and spaces"
|
rename to "tabs\t,\" (dq) and spaces"
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'git diff-tree delete with-funny' \
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git diff-tree delete with-funny' \
|
||||||
'git diff-index -M -p $t0 |
|
'git diff-index -M -p $t0 |
|
||||||
sed -e "s/index [0-9]*%/index NUM%/" >current &&
|
sed -e "s/index [0-9]*%/index NUM%/" >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expect' '
|
||||||
cat >expected <<\EOF
|
cat >expected <<\EOF
|
||||||
"tabs\t,\" (dq) and spaces"
|
"tabs\t,\" (dq) and spaces"
|
||||||
1 files changed, 0 insertions(+), 0 deletions(-)
|
1 files changed, 0 insertions(+), 0 deletions(-)
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'git diff-tree rename with-funny applied' \
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git diff-tree rename with-funny applied' \
|
||||||
'git diff-index -M -p $t0 |
|
'git diff-index -M -p $t0 |
|
||||||
git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
|
git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expect' '
|
||||||
cat > expected <<\EOF
|
cat > expected <<\EOF
|
||||||
no-funny
|
no-funny
|
||||||
"tabs\t,\" (dq) and spaces"
|
"tabs\t,\" (dq) and spaces"
|
||||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'git diff-tree delete with-funny applied' \
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git diff-tree delete with-funny applied' \
|
||||||
'git diff-index -p $t0 |
|
'git diff-index -p $t0 |
|
||||||
git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
|
git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
|
||||||
test_cmp expected current'
|
test_cmp expected current'
|
||||||
|
|
||||||
test_expect_success 'git apply non-git diff' \
|
test_expect_success TABS_IN_FILENAMES 'git apply non-git diff' \
|
||||||
'git diff-index -p $t0 |
|
'git diff-index -p $t0 |
|
||||||
sed -ne "/^[-+@]/p" |
|
sed -ne "/^[-+@]/p" |
|
||||||
git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
|
git apply --stat | sed -e "s/|.*//" -e "s/ *\$//" >current &&
|
||||||
|
@ -7,11 +7,9 @@ test_description='Test commit notes index (expensive!)'
|
|||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test -z "$GIT_NOTES_TIMING_TESTS" && {
|
test_set_prereq NOT_EXPENSIVE
|
||||||
skip_all="Skipping timing tests"
|
test -n "$GIT_NOTES_TIMING_TESTS" && test_set_prereq EXPENSIVE
|
||||||
test_done
|
test -x /usr/bin/time && test_set_prereq USR_BIN_TIME
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
create_repo () {
|
create_repo () {
|
||||||
number_of_commits=$1
|
number_of_commits=$1
|
||||||
@ -102,17 +100,27 @@ time_notes () {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
for count in 10 100 1000 10000; do
|
do_tests () {
|
||||||
|
pr=$1
|
||||||
|
count=$2
|
||||||
|
|
||||||
mkdir $count
|
test_expect_success $pr 'setup / mkdir' '
|
||||||
(cd $count;
|
mkdir $count &&
|
||||||
|
cd $count
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success "setup $count" "create_repo $count"
|
test_expect_success $pr "setup $count" "create_repo $count"
|
||||||
|
|
||||||
test_expect_success 'notes work' "test_notes $count"
|
test_expect_success $pr 'notes work' "test_notes $count"
|
||||||
|
|
||||||
test_expect_success 'notes timing' "time_notes 100"
|
test_expect_success USR_BIN_TIME,$pr 'notes timing with /usr/bin/time' "time_notes 100"
|
||||||
)
|
|
||||||
|
test_expect_success $pr 'teardown / cd ..' 'cd ..'
|
||||||
|
}
|
||||||
|
|
||||||
|
do_tests NOT_EXPENSIVE 10
|
||||||
|
for count in 100 1000 10000; do
|
||||||
|
do_tests EXPENSIVE $count
|
||||||
done
|
done
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
@ -28,22 +28,6 @@ embedded' &&
|
|||||||
git commit -m 'add files with tabs and newlines'
|
git commit -m 'add files with tabs and newlines'
|
||||||
"
|
"
|
||||||
|
|
||||||
# Determine rm behavior
|
|
||||||
# Later we will try removing an unremovable path to make sure
|
|
||||||
# git rm barfs, but if the test is run as root that cannot be
|
|
||||||
# arranged.
|
|
||||||
: >test-file
|
|
||||||
chmod a-w .
|
|
||||||
rm -f test-file 2>/dev/null
|
|
||||||
if test -f test-file
|
|
||||||
then
|
|
||||||
test_set_prereq RO_DIR
|
|
||||||
else
|
|
||||||
skip_all='skipping removal failure test (perhaps running as root?)'
|
|
||||||
fi
|
|
||||||
chmod 775 .
|
|
||||||
rm -f test-file
|
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success \
|
||||||
'Pre-check that foo exists and is in index before git rm foo' \
|
'Pre-check that foo exists and is in index before git rm foo' \
|
||||||
'[ -f foo ] && git ls-files --error-unmatch foo'
|
'[ -f foo ] && git ls-files --error-unmatch foo'
|
||||||
|
@ -179,7 +179,7 @@ test_expect_success 'git add --refresh' '
|
|||||||
test -z "`git diff-index HEAD -- foo`"
|
test -z "`git diff-index HEAD -- foo`"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'git add should fail atomically upon an unreadable file' '
|
test_expect_success POSIXPERM,SANITY 'git add should fail atomically upon an unreadable file' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
date >foo1 &&
|
date >foo1 &&
|
||||||
date >foo2 &&
|
date >foo2 &&
|
||||||
@ -190,7 +190,7 @@ test_expect_success POSIXPERM 'git add should fail atomically upon an unreadable
|
|||||||
|
|
||||||
rm -f foo2
|
rm -f foo2
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'git add --ignore-errors' '
|
test_expect_success POSIXPERM,SANITY 'git add --ignore-errors' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
date >foo1 &&
|
date >foo1 &&
|
||||||
date >foo2 &&
|
date >foo2 &&
|
||||||
@ -201,7 +201,7 @@ test_expect_success POSIXPERM 'git add --ignore-errors' '
|
|||||||
|
|
||||||
rm -f foo2
|
rm -f foo2
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'git add (add.ignore-errors)' '
|
test_expect_success POSIXPERM,SANITY 'git add (add.ignore-errors)' '
|
||||||
git config add.ignore-errors 1 &&
|
git config add.ignore-errors 1 &&
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
date >foo1 &&
|
date >foo1 &&
|
||||||
@ -212,7 +212,7 @@ test_expect_success POSIXPERM 'git add (add.ignore-errors)' '
|
|||||||
'
|
'
|
||||||
rm -f foo2
|
rm -f foo2
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'git add (add.ignore-errors = false)' '
|
test_expect_success POSIXPERM,SANITY 'git add (add.ignore-errors = false)' '
|
||||||
git config add.ignore-errors 0 &&
|
git config add.ignore-errors 0 &&
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
date >foo1 &&
|
date >foo1 &&
|
||||||
@ -223,7 +223,7 @@ test_expect_success POSIXPERM 'git add (add.ignore-errors = false)' '
|
|||||||
'
|
'
|
||||||
rm -f foo2
|
rm -f foo2
|
||||||
|
|
||||||
test_expect_success POSIXPERM '--no-ignore-errors overrides config' '
|
test_expect_success POSIXPERM,SANITY '--no-ignore-errors overrides config' '
|
||||||
git config add.ignore-errors 1 &&
|
git config add.ignore-errors 1 &&
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
date >foo1 &&
|
date >foo1 &&
|
||||||
|
@ -2,22 +2,20 @@
|
|||||||
|
|
||||||
test_description='add -i basic tests'
|
test_description='add -i basic tests'
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
. "$TEST_DIRECTORY"/lib-prereq-FILEMODE.sh
|
||||||
|
|
||||||
if ! test_have_prereq PERL; then
|
test_expect_success PERL 'setup (initial)' '
|
||||||
skip_all='skipping git add -i tests, perl not available'
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success 'setup (initial)' '
|
|
||||||
echo content >file &&
|
echo content >file &&
|
||||||
git add file &&
|
git add file &&
|
||||||
echo more >>file &&
|
echo more >>file &&
|
||||||
echo lines >>file
|
echo lines >>file
|
||||||
'
|
'
|
||||||
test_expect_success 'status works (initial)' '
|
test_expect_success PERL 'status works (initial)' '
|
||||||
git add -i </dev/null >output &&
|
git add -i </dev/null >output &&
|
||||||
grep "+1/-0 *+2/-0 file" output
|
grep "+1/-0 *+2/-0 file" output
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'setup expected' '
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..d95f3ad
|
index 0000000..d95f3ad
|
||||||
@ -26,19 +24,21 @@ index 0000000..d95f3ad
|
|||||||
@@ -0,0 +1 @@
|
@@ -0,0 +1 @@
|
||||||
+content
|
+content
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'diff works (initial)' '
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'diff works (initial)' '
|
||||||
(echo d; echo 1) | git add -i >output &&
|
(echo d; echo 1) | git add -i >output &&
|
||||||
sed -ne "/new file/,/content/p" <output >diff &&
|
sed -ne "/new file/,/content/p" <output >diff &&
|
||||||
test_cmp expected diff
|
test_cmp expected diff
|
||||||
'
|
'
|
||||||
test_expect_success 'revert works (initial)' '
|
test_expect_success PERL 'revert works (initial)' '
|
||||||
git add file &&
|
git add file &&
|
||||||
(echo r; echo 1) | git add -i &&
|
(echo r; echo 1) | git add -i &&
|
||||||
git ls-files >output &&
|
git ls-files >output &&
|
||||||
! grep . output
|
! grep . output
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'setup (commit)' '
|
test_expect_success PERL 'setup (commit)' '
|
||||||
echo baseline >file &&
|
echo baseline >file &&
|
||||||
git add file &&
|
git add file &&
|
||||||
git commit -m commit &&
|
git commit -m commit &&
|
||||||
@ -47,10 +47,12 @@ test_expect_success 'setup (commit)' '
|
|||||||
echo more >>file &&
|
echo more >>file &&
|
||||||
echo lines >>file
|
echo lines >>file
|
||||||
'
|
'
|
||||||
test_expect_success 'status works (commit)' '
|
test_expect_success PERL 'status works (commit)' '
|
||||||
git add -i </dev/null >output &&
|
git add -i </dev/null >output &&
|
||||||
grep "+1/-0 *+2/-0 file" output
|
grep "+1/-0 *+2/-0 file" output
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'setup expected' '
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
index 180b47c..b6f2c08 100644
|
index 180b47c..b6f2c08 100644
|
||||||
--- a/file
|
--- a/file
|
||||||
@ -59,60 +61,79 @@ index 180b47c..b6f2c08 100644
|
|||||||
baseline
|
baseline
|
||||||
+content
|
+content
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'diff works (commit)' '
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'diff works (commit)' '
|
||||||
(echo d; echo 1) | git add -i >output &&
|
(echo d; echo 1) | git add -i >output &&
|
||||||
sed -ne "/^index/,/content/p" <output >diff &&
|
sed -ne "/^index/,/content/p" <output >diff &&
|
||||||
test_cmp expected diff
|
test_cmp expected diff
|
||||||
'
|
'
|
||||||
test_expect_success 'revert works (commit)' '
|
test_expect_success PERL 'revert works (commit)' '
|
||||||
git add file &&
|
git add file &&
|
||||||
(echo r; echo 1) | git add -i &&
|
(echo r; echo 1) | git add -i &&
|
||||||
git add -i </dev/null >output &&
|
git add -i </dev/null >output &&
|
||||||
grep "unchanged *+3/-0 file" output
|
grep "unchanged *+3/-0 file" output
|
||||||
'
|
'
|
||||||
|
|
||||||
|
|
||||||
|
test_expect_success PERL 'setup expected' '
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
EOF
|
EOF
|
||||||
cat >fake_editor.sh <<EOF
|
'
|
||||||
EOF
|
|
||||||
chmod a+x fake_editor.sh
|
test_expect_success PERL 'setup fake editor' '
|
||||||
test_set_editor "$(pwd)/fake_editor.sh"
|
cat >fake_editor.sh <<EOF
|
||||||
test_expect_success 'dummy edit works' '
|
EOF
|
||||||
|
chmod a+x fake_editor.sh &&
|
||||||
|
test_set_editor "$(pwd)/fake_editor.sh" &&
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'dummy edit works' '
|
||||||
(echo e; echo a) | git add -p &&
|
(echo e; echo a) | git add -p &&
|
||||||
git diff > diff &&
|
git diff > diff &&
|
||||||
test_cmp expected diff
|
test_cmp expected diff
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'setup patch' '
|
||||||
cat >patch <<EOF
|
cat >patch <<EOF
|
||||||
@@ -1,1 +1,4 @@
|
@@ -1,1 +1,4 @@
|
||||||
this
|
this
|
||||||
+patch
|
+patch
|
||||||
-doesn't
|
-does not
|
||||||
apply
|
apply
|
||||||
EOF
|
EOF
|
||||||
echo "#!$SHELL_PATH" >fake_editor.sh
|
'
|
||||||
cat >>fake_editor.sh <<\EOF
|
|
||||||
|
test_expect_success PERL 'setup fake editor' '
|
||||||
|
echo "#!$SHELL_PATH" >fake_editor.sh &&
|
||||||
|
cat >>fake_editor.sh <<\EOF &&
|
||||||
mv -f "$1" oldpatch &&
|
mv -f "$1" oldpatch &&
|
||||||
mv -f patch "$1"
|
mv -f patch "$1"
|
||||||
EOF
|
EOF
|
||||||
chmod a+x fake_editor.sh
|
chmod a+x fake_editor.sh &&
|
||||||
test_set_editor "$(pwd)/fake_editor.sh"
|
test_set_editor "$(pwd)/fake_editor.sh"
|
||||||
test_expect_success 'bad edit rejected' '
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'bad edit rejected' '
|
||||||
git reset &&
|
git reset &&
|
||||||
(echo e; echo n; echo d) | git add -p >output &&
|
(echo e; echo n; echo d) | git add -p >output &&
|
||||||
grep "hunk does not apply" output
|
grep "hunk does not apply" output
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'setup patch' '
|
||||||
cat >patch <<EOF
|
cat >patch <<EOF
|
||||||
this patch
|
this patch
|
||||||
is garbage
|
is garbage
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'garbage edit rejected' '
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'garbage edit rejected' '
|
||||||
git reset &&
|
git reset &&
|
||||||
(echo e; echo n; echo d) | git add -p >output &&
|
(echo e; echo n; echo d) | git add -p >output &&
|
||||||
grep "hunk does not apply" output
|
grep "hunk does not apply" output
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'setup patch' '
|
||||||
cat >patch <<EOF
|
cat >patch <<EOF
|
||||||
@@ -1,0 +1,0 @@
|
@@ -1,0 +1,0 @@
|
||||||
baseline
|
baseline
|
||||||
@ -120,6 +141,9 @@ cat >patch <<EOF
|
|||||||
+newcontent
|
+newcontent
|
||||||
+lines
|
+lines
|
||||||
EOF
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'setup expected' '
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
diff --git a/file b/file
|
diff --git a/file b/file
|
||||||
index b5dd6c9..f910ae9 100644
|
index b5dd6c9..f910ae9 100644
|
||||||
@ -132,13 +156,15 @@ index b5dd6c9..f910ae9 100644
|
|||||||
+more
|
+more
|
||||||
lines
|
lines
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'real edit works' '
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'real edit works' '
|
||||||
(echo e; echo n; echo d) | git add -p &&
|
(echo e; echo n; echo d) | git add -p &&
|
||||||
git diff >output &&
|
git diff >output &&
|
||||||
test_cmp expected output
|
test_cmp expected output
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'skip files similarly as commit -a' '
|
test_expect_success PERL 'skip files similarly as commit -a' '
|
||||||
git reset &&
|
git reset &&
|
||||||
echo file >.gitignore &&
|
echo file >.gitignore &&
|
||||||
echo changed >file &&
|
echo changed >file &&
|
||||||
@ -152,14 +178,7 @@ test_expect_success 'skip files similarly as commit -a' '
|
|||||||
'
|
'
|
||||||
rm -f .gitignore
|
rm -f .gitignore
|
||||||
|
|
||||||
if test "$(git config --bool core.filemode)" = false
|
test_expect_success PERL,FILEMODE 'patch does not affect mode' '
|
||||||
then
|
|
||||||
say '# skipping filemode tests (filesystem does not properly support modes)'
|
|
||||||
else
|
|
||||||
test_set_prereq FILEMODE
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success FILEMODE 'patch does not affect mode' '
|
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
echo content >>file &&
|
echo content >>file &&
|
||||||
chmod +x file &&
|
chmod +x file &&
|
||||||
@ -168,7 +187,7 @@ test_expect_success FILEMODE 'patch does not affect mode' '
|
|||||||
git diff file | grep "new mode"
|
git diff file | grep "new mode"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success FILEMODE 'stage mode but not hunk' '
|
test_expect_success PERL,FILEMODE 'stage mode but not hunk' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
echo content >>file &&
|
echo content >>file &&
|
||||||
chmod +x file &&
|
chmod +x file &&
|
||||||
@ -178,7 +197,7 @@ test_expect_success FILEMODE 'stage mode but not hunk' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
|
|
||||||
test_expect_success FILEMODE 'stage mode and hunk' '
|
test_expect_success PERL,FILEMODE 'stage mode and hunk' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
echo content >>file &&
|
echo content >>file &&
|
||||||
chmod +x file &&
|
chmod +x file &&
|
||||||
@ -190,13 +209,14 @@ test_expect_success FILEMODE 'stage mode and hunk' '
|
|||||||
|
|
||||||
# end of tests disabled when filemode is not usable
|
# end of tests disabled when filemode is not usable
|
||||||
|
|
||||||
test_expect_success 'setup again' '
|
test_expect_success PERL 'setup again' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
test_chmod +x file &&
|
test_chmod +x file &&
|
||||||
echo content >>file
|
echo content >>file
|
||||||
'
|
'
|
||||||
|
|
||||||
# Write the patch file with a new line at the top and bottom
|
# Write the patch file with a new line at the top and bottom
|
||||||
|
test_expect_success PERL 'setup patch' '
|
||||||
cat >patch <<EOF
|
cat >patch <<EOF
|
||||||
index 180b47c..b6f2c08 100644
|
index 180b47c..b6f2c08 100644
|
||||||
--- a/file
|
--- a/file
|
||||||
@ -207,7 +227,10 @@ index 180b47c..b6f2c08 100644
|
|||||||
content
|
content
|
||||||
+lastline
|
+lastline
|
||||||
EOF
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
# Expected output, similar to the patch but w/ diff at the top
|
# Expected output, similar to the patch but w/ diff at the top
|
||||||
|
test_expect_success PERL 'setup expected' '
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
diff --git a/file b/file
|
diff --git a/file b/file
|
||||||
index b6f2c08..61b9053 100755
|
index b6f2c08..61b9053 100755
|
||||||
@ -219,8 +242,10 @@ index b6f2c08..61b9053 100755
|
|||||||
content
|
content
|
||||||
+lastline
|
+lastline
|
||||||
EOF
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
# Test splitting the first patch, then adding both
|
# Test splitting the first patch, then adding both
|
||||||
test_expect_success 'add first line works' '
|
test_expect_success PERL 'add first line works' '
|
||||||
git commit -am "clear local changes" &&
|
git commit -am "clear local changes" &&
|
||||||
git apply patch &&
|
git apply patch &&
|
||||||
(echo s; echo y; echo y) | git add -p file &&
|
(echo s; echo y; echo y) | git add -p file &&
|
||||||
@ -228,6 +253,7 @@ test_expect_success 'add first line works' '
|
|||||||
test_cmp expected diff
|
test_cmp expected diff
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'setup expected' '
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
diff --git a/non-empty b/non-empty
|
diff --git a/non-empty b/non-empty
|
||||||
deleted file mode 100644
|
deleted file mode 100644
|
||||||
@ -237,7 +263,9 @@ index d95f3ad..0000000
|
|||||||
@@ -1 +0,0 @@
|
@@ -1 +0,0 @@
|
||||||
-content
|
-content
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'deleting a non-empty file' '
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'deleting a non-empty file' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
echo content >non-empty &&
|
echo content >non-empty &&
|
||||||
git add non-empty &&
|
git add non-empty &&
|
||||||
@ -248,13 +276,15 @@ test_expect_success 'deleting a non-empty file' '
|
|||||||
test_cmp expected diff
|
test_cmp expected diff
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success PERL 'setup expected' '
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
diff --git a/empty b/empty
|
diff --git a/empty b/empty
|
||||||
deleted file mode 100644
|
deleted file mode 100644
|
||||||
index e69de29..0000000
|
index e69de29..0000000
|
||||||
EOF
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'deleting an empty file' '
|
test_expect_success PERL 'deleting an empty file' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
> empty &&
|
> empty &&
|
||||||
git add empty &&
|
git add empty &&
|
||||||
|
@ -15,11 +15,13 @@ LF='
|
|||||||
DQ='"'
|
DQ='"'
|
||||||
|
|
||||||
echo foo 2>/dev/null > "Name and an${HT}HT"
|
echo foo 2>/dev/null > "Name and an${HT}HT"
|
||||||
test -f "Name and an${HT}HT" || {
|
if ! test -f "Name and an${HT}HT"
|
||||||
# since FAT/NTFS does not allow tabs in filenames, skip this test
|
then
|
||||||
skip_all='Your filesystem does not allow tabs in filenames, test skipped.'
|
# FAT/NTFS does not allow tabs in filenames
|
||||||
test_done
|
say 'Your filesystem does not allow tabs in filenames'
|
||||||
}
|
else
|
||||||
|
test_set_prereq TABS_IN_FILENAMES
|
||||||
|
fi
|
||||||
|
|
||||||
for_each_name () {
|
for_each_name () {
|
||||||
for name in \
|
for name in \
|
||||||
@ -31,7 +33,7 @@ for_each_name () {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success TABS_IN_FILENAMES 'setup' '
|
||||||
|
|
||||||
mkdir "$FN" &&
|
mkdir "$FN" &&
|
||||||
for_each_name "echo initial >\"\$name\""
|
for_each_name "echo initial >\"\$name\""
|
||||||
@ -45,6 +47,7 @@ test_expect_success setup '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expected files' '
|
||||||
cat >expect.quoted <<\EOF
|
cat >expect.quoted <<\EOF
|
||||||
Name
|
Name
|
||||||
"Name and a\nLF"
|
"Name and a\nLF"
|
||||||
@ -72,75 +75,76 @@ With SP in it
|
|||||||
濱野/file
|
濱野/file
|
||||||
濱野純
|
濱野純
|
||||||
EOF
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'check fully quoted output from ls-files' '
|
test_expect_success TABS_IN_FILENAMES 'check fully quoted output from ls-files' '
|
||||||
|
|
||||||
git ls-files >current && test_cmp expect.quoted current
|
git ls-files >current && test_cmp expect.quoted current
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check fully quoted output from diff-files' '
|
test_expect_success TABS_IN_FILENAMES 'check fully quoted output from diff-files' '
|
||||||
|
|
||||||
git diff --name-only >current &&
|
git diff --name-only >current &&
|
||||||
test_cmp expect.quoted current
|
test_cmp expect.quoted current
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check fully quoted output from diff-index' '
|
test_expect_success TABS_IN_FILENAMES 'check fully quoted output from diff-index' '
|
||||||
|
|
||||||
git diff --name-only HEAD >current &&
|
git diff --name-only HEAD >current &&
|
||||||
test_cmp expect.quoted current
|
test_cmp expect.quoted current
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check fully quoted output from diff-tree' '
|
test_expect_success TABS_IN_FILENAMES 'check fully quoted output from diff-tree' '
|
||||||
|
|
||||||
git diff --name-only HEAD^ HEAD >current &&
|
git diff --name-only HEAD^ HEAD >current &&
|
||||||
test_cmp expect.quoted current
|
test_cmp expect.quoted current
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check fully quoted output from ls-tree' '
|
test_expect_success TABS_IN_FILENAMES 'check fully quoted output from ls-tree' '
|
||||||
|
|
||||||
git ls-tree --name-only -r HEAD >current &&
|
git ls-tree --name-only -r HEAD >current &&
|
||||||
test_cmp expect.quoted current
|
test_cmp expect.quoted current
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'setting core.quotepath' '
|
test_expect_success TABS_IN_FILENAMES 'setting core.quotepath' '
|
||||||
|
|
||||||
git config --bool core.quotepath false
|
git config --bool core.quotepath false
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check fully quoted output from ls-files' '
|
test_expect_success TABS_IN_FILENAMES 'check fully quoted output from ls-files' '
|
||||||
|
|
||||||
git ls-files >current && test_cmp expect.raw current
|
git ls-files >current && test_cmp expect.raw current
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check fully quoted output from diff-files' '
|
test_expect_success TABS_IN_FILENAMES 'check fully quoted output from diff-files' '
|
||||||
|
|
||||||
git diff --name-only >current &&
|
git diff --name-only >current &&
|
||||||
test_cmp expect.raw current
|
test_cmp expect.raw current
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check fully quoted output from diff-index' '
|
test_expect_success TABS_IN_FILENAMES 'check fully quoted output from diff-index' '
|
||||||
|
|
||||||
git diff --name-only HEAD >current &&
|
git diff --name-only HEAD >current &&
|
||||||
test_cmp expect.raw current
|
test_cmp expect.raw current
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check fully quoted output from diff-tree' '
|
test_expect_success TABS_IN_FILENAMES 'check fully quoted output from diff-tree' '
|
||||||
|
|
||||||
git diff --name-only HEAD^ HEAD >current &&
|
git diff --name-only HEAD^ HEAD >current &&
|
||||||
test_cmp expect.raw current
|
test_cmp expect.raw current
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check fully quoted output from ls-tree' '
|
test_expect_success TABS_IN_FILENAMES 'check fully quoted output from ls-tree' '
|
||||||
|
|
||||||
git ls-tree --name-only -r HEAD >current &&
|
git ls-tree --name-only -r HEAD >current &&
|
||||||
test_cmp expect.raw current
|
test_cmp expect.raw current
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
test_description='git checkout --patch'
|
test_description='git checkout --patch'
|
||||||
. ./lib-patch-mode.sh
|
. ./lib-patch-mode.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success PERL 'setup' '
|
||||||
mkdir dir &&
|
mkdir dir &&
|
||||||
echo parent > dir/foo &&
|
echo parent > dir/foo &&
|
||||||
echo dummy > bar &&
|
echo dummy > bar &&
|
||||||
@ -19,14 +19,14 @@ test_expect_success 'setup' '
|
|||||||
|
|
||||||
# note: bar sorts before dir, so the first 'n' is always to skip 'bar'
|
# note: bar sorts before dir, so the first 'n' is always to skip 'bar'
|
||||||
|
|
||||||
test_expect_success 'saying "n" does nothing' '
|
test_expect_success PERL 'saying "n" does nothing' '
|
||||||
set_state dir/foo work index
|
set_state dir/foo work index
|
||||||
(echo n; echo n) | test_must_fail git stash save -p &&
|
(echo n; echo n) | test_must_fail git stash save -p &&
|
||||||
verify_state dir/foo work index &&
|
verify_state dir/foo work index &&
|
||||||
verify_saved_state bar
|
verify_saved_state bar
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git stash -p' '
|
test_expect_success PERL 'git stash -p' '
|
||||||
(echo n; echo y) | git stash save -p &&
|
(echo n; echo y) | git stash save -p &&
|
||||||
verify_state dir/foo head index &&
|
verify_state dir/foo head index &&
|
||||||
verify_saved_state bar &&
|
verify_saved_state bar &&
|
||||||
@ -36,7 +36,7 @@ test_expect_success 'git stash -p' '
|
|||||||
verify_state bar dummy dummy
|
verify_state bar dummy dummy
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git stash -p --no-keep-index' '
|
test_expect_success PERL 'git stash -p --no-keep-index' '
|
||||||
set_state dir/foo work index &&
|
set_state dir/foo work index &&
|
||||||
set_state bar bar_work bar_index &&
|
set_state bar bar_work bar_index &&
|
||||||
(echo n; echo y) | git stash save -p --no-keep-index &&
|
(echo n; echo y) | git stash save -p --no-keep-index &&
|
||||||
@ -48,7 +48,7 @@ test_expect_success 'git stash -p --no-keep-index' '
|
|||||||
verify_state bar dummy bar_index
|
verify_state bar dummy bar_index
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'none of this moved HEAD' '
|
test_expect_success PERL 'none of this moved HEAD' '
|
||||||
verify_saved_head
|
verify_saved_head
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -12,13 +12,7 @@ by an edit for them.
|
|||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
. "$TEST_DIRECTORY"/diff-lib.sh
|
. "$TEST_DIRECTORY"/diff-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq SYMLINKS
|
test_expect_success SYMLINKS \
|
||||||
then
|
|
||||||
skip_all='Symbolic links not supported, skipping tests.'
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success \
|
|
||||||
'prepare reference tree' \
|
'prepare reference tree' \
|
||||||
'echo xyzzy | tr -d '\\\\'012 >yomin &&
|
'echo xyzzy | tr -d '\\\\'012 >yomin &&
|
||||||
ln -s xyzzy frotz &&
|
ln -s xyzzy frotz &&
|
||||||
@ -26,7 +20,7 @@ test_expect_success \
|
|||||||
tree=$(git write-tree) &&
|
tree=$(git write-tree) &&
|
||||||
echo $tree'
|
echo $tree'
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success SYMLINKS \
|
||||||
'prepare work tree' \
|
'prepare work tree' \
|
||||||
'mv frotz rezrov &&
|
'mv frotz rezrov &&
|
||||||
rm -f yomin &&
|
rm -f yomin &&
|
||||||
@ -40,8 +34,9 @@ test_expect_success \
|
|||||||
# rezrov and nitfol are rename/copy of frotz and bozbar should be
|
# rezrov and nitfol are rename/copy of frotz and bozbar should be
|
||||||
# a new creation.
|
# a new creation.
|
||||||
|
|
||||||
GIT_DIFF_OPTS=--unified=0 git diff-index -M -p $tree >current
|
test_expect_success SYMLINKS 'setup diff output' "
|
||||||
cat >expected <<\EOF
|
GIT_DIFF_OPTS=--unified=0 git diff-index -M -p $tree >current &&
|
||||||
|
cat >expected <<\EOF
|
||||||
diff --git a/bozbar b/bozbar
|
diff --git a/bozbar b/bozbar
|
||||||
new file mode 120000
|
new file mode 120000
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@ -65,8 +60,9 @@ deleted file mode 100644
|
|||||||
-xyzzy
|
-xyzzy
|
||||||
\ No newline at end of file
|
\ No newline at end of file
|
||||||
EOF
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success SYMLINKS \
|
||||||
'validate diff output' \
|
'validate diff output' \
|
||||||
'compare_diff_patch current expected'
|
'compare_diff_patch current expected'
|
||||||
|
|
||||||
|
@ -9,12 +9,6 @@ test_description='Test diff of symlinks.
|
|||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
. "$TEST_DIRECTORY"/diff-lib.sh
|
. "$TEST_DIRECTORY"/diff-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq SYMLINKS
|
|
||||||
then
|
|
||||||
skip_all='Symbolic links not supported, skipping tests.'
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat > expected << EOF
|
cat > expected << EOF
|
||||||
diff --git a/frotz b/frotz
|
diff --git a/frotz b/frotz
|
||||||
new file mode 120000
|
new file mode 120000
|
||||||
@ -26,7 +20,7 @@ index 0000000..7c465af
|
|||||||
\ No newline at end of file
|
\ No newline at end of file
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success SYMLINKS \
|
||||||
'diff new symlink' \
|
'diff new symlink' \
|
||||||
'ln -s xyzzy frotz &&
|
'ln -s xyzzy frotz &&
|
||||||
git update-index &&
|
git update-index &&
|
||||||
@ -35,7 +29,7 @@ test_expect_success \
|
|||||||
GIT_DIFF_OPTS=--unified=0 git diff-index -M -p $tree > current &&
|
GIT_DIFF_OPTS=--unified=0 git diff-index -M -p $tree > current &&
|
||||||
compare_diff_patch current expected'
|
compare_diff_patch current expected'
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success SYMLINKS \
|
||||||
'diff unchanged symlink' \
|
'diff unchanged symlink' \
|
||||||
'tree=$(git write-tree) &&
|
'tree=$(git write-tree) &&
|
||||||
git update-index frotz &&
|
git update-index frotz &&
|
||||||
@ -52,7 +46,7 @@ index 7c465af..0000000
|
|||||||
\ No newline at end of file
|
\ No newline at end of file
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success SYMLINKS \
|
||||||
'diff removed symlink' \
|
'diff removed symlink' \
|
||||||
'mv frotz frotz2 &&
|
'mv frotz frotz2 &&
|
||||||
git diff-index -M -p $tree > current &&
|
git diff-index -M -p $tree > current &&
|
||||||
@ -62,7 +56,7 @@ cat > expected << EOF
|
|||||||
diff --git a/frotz b/frotz
|
diff --git a/frotz b/frotz
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success SYMLINKS \
|
||||||
'diff identical, but newly created symlink' \
|
'diff identical, but newly created symlink' \
|
||||||
'ln -s xyzzy frotz &&
|
'ln -s xyzzy frotz &&
|
||||||
git diff-index -M -p $tree > current &&
|
git diff-index -M -p $tree > current &&
|
||||||
@ -80,14 +74,14 @@ index 7c465af..df1db54 120000
|
|||||||
\ No newline at end of file
|
\ No newline at end of file
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success SYMLINKS \
|
||||||
'diff different symlink' \
|
'diff different symlink' \
|
||||||
'rm frotz &&
|
'rm frotz &&
|
||||||
ln -s yxyyz frotz &&
|
ln -s yxyyz frotz &&
|
||||||
git diff-index -M -p $tree > current &&
|
git diff-index -M -p $tree > current &&
|
||||||
compare_diff_patch current expected'
|
compare_diff_patch current expected'
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success SYMLINKS \
|
||||||
'diff symlinks with non-existing targets' \
|
'diff symlinks with non-existing targets' \
|
||||||
'ln -s narf pinky &&
|
'ln -s narf pinky &&
|
||||||
ln -s take\ over brain &&
|
ln -s take\ over brain &&
|
||||||
|
@ -13,12 +13,14 @@ P1='pathname with HT'
|
|||||||
P2='pathname with SP'
|
P2='pathname with SP'
|
||||||
P3='pathname
|
P3='pathname
|
||||||
with LF'
|
with LF'
|
||||||
: 2>/dev/null >"$P1" && test -f "$P1" && rm -f "$P1" || {
|
if : 2>/dev/null >"$P1" && test -f "$P1" && rm -f "$P1"
|
||||||
skip_all='Your filesystem does not allow tabs in filenames, test skipped.'
|
then
|
||||||
test_done
|
test_set_prereq TABS_IN_FILENAMES
|
||||||
}
|
else
|
||||||
|
say 'Your filesystem does not allow tabs in filenames'
|
||||||
|
fi
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success TABS_IN_FILENAMES setup '
|
||||||
echo P0.0 >"$P0.0" &&
|
echo P0.0 >"$P0.0" &&
|
||||||
echo P0.1 >"$P0.1" &&
|
echo P0.1 >"$P0.1" &&
|
||||||
echo P0.2 >"$P0.2" &&
|
echo P0.2 >"$P0.2" &&
|
||||||
@ -38,6 +40,7 @@ test_expect_success setup '
|
|||||||
:
|
:
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expected files' '
|
||||||
cat >expect <<\EOF
|
cat >expect <<\EOF
|
||||||
rename pathname.1 => "Rpathname\twith HT.0" (100%)
|
rename pathname.1 => "Rpathname\twith HT.0" (100%)
|
||||||
rename pathname.3 => "Rpathname\nwith LF.0" (100%)
|
rename pathname.3 => "Rpathname\nwith LF.0" (100%)
|
||||||
@ -47,11 +50,14 @@ cat >expect <<\EOF
|
|||||||
rename pathname.0 => Rpathname.0 (100%)
|
rename pathname.0 => Rpathname.0 (100%)
|
||||||
rename "pathname\twith HT.0" => Rpathname.1 (100%)
|
rename "pathname\twith HT.0" => Rpathname.1 (100%)
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'git diff --summary -M HEAD' '
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git diff --summary -M HEAD' '
|
||||||
git diff --summary -M HEAD >actual &&
|
git diff --summary -M HEAD >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'setup expected files' '
|
||||||
cat >expect <<\EOF
|
cat >expect <<\EOF
|
||||||
pathname.1 => "Rpathname\twith HT.0" | 0
|
pathname.1 => "Rpathname\twith HT.0" | 0
|
||||||
pathname.3 => "Rpathname\nwith LF.0" | 0
|
pathname.3 => "Rpathname\nwith LF.0" | 0
|
||||||
@ -62,7 +68,9 @@ cat >expect <<\EOF
|
|||||||
"pathname\twith HT.0" => Rpathname.1 | 0
|
"pathname\twith HT.0" => Rpathname.1 | 0
|
||||||
7 files changed, 0 insertions(+), 0 deletions(-)
|
7 files changed, 0 insertions(+), 0 deletions(-)
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'git diff --stat -M HEAD' '
|
'
|
||||||
|
|
||||||
|
test_expect_success TABS_IN_FILENAMES 'git diff --stat -M HEAD' '
|
||||||
git diff --stat -M HEAD >actual &&
|
git diff --stat -M HEAD >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
@ -4,13 +4,7 @@ test_description='typechange rename detection'
|
|||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq SYMLINKS
|
test_expect_success SYMLINKS setup '
|
||||||
then
|
|
||||||
skip_all='Symbolic links not supported, skipping tests.'
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success setup '
|
|
||||||
|
|
||||||
rm -f foo bar &&
|
rm -f foo bar &&
|
||||||
cat "$TEST_DIRECTORY"/../COPYING >foo &&
|
cat "$TEST_DIRECTORY"/../COPYING >foo &&
|
||||||
@ -56,7 +50,7 @@ test_expect_success setup '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'cross renames to be detected for regular files' '
|
test_expect_success SYMLINKS 'cross renames to be detected for regular files' '
|
||||||
|
|
||||||
git diff-tree five six -r --name-status -B -M | sort >actual &&
|
git diff-tree five six -r --name-status -B -M | sort >actual &&
|
||||||
{
|
{
|
||||||
@ -67,7 +61,7 @@ test_expect_success 'cross renames to be detected for regular files' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'cross renames to be detected for typechange' '
|
test_expect_success SYMLINKS 'cross renames to be detected for typechange' '
|
||||||
|
|
||||||
git diff-tree one two -r --name-status -B -M | sort >actual &&
|
git diff-tree one two -r --name-status -B -M | sort >actual &&
|
||||||
{
|
{
|
||||||
@ -78,7 +72,7 @@ test_expect_success 'cross renames to be detected for typechange' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'moves and renames' '
|
test_expect_success SYMLINKS 'moves and renames' '
|
||||||
|
|
||||||
git diff-tree three four -r --name-status -B -M | sort >actual &&
|
git diff-tree three four -r --name-status -B -M | sort >actual &&
|
||||||
{
|
{
|
||||||
|
@ -7,6 +7,7 @@ test_description='git apply handling copy/rename patch.
|
|||||||
|
|
||||||
'
|
'
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
. "$TEST_DIRECTORY"/lib-prereq-FILEMODE.sh
|
||||||
|
|
||||||
# setup
|
# setup
|
||||||
|
|
||||||
@ -31,13 +32,6 @@ test_expect_success setup \
|
|||||||
test_expect_success apply \
|
test_expect_success apply \
|
||||||
'git apply --index --stat --summary --apply test-patch'
|
'git apply --index --stat --summary --apply test-patch'
|
||||||
|
|
||||||
if test "$(git config --bool core.filemode)" = false
|
|
||||||
then
|
|
||||||
say 'filemode disabled on the filesystem'
|
|
||||||
else
|
|
||||||
test_set_prereq FILEMODE
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success FILEMODE validate \
|
test_expect_success FILEMODE validate \
|
||||||
'test -f bar && ls -l bar | grep "^-..x......"'
|
'test -f bar && ls -l bar | grep "^-..x......"'
|
||||||
|
|
||||||
|
@ -9,13 +9,7 @@ test_description='git apply should not get confused with type changes.
|
|||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq SYMLINKS
|
test_expect_success SYMLINKS 'setup repository and commits' '
|
||||||
then
|
|
||||||
skip_all='Symbolic links not supported, skipping tests.'
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success 'setup repository and commits' '
|
|
||||||
echo "hello world" > foo &&
|
echo "hello world" > foo &&
|
||||||
echo "hi planet" > bar &&
|
echo "hi planet" > bar &&
|
||||||
git update-index --add foo bar &&
|
git update-index --add foo bar &&
|
||||||
@ -48,7 +42,7 @@ test_expect_success 'setup repository and commits' '
|
|||||||
git branch foo-baz-renamed-from-foo
|
git branch foo-baz-renamed-from-foo
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'file renamed from foo to foo/baz' '
|
test_expect_success SYMLINKS 'file renamed from foo to foo/baz' '
|
||||||
git checkout -f initial &&
|
git checkout -f initial &&
|
||||||
git diff-tree -M -p HEAD foo-baz-renamed-from-foo > patch &&
|
git diff-tree -M -p HEAD foo-baz-renamed-from-foo > patch &&
|
||||||
git apply --index < patch
|
git apply --index < patch
|
||||||
@ -56,7 +50,7 @@ test_expect_success 'file renamed from foo to foo/baz' '
|
|||||||
test_debug 'cat patch'
|
test_debug 'cat patch'
|
||||||
|
|
||||||
|
|
||||||
test_expect_success 'file renamed from foo/baz to foo' '
|
test_expect_success SYMLINKS 'file renamed from foo/baz to foo' '
|
||||||
git checkout -f foo-baz-renamed-from-foo &&
|
git checkout -f foo-baz-renamed-from-foo &&
|
||||||
git diff-tree -M -p HEAD initial > patch &&
|
git diff-tree -M -p HEAD initial > patch &&
|
||||||
git apply --index < patch
|
git apply --index < patch
|
||||||
@ -64,7 +58,7 @@ test_expect_success 'file renamed from foo/baz to foo' '
|
|||||||
test_debug 'cat patch'
|
test_debug 'cat patch'
|
||||||
|
|
||||||
|
|
||||||
test_expect_success 'directory becomes file' '
|
test_expect_success SYMLINKS 'directory becomes file' '
|
||||||
git checkout -f foo-becomes-a-directory &&
|
git checkout -f foo-becomes-a-directory &&
|
||||||
git diff-tree -p HEAD initial > patch &&
|
git diff-tree -p HEAD initial > patch &&
|
||||||
git apply --index < patch
|
git apply --index < patch
|
||||||
@ -72,7 +66,7 @@ test_expect_success 'directory becomes file' '
|
|||||||
test_debug 'cat patch'
|
test_debug 'cat patch'
|
||||||
|
|
||||||
|
|
||||||
test_expect_success 'file becomes directory' '
|
test_expect_success SYMLINKS 'file becomes directory' '
|
||||||
git checkout -f initial &&
|
git checkout -f initial &&
|
||||||
git diff-tree -p HEAD foo-becomes-a-directory > patch &&
|
git diff-tree -p HEAD foo-becomes-a-directory > patch &&
|
||||||
git apply --index < patch
|
git apply --index < patch
|
||||||
@ -80,7 +74,7 @@ test_expect_success 'file becomes directory' '
|
|||||||
test_debug 'cat patch'
|
test_debug 'cat patch'
|
||||||
|
|
||||||
|
|
||||||
test_expect_success 'file becomes symlink' '
|
test_expect_success SYMLINKS 'file becomes symlink' '
|
||||||
git checkout -f initial &&
|
git checkout -f initial &&
|
||||||
git diff-tree -p HEAD foo-symlinked-to-bar > patch &&
|
git diff-tree -p HEAD foo-symlinked-to-bar > patch &&
|
||||||
git apply --index < patch
|
git apply --index < patch
|
||||||
@ -88,21 +82,21 @@ test_expect_success 'file becomes symlink' '
|
|||||||
test_debug 'cat patch'
|
test_debug 'cat patch'
|
||||||
|
|
||||||
|
|
||||||
test_expect_success 'symlink becomes file' '
|
test_expect_success SYMLINKS 'symlink becomes file' '
|
||||||
git checkout -f foo-symlinked-to-bar &&
|
git checkout -f foo-symlinked-to-bar &&
|
||||||
git diff-tree -p HEAD foo-back-to-file > patch &&
|
git diff-tree -p HEAD foo-back-to-file > patch &&
|
||||||
git apply --index < patch
|
git apply --index < patch
|
||||||
'
|
'
|
||||||
test_debug 'cat patch'
|
test_debug 'cat patch'
|
||||||
|
|
||||||
test_expect_success 'binary file becomes symlink' '
|
test_expect_success SYMLINKS 'binary file becomes symlink' '
|
||||||
git checkout -f foo-becomes-binary &&
|
git checkout -f foo-becomes-binary &&
|
||||||
git diff-tree -p --binary HEAD foo-symlinked-to-bar > patch &&
|
git diff-tree -p --binary HEAD foo-symlinked-to-bar > patch &&
|
||||||
git apply --index < patch
|
git apply --index < patch
|
||||||
'
|
'
|
||||||
test_debug 'cat patch'
|
test_debug 'cat patch'
|
||||||
|
|
||||||
test_expect_success 'symlink becomes binary file' '
|
test_expect_success SYMLINKS 'symlink becomes binary file' '
|
||||||
git checkout -f foo-symlinked-to-bar &&
|
git checkout -f foo-symlinked-to-bar &&
|
||||||
git diff-tree -p --binary HEAD foo-becomes-binary > patch &&
|
git diff-tree -p --binary HEAD foo-becomes-binary > patch &&
|
||||||
git apply --index < patch
|
git apply --index < patch
|
||||||
@ -110,7 +104,7 @@ test_expect_success 'symlink becomes binary file' '
|
|||||||
test_debug 'cat patch'
|
test_debug 'cat patch'
|
||||||
|
|
||||||
|
|
||||||
test_expect_success 'symlink becomes directory' '
|
test_expect_success SYMLINKS 'symlink becomes directory' '
|
||||||
git checkout -f foo-symlinked-to-bar &&
|
git checkout -f foo-symlinked-to-bar &&
|
||||||
git diff-tree -p HEAD foo-becomes-a-directory > patch &&
|
git diff-tree -p HEAD foo-becomes-a-directory > patch &&
|
||||||
git apply --index < patch
|
git apply --index < patch
|
||||||
@ -118,7 +112,7 @@ test_expect_success 'symlink becomes directory' '
|
|||||||
test_debug 'cat patch'
|
test_debug 'cat patch'
|
||||||
|
|
||||||
|
|
||||||
test_expect_success 'directory becomes symlink' '
|
test_expect_success SYMLINKS 'directory becomes symlink' '
|
||||||
git checkout -f foo-becomes-a-directory &&
|
git checkout -f foo-becomes-a-directory &&
|
||||||
git diff-tree -p HEAD foo-symlinked-to-bar > patch &&
|
git diff-tree -p HEAD foo-symlinked-to-bar > patch &&
|
||||||
git apply --index < patch
|
git apply --index < patch
|
||||||
|
@ -9,13 +9,7 @@ test_description='git apply symlinks and partial files
|
|||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq SYMLINKS
|
test_expect_success SYMLINKS setup '
|
||||||
then
|
|
||||||
skip_all='Symbolic links not supported, skipping tests.'
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success setup '
|
|
||||||
|
|
||||||
ln -s path1/path2/path3/path4/path5 link1 &&
|
ln -s path1/path2/path3/path4/path5 link1 &&
|
||||||
git add link? &&
|
git add link? &&
|
||||||
@ -34,7 +28,7 @@ test_expect_success setup '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'apply symlink patch' '
|
test_expect_success SYMLINKS 'apply symlink patch' '
|
||||||
|
|
||||||
git checkout side &&
|
git checkout side &&
|
||||||
git apply patch &&
|
git apply patch &&
|
||||||
@ -43,7 +37,7 @@ test_expect_success 'apply symlink patch' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'apply --index symlink patch' '
|
test_expect_success SYMLINKS 'apply --index symlink patch' '
|
||||||
|
|
||||||
git checkout -f side &&
|
git checkout -f side &&
|
||||||
git apply --index patch &&
|
git apply --index patch &&
|
||||||
|
@ -3,12 +3,6 @@
|
|||||||
test_description='apply to deeper directory without getting fooled with symlink'
|
test_description='apply to deeper directory without getting fooled with symlink'
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq SYMLINKS
|
|
||||||
then
|
|
||||||
skip_all='Symbolic links not supported, skipping tests.'
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
lecho () {
|
lecho () {
|
||||||
for l_
|
for l_
|
||||||
do
|
do
|
||||||
@ -16,7 +10,7 @@ lecho () {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success SYMLINKS setup '
|
||||||
|
|
||||||
mkdir -p arch/i386/boot arch/x86_64 &&
|
mkdir -p arch/i386/boot arch/x86_64 &&
|
||||||
lecho 1 2 3 4 5 >arch/i386/boot/Makefile &&
|
lecho 1 2 3 4 5 >arch/i386/boot/Makefile &&
|
||||||
@ -37,7 +31,7 @@ test_expect_success setup '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success apply '
|
test_expect_success SYMLINKS apply '
|
||||||
|
|
||||||
git checkout test &&
|
git checkout test &&
|
||||||
git diff --exit-code test &&
|
git diff --exit-code test &&
|
||||||
@ -46,7 +40,7 @@ test_expect_success apply '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check result' '
|
test_expect_success SYMLINKS 'check result' '
|
||||||
|
|
||||||
git diff --exit-code master &&
|
git diff --exit-code master &&
|
||||||
git diff --exit-code --cached master &&
|
git diff --exit-code --cached master &&
|
||||||
|
@ -3,13 +3,7 @@
|
|||||||
test_description='applying patch with mode bits'
|
test_description='applying patch with mode bits'
|
||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
. "$TEST_DIRECTORY"/lib-prereq-FILEMODE.sh
|
||||||
if test "$(git config --bool core.filemode)" = false
|
|
||||||
then
|
|
||||||
say 'filemode disabled on the filesystem'
|
|
||||||
else
|
|
||||||
test_set_prereq FILEMODE
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success setup '
|
||||||
echo original >file &&
|
echo original >file &&
|
||||||
|
@ -6,8 +6,11 @@ test_description='test automatic tag following'
|
|||||||
|
|
||||||
case $(uname -s) in
|
case $(uname -s) in
|
||||||
*MINGW*)
|
*MINGW*)
|
||||||
skip_all="GIT_DEBUG_SEND_PACK not supported - skipping tests"
|
say "GIT_DEBUG_SEND_PACK not supported - skipping tests"
|
||||||
test_done
|
;;
|
||||||
|
*)
|
||||||
|
test_set_prereq NOT_MINGW
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# End state of the repository:
|
# End state of the repository:
|
||||||
@ -19,7 +22,7 @@ esac
|
|||||||
# \ C - origin/cat \
|
# \ C - origin/cat \
|
||||||
# origin/master master
|
# origin/master master
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success NOT_MINGW setup '
|
||||||
test_tick &&
|
test_tick &&
|
||||||
echo ichi >file &&
|
echo ichi >file &&
|
||||||
git add file &&
|
git add file &&
|
||||||
@ -42,12 +45,15 @@ test_expect_success setup '
|
|||||||
|
|
||||||
U=UPLOAD_LOG
|
U=UPLOAD_LOG
|
||||||
|
|
||||||
|
test_expect_success NOT_MINGW 'setup expect' '
|
||||||
cat - <<EOF >expect
|
cat - <<EOF >expect
|
||||||
#S
|
#S
|
||||||
want $A
|
want $A
|
||||||
#E
|
#E
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'fetch A (new commit : 1 connection)' '
|
'
|
||||||
|
|
||||||
|
test_expect_success NOT_MINGW 'fetch A (new commit : 1 connection)' '
|
||||||
rm -f $U
|
rm -f $U
|
||||||
(
|
(
|
||||||
cd cloned &&
|
cd cloned &&
|
||||||
@ -59,7 +65,7 @@ test_expect_success 'fetch A (new commit : 1 connection)' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success "create tag T on A, create C on branch cat" '
|
test_expect_success NOT_MINGW "create tag T on A, create C on branch cat" '
|
||||||
git tag -a -m tag1 tag1 $A &&
|
git tag -a -m tag1 tag1 $A &&
|
||||||
T=$(git rev-parse --verify tag1) &&
|
T=$(git rev-parse --verify tag1) &&
|
||||||
|
|
||||||
@ -71,13 +77,16 @@ test_expect_success "create tag T on A, create C on branch cat" '
|
|||||||
git checkout master
|
git checkout master
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success NOT_MINGW 'setup expect' '
|
||||||
cat - <<EOF >expect
|
cat - <<EOF >expect
|
||||||
#S
|
#S
|
||||||
want $C
|
want $C
|
||||||
want $T
|
want $T
|
||||||
#E
|
#E
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'fetch C, T (new branch, tag : 1 connection)' '
|
'
|
||||||
|
|
||||||
|
test_expect_success NOT_MINGW 'fetch C, T (new branch, tag : 1 connection)' '
|
||||||
rm -f $U
|
rm -f $U
|
||||||
(
|
(
|
||||||
cd cloned &&
|
cd cloned &&
|
||||||
@ -91,7 +100,7 @@ test_expect_success 'fetch C, T (new branch, tag : 1 connection)' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success "create commits O, B, tag S on B" '
|
test_expect_success NOT_MINGW "create commits O, B, tag S on B" '
|
||||||
test_tick &&
|
test_tick &&
|
||||||
echo O >file &&
|
echo O >file &&
|
||||||
git add file &&
|
git add file &&
|
||||||
@ -107,13 +116,16 @@ test_expect_success "create commits O, B, tag S on B" '
|
|||||||
S=$(git rev-parse --verify tag2)
|
S=$(git rev-parse --verify tag2)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success NOT_MINGW 'setup expect' '
|
||||||
cat - <<EOF >expect
|
cat - <<EOF >expect
|
||||||
#S
|
#S
|
||||||
want $B
|
want $B
|
||||||
want $S
|
want $S
|
||||||
#E
|
#E
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'fetch B, S (commit and tag : 1 connection)' '
|
'
|
||||||
|
|
||||||
|
test_expect_success NOT_MINGW 'fetch B, S (commit and tag : 1 connection)' '
|
||||||
rm -f $U
|
rm -f $U
|
||||||
(
|
(
|
||||||
cd cloned &&
|
cd cloned &&
|
||||||
@ -127,13 +139,16 @@ test_expect_success 'fetch B, S (commit and tag : 1 connection)' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success NOT_MINGW 'setup expect' '
|
||||||
cat - <<EOF >expect
|
cat - <<EOF >expect
|
||||||
#S
|
#S
|
||||||
want $B
|
want $B
|
||||||
want $S
|
want $S
|
||||||
#E
|
#E
|
||||||
EOF
|
EOF
|
||||||
test_expect_success 'new clone fetch master and tags' '
|
'
|
||||||
|
|
||||||
|
test_expect_success NOT_MINGW 'new clone fetch master and tags' '
|
||||||
git branch -D cat
|
git branch -D cat
|
||||||
rm -f $U
|
rm -f $U
|
||||||
(
|
(
|
||||||
|
@ -4,12 +4,6 @@ test_description='pulling from symlinked subdir'
|
|||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq SYMLINKS
|
|
||||||
then
|
|
||||||
skip_all='Symbolic links not supported, skipping tests.'
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# The scenario we are building:
|
# The scenario we are building:
|
||||||
#
|
#
|
||||||
# trash\ directory/
|
# trash\ directory/
|
||||||
@ -20,7 +14,7 @@ fi
|
|||||||
#
|
#
|
||||||
# The working directory is subdir-link.
|
# The working directory is subdir-link.
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success SYMLINKS setup '
|
||||||
mkdir subdir &&
|
mkdir subdir &&
|
||||||
echo file >subdir/file &&
|
echo file >subdir/file &&
|
||||||
git add subdir/file &&
|
git add subdir/file &&
|
||||||
@ -36,7 +30,7 @@ test_expect_success setup '
|
|||||||
|
|
||||||
# Demonstrate that things work if we just avoid the symlink
|
# Demonstrate that things work if we just avoid the symlink
|
||||||
#
|
#
|
||||||
test_expect_success 'pulling from real subdir' '
|
test_expect_success SYMLINKS 'pulling from real subdir' '
|
||||||
(
|
(
|
||||||
echo real >subdir/file &&
|
echo real >subdir/file &&
|
||||||
git commit -m real subdir/file &&
|
git commit -m real subdir/file &&
|
||||||
@ -64,7 +58,7 @@ test_expect_success 'pulling from real subdir' '
|
|||||||
# directory. A POSIX shell's "cd" works a little differently
|
# directory. A POSIX shell's "cd" works a little differently
|
||||||
# than chdir() in C; "cd -P" is much closer to chdir().
|
# than chdir() in C; "cd -P" is much closer to chdir().
|
||||||
#
|
#
|
||||||
test_expect_success 'pulling from symlinked subdir' '
|
test_expect_success SYMLINKS 'pulling from symlinked subdir' '
|
||||||
(
|
(
|
||||||
echo link >subdir/file &&
|
echo link >subdir/file &&
|
||||||
git commit -m link subdir/file &&
|
git commit -m link subdir/file &&
|
||||||
@ -77,7 +71,7 @@ test_expect_success 'pulling from symlinked subdir' '
|
|||||||
# Prove that the remote end really is a repo, and other commands
|
# Prove that the remote end really is a repo, and other commands
|
||||||
# work fine in this context. It's just that "git pull" breaks.
|
# work fine in this context. It's just that "git pull" breaks.
|
||||||
#
|
#
|
||||||
test_expect_success 'pushing from symlinked subdir' '
|
test_expect_success SYMLINKS 'pushing from symlinked subdir' '
|
||||||
(
|
(
|
||||||
cd subdir-link/ &&
|
cd subdir-link/ &&
|
||||||
echo push >file &&
|
echo push >file &&
|
||||||
|
@ -163,8 +163,6 @@ test_expect_success 'clone a void' '
|
|||||||
|
|
||||||
test_expect_success 'clone respects global branch.autosetuprebase' '
|
test_expect_success 'clone respects global branch.autosetuprebase' '
|
||||||
(
|
(
|
||||||
HOME=$(pwd) &&
|
|
||||||
export HOME &&
|
|
||||||
test_config="$HOME/.gitconfig" &&
|
test_config="$HOME/.gitconfig" &&
|
||||||
unset GIT_CONFIG_NOGLOBAL &&
|
unset GIT_CONFIG_NOGLOBAL &&
|
||||||
git config -f "$test_config" branch.autosetuprebase remote &&
|
git config -f "$test_config" branch.autosetuprebase remote &&
|
||||||
|
@ -3,12 +3,14 @@
|
|||||||
test_description='Test cloning a repository larger than 2 gigabyte'
|
test_description='Test cloning a repository larger than 2 gigabyte'
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test -z "$GIT_TEST_CLONE_2GB" &&
|
if test -z "$GIT_TEST_CLONE_2GB"
|
||||||
skip_all="Skipping expensive 2GB clone test; enable it with GIT_TEST_CLONE_2GB=t" &&
|
then
|
||||||
test_done &&
|
say 'Skipping expensive 2GB clone test; enable it with GIT_TEST_CLONE_2GB=t'
|
||||||
exit
|
else
|
||||||
|
test_set_prereq CLONE_2GB
|
||||||
|
fi
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success CLONE_2GB 'setup' '
|
||||||
|
|
||||||
git config pack.compression 0 &&
|
git config pack.compression 0 &&
|
||||||
git config pack.depth 0 &&
|
git config pack.depth 0 &&
|
||||||
@ -36,13 +38,13 @@ test_expect_success 'setup' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'clone - bare' '
|
test_expect_success CLONE_2GB 'clone - bare' '
|
||||||
|
|
||||||
git clone --bare --no-hardlinks . clone-bare
|
git clone --bare --no-hardlinks . clone-bare
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'clone - with worktree, file:// protocol' '
|
test_expect_success CLONE_2GB 'clone - with worktree, file:// protocol' '
|
||||||
|
|
||||||
git clone file://. clone-wt
|
git clone file://. clone-wt
|
||||||
|
|
||||||
|
@ -13,13 +13,11 @@ if sys.hexversion < 0x02040000:
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
'
|
'
|
||||||
then
|
then
|
||||||
:
|
# Requires Python 2.4 or newer
|
||||||
else
|
test_set_prereq PYTHON_24
|
||||||
skip_all='skipping git remote-testgit tests: requires Python 2.4 or newer'
|
|
||||||
test_done
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
test_expect_success 'setup repository' '
|
test_expect_success PYTHON_24 'setup repository' '
|
||||||
git init --bare server/.git &&
|
git init --bare server/.git &&
|
||||||
git clone server public &&
|
git clone server public &&
|
||||||
(cd public &&
|
(cd public &&
|
||||||
@ -29,34 +27,34 @@ test_expect_success 'setup repository' '
|
|||||||
git push origin master)
|
git push origin master)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'cloning from local repo' '
|
test_expect_success PYTHON_24 'cloning from local repo' '
|
||||||
git clone "testgit::${PWD}/server" localclone &&
|
git clone "testgit::${PWD}/server" localclone &&
|
||||||
test_cmp public/file localclone/file
|
test_cmp public/file localclone/file
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'cloning from remote repo' '
|
test_expect_success PYTHON_24 'cloning from remote repo' '
|
||||||
git clone "testgit::file://${PWD}/server" clone &&
|
git clone "testgit::file://${PWD}/server" clone &&
|
||||||
test_cmp public/file clone/file
|
test_cmp public/file clone/file
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'create new commit on remote' '
|
test_expect_success PYTHON_24 'create new commit on remote' '
|
||||||
(cd public &&
|
(cd public &&
|
||||||
echo content >>file &&
|
echo content >>file &&
|
||||||
git commit -a -m two &&
|
git commit -a -m two &&
|
||||||
git push)
|
git push)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'pulling from local repo' '
|
test_expect_success PYTHON_24 'pulling from local repo' '
|
||||||
(cd localclone && git pull) &&
|
(cd localclone && git pull) &&
|
||||||
test_cmp public/file localclone/file
|
test_cmp public/file localclone/file
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'pulling from remote remote' '
|
test_expect_success PYTHON_24 'pulling from remote remote' '
|
||||||
(cd clone && git pull) &&
|
(cd clone && git pull) &&
|
||||||
test_cmp public/file clone/file
|
test_cmp public/file clone/file
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'pushing to local repo' '
|
test_expect_success PYTHON_24 'pushing to local repo' '
|
||||||
(cd localclone &&
|
(cd localclone &&
|
||||||
echo content >>file &&
|
echo content >>file &&
|
||||||
git commit -a -m three &&
|
git commit -a -m three &&
|
||||||
@ -65,12 +63,12 @@ test_expect_success 'pushing to local repo' '
|
|||||||
test $HEAD = $(git --git-dir=server/.git rev-parse --verify HEAD)
|
test $HEAD = $(git --git-dir=server/.git rev-parse --verify HEAD)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'synch with changes from localclone' '
|
test_expect_success PYTHON_24 'synch with changes from localclone' '
|
||||||
(cd clone &&
|
(cd clone &&
|
||||||
git pull)
|
git pull)
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'pushing remote local repo' '
|
test_expect_success PYTHON_24 'pushing remote local repo' '
|
||||||
(cd clone &&
|
(cd clone &&
|
||||||
echo content >>file &&
|
echo content >>file &&
|
||||||
git commit -a -m four &&
|
git commit -a -m four &&
|
||||||
|
@ -2,11 +2,7 @@
|
|||||||
|
|
||||||
test_description='merge-recursive: handle file mode'
|
test_description='merge-recursive: handle file mode'
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
. "$TEST_DIRECTORY"/lib-prereq-FILEMODE.sh
|
||||||
if ! test "$(git config --bool core.filemode)" = false
|
|
||||||
then
|
|
||||||
test_set_prereq FILEMODE
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success 'mode change in one branch: keep changed version' '
|
test_expect_success 'mode change in one branch: keep changed version' '
|
||||||
: >file1 &&
|
: >file1 &&
|
||||||
|
@ -3,13 +3,7 @@
|
|||||||
test_description='merging when a directory was replaced with a symlink'
|
test_description='merging when a directory was replaced with a symlink'
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq SYMLINKS
|
test_expect_success SYMLINKS 'create a commit where dir a/b changed to symlink' '
|
||||||
then
|
|
||||||
skip_all='Symbolic links not supported, skipping tests.'
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success 'create a commit where dir a/b changed to symlink' '
|
|
||||||
mkdir -p a/b/c a/b-2/c &&
|
mkdir -p a/b/c a/b-2/c &&
|
||||||
> a/b/c/d &&
|
> a/b/c/d &&
|
||||||
> a/b-2/c/d &&
|
> a/b-2/c/d &&
|
||||||
@ -23,7 +17,7 @@ test_expect_success 'create a commit where dir a/b changed to symlink' '
|
|||||||
git commit -m "dir to symlink"
|
git commit -m "dir to symlink"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'keep a/b-2/c/d across checkout' '
|
test_expect_success SYMLINKS 'keep a/b-2/c/d across checkout' '
|
||||||
git checkout HEAD^0 &&
|
git checkout HEAD^0 &&
|
||||||
git reset --hard master &&
|
git reset --hard master &&
|
||||||
git rm --cached a/b &&
|
git rm --cached a/b &&
|
||||||
@ -32,14 +26,14 @@ test_expect_success 'keep a/b-2/c/d across checkout' '
|
|||||||
test -f a/b-2/c/d
|
test -f a/b-2/c/d
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'checkout should not have deleted a/b-2/c/d' '
|
test_expect_success SYMLINKS 'checkout should not have deleted a/b-2/c/d' '
|
||||||
git checkout HEAD^0 &&
|
git checkout HEAD^0 &&
|
||||||
git reset --hard master &&
|
git reset --hard master &&
|
||||||
git checkout start^0 &&
|
git checkout start^0 &&
|
||||||
test -f a/b-2/c/d
|
test -f a/b-2/c/d
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'setup for merge test' '
|
test_expect_success SYMLINKS 'setup for merge test' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
test -f a/b-2/c/d &&
|
test -f a/b-2/c/d &&
|
||||||
echo x > a/x &&
|
echo x > a/x &&
|
||||||
@ -48,7 +42,7 @@ test_expect_success 'setup for merge test' '
|
|||||||
git tag baseline
|
git tag baseline
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Handle D/F conflict, do not lose a/b-2/c/d in merge (resolve)' '
|
test_expect_success SYMLINKS 'Handle D/F conflict, do not lose a/b-2/c/d in merge (resolve)' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout baseline^0 &&
|
git checkout baseline^0 &&
|
||||||
git merge -s resolve master &&
|
git merge -s resolve master &&
|
||||||
@ -56,7 +50,7 @@ test_expect_success 'Handle D/F conflict, do not lose a/b-2/c/d in merge (resolv
|
|||||||
test -f a/b-2/c/d
|
test -f a/b-2/c/d
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Handle D/F conflict, do not lose a/b-2/c/d in merge (recursive)' '
|
test_expect_success SYMLINKS 'Handle D/F conflict, do not lose a/b-2/c/d in merge (recursive)' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout baseline^0 &&
|
git checkout baseline^0 &&
|
||||||
git merge -s recursive master &&
|
git merge -s recursive master &&
|
||||||
@ -64,7 +58,7 @@ test_expect_success 'Handle D/F conflict, do not lose a/b-2/c/d in merge (recurs
|
|||||||
test -f a/b-2/c/d
|
test -f a/b-2/c/d
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Handle F/D conflict, do not lose a/b-2/c/d in merge (resolve)' '
|
test_expect_success SYMLINKS 'Handle F/D conflict, do not lose a/b-2/c/d in merge (resolve)' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout master^0 &&
|
git checkout master^0 &&
|
||||||
git merge -s resolve baseline^0 &&
|
git merge -s resolve baseline^0 &&
|
||||||
@ -72,7 +66,7 @@ test_expect_success 'Handle F/D conflict, do not lose a/b-2/c/d in merge (resolv
|
|||||||
test -f a/b-2/c/d
|
test -f a/b-2/c/d
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Handle F/D conflict, do not lose a/b-2/c/d in merge (recursive)' '
|
test_expect_success SYMLINKS 'Handle F/D conflict, do not lose a/b-2/c/d in merge (recursive)' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout master^0 &&
|
git checkout master^0 &&
|
||||||
git merge -s recursive baseline^0 &&
|
git merge -s recursive baseline^0 &&
|
||||||
@ -80,7 +74,7 @@ test_expect_success 'Handle F/D conflict, do not lose a/b-2/c/d in merge (recurs
|
|||||||
test -f a/b-2/c/d
|
test -f a/b-2/c/d
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure 'do not lose untracked in merge (resolve)' '
|
test_expect_failure SYMLINKS 'do not lose untracked in merge (resolve)' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout baseline^0 &&
|
git checkout baseline^0 &&
|
||||||
>a/b/c/e &&
|
>a/b/c/e &&
|
||||||
@ -89,7 +83,7 @@ test_expect_failure 'do not lose untracked in merge (resolve)' '
|
|||||||
test -f a/b-2/c/d
|
test -f a/b-2/c/d
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'do not lose untracked in merge (recursive)' '
|
test_expect_success SYMLINKS 'do not lose untracked in merge (recursive)' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout baseline^0 &&
|
git checkout baseline^0 &&
|
||||||
>a/b/c/e &&
|
>a/b/c/e &&
|
||||||
@ -98,21 +92,21 @@ test_expect_success 'do not lose untracked in merge (recursive)' '
|
|||||||
test -f a/b-2/c/d
|
test -f a/b-2/c/d
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'do not lose modifications in merge (resolve)' '
|
test_expect_success SYMLINKS 'do not lose modifications in merge (resolve)' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout baseline^0 &&
|
git checkout baseline^0 &&
|
||||||
echo more content >>a/b/c/d &&
|
echo more content >>a/b/c/d &&
|
||||||
test_must_fail git merge -s resolve master
|
test_must_fail git merge -s resolve master
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'do not lose modifications in merge (recursive)' '
|
test_expect_success SYMLINKS 'do not lose modifications in merge (recursive)' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout baseline^0 &&
|
git checkout baseline^0 &&
|
||||||
echo more content >>a/b/c/d &&
|
echo more content >>a/b/c/d &&
|
||||||
test_must_fail git merge -s recursive master
|
test_must_fail git merge -s recursive master
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'setup a merge where dir a/b-2 changed to symlink' '
|
test_expect_success SYMLINKS 'setup a merge where dir a/b-2 changed to symlink' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout start^0 &&
|
git checkout start^0 &&
|
||||||
rm -rf a/b-2 &&
|
rm -rf a/b-2 &&
|
||||||
@ -122,7 +116,7 @@ test_expect_success 'setup a merge where dir a/b-2 changed to symlink' '
|
|||||||
git tag test2
|
git tag test2
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'merge should not have D/F conflicts (resolve)' '
|
test_expect_success SYMLINKS 'merge should not have D/F conflicts (resolve)' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout baseline^0 &&
|
git checkout baseline^0 &&
|
||||||
git merge -s resolve test2 &&
|
git merge -s resolve test2 &&
|
||||||
@ -130,7 +124,7 @@ test_expect_success 'merge should not have D/F conflicts (resolve)' '
|
|||||||
test -f a/b/c/d
|
test -f a/b/c/d
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'merge should not have D/F conflicts (recursive)' '
|
test_expect_success SYMLINKS 'merge should not have D/F conflicts (recursive)' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout baseline^0 &&
|
git checkout baseline^0 &&
|
||||||
git merge -s recursive test2 &&
|
git merge -s recursive test2 &&
|
||||||
@ -138,7 +132,7 @@ test_expect_success 'merge should not have D/F conflicts (recursive)' '
|
|||||||
test -f a/b/c/d
|
test -f a/b/c/d
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'merge should not have F/D conflicts (recursive)' '
|
test_expect_success SYMLINKS 'merge should not have F/D conflicts (recursive)' '
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout -b foo test2 &&
|
git checkout -b foo test2 &&
|
||||||
git merge -s recursive baseline^0 &&
|
git merge -s recursive baseline^0 &&
|
||||||
|
@ -111,13 +111,13 @@ do
|
|||||||
'
|
'
|
||||||
done
|
done
|
||||||
|
|
||||||
if ! echo 'echo space > "$1"' > "e space.sh"
|
if echo 'echo space > "$1"' > "e space.sh"
|
||||||
then
|
then
|
||||||
skip_all="Skipping; FS does not support spaces in filenames"
|
# FS supports spaces in filenames
|
||||||
test_done
|
test_set_prereq SPACES_IN_FILENAMES
|
||||||
fi
|
fi
|
||||||
|
|
||||||
test_expect_success 'editor with a space' '
|
test_expect_success SPACES_IN_FILENAMES 'editor with a space' '
|
||||||
|
|
||||||
chmod a+x "e space.sh" &&
|
chmod a+x "e space.sh" &&
|
||||||
GIT_EDITOR="./e\ space.sh" git commit --amend &&
|
GIT_EDITOR="./e\ space.sh" git commit --amend &&
|
||||||
@ -126,7 +126,7 @@ test_expect_success 'editor with a space' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
unset GIT_EDITOR
|
unset GIT_EDITOR
|
||||||
test_expect_success 'core.editor with a space' '
|
test_expect_success SPACES_IN_FILENAMES 'core.editor with a space' '
|
||||||
|
|
||||||
git config core.editor \"./e\ space.sh\" &&
|
git config core.editor \"./e\ space.sh\" &&
|
||||||
git commit --amend &&
|
git commit --amend &&
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
test_description='git reset --patch'
|
test_description='git reset --patch'
|
||||||
. ./lib-patch-mode.sh
|
. ./lib-patch-mode.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success PERL 'setup' '
|
||||||
mkdir dir &&
|
mkdir dir &&
|
||||||
echo parent > dir/foo &&
|
echo parent > dir/foo &&
|
||||||
echo dummy > bar &&
|
echo dummy > bar &&
|
||||||
@ -17,20 +17,20 @@ test_expect_success 'setup' '
|
|||||||
|
|
||||||
# note: bar sorts before foo, so the first 'n' is always to skip 'bar'
|
# note: bar sorts before foo, so the first 'n' is always to skip 'bar'
|
||||||
|
|
||||||
test_expect_success 'saying "n" does nothing' '
|
test_expect_success PERL 'saying "n" does nothing' '
|
||||||
set_and_save_state dir/foo work work
|
set_and_save_state dir/foo work work
|
||||||
(echo n; echo n) | git reset -p &&
|
(echo n; echo n) | git reset -p &&
|
||||||
verify_saved_state dir/foo &&
|
verify_saved_state dir/foo &&
|
||||||
verify_saved_state bar
|
verify_saved_state bar
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git reset -p' '
|
test_expect_success PERL 'git reset -p' '
|
||||||
(echo n; echo y) | git reset -p &&
|
(echo n; echo y) | git reset -p &&
|
||||||
verify_state dir/foo work head &&
|
verify_state dir/foo work head &&
|
||||||
verify_saved_state bar
|
verify_saved_state bar
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git reset -p HEAD^' '
|
test_expect_success PERL 'git reset -p HEAD^' '
|
||||||
(echo n; echo y) | git reset -p HEAD^ &&
|
(echo n; echo y) | git reset -p HEAD^ &&
|
||||||
verify_state dir/foo work parent &&
|
verify_state dir/foo work parent &&
|
||||||
verify_saved_state bar
|
verify_saved_state bar
|
||||||
@ -41,27 +41,27 @@ test_expect_success 'git reset -p HEAD^' '
|
|||||||
# dir/foo. There's always an extra 'n' to reject edits to dir/foo in
|
# dir/foo. There's always an extra 'n' to reject edits to dir/foo in
|
||||||
# the failure case (and thus get out of the loop).
|
# the failure case (and thus get out of the loop).
|
||||||
|
|
||||||
test_expect_success 'git reset -p dir' '
|
test_expect_success PERL 'git reset -p dir' '
|
||||||
set_state dir/foo work work
|
set_state dir/foo work work
|
||||||
(echo y; echo n) | git reset -p dir &&
|
(echo y; echo n) | git reset -p dir &&
|
||||||
verify_state dir/foo work head &&
|
verify_state dir/foo work head &&
|
||||||
verify_saved_state bar
|
verify_saved_state bar
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git reset -p -- foo (inside dir)' '
|
test_expect_success PERL 'git reset -p -- foo (inside dir)' '
|
||||||
set_state dir/foo work work
|
set_state dir/foo work work
|
||||||
(echo y; echo n) | (cd dir && git reset -p -- foo) &&
|
(echo y; echo n) | (cd dir && git reset -p -- foo) &&
|
||||||
verify_state dir/foo work head &&
|
verify_state dir/foo work head &&
|
||||||
verify_saved_state bar
|
verify_saved_state bar
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git reset -p HEAD^ -- dir' '
|
test_expect_success PERL 'git reset -p HEAD^ -- dir' '
|
||||||
(echo y; echo n) | git reset -p HEAD^ -- dir &&
|
(echo y; echo n) | git reset -p HEAD^ -- dir &&
|
||||||
verify_state dir/foo work parent &&
|
verify_state dir/foo work parent &&
|
||||||
verify_saved_state bar
|
verify_saved_state bar
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'none of this moved HEAD' '
|
test_expect_success PERL 'none of this moved HEAD' '
|
||||||
verify_saved_head
|
verify_saved_head
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -388,16 +388,15 @@ test_expect_success 'core.excludesfile' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'removal failure' '
|
test_expect_success SANITY 'removal failure' '
|
||||||
|
|
||||||
mkdir foo &&
|
mkdir foo &&
|
||||||
touch foo/bar &&
|
touch foo/bar &&
|
||||||
(exec <foo/bar &&
|
(exec <foo/bar &&
|
||||||
chmod 0 foo &&
|
chmod 0 foo &&
|
||||||
test_must_fail git clean -f -d)
|
test_must_fail git clean -f -d &&
|
||||||
|
chmod 755 foo)
|
||||||
'
|
'
|
||||||
chmod 755 foo
|
|
||||||
|
|
||||||
test_expect_success 'nested git work tree' '
|
test_expect_success 'nested git work tree' '
|
||||||
rm -fr foo bar &&
|
rm -fr foo bar &&
|
||||||
|
@ -793,7 +793,7 @@ test_expect_success 'commit --dry-run submodule summary (--amend)' '
|
|||||||
test_cmp expect output
|
test_cmp expect output
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'status succeeds in a read-only repository' '
|
test_expect_success POSIXPERM,SANITY 'status succeeds in a read-only repository' '
|
||||||
(
|
(
|
||||||
chmod a-w .git &&
|
chmod a-w .git &&
|
||||||
# make dir1/tracked stat-dirty
|
# make dir1/tracked stat-dirty
|
||||||
|
@ -10,11 +10,6 @@ Testing basic diff tool invocation
|
|||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq PERL; then
|
|
||||||
skip_all='skipping difftool tests, perl not available'
|
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
LF='
|
LF='
|
||||||
'
|
'
|
||||||
|
|
||||||
@ -50,7 +45,7 @@ prompt_given()
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Create a file on master and change it on branch
|
# Create a file on master and change it on branch
|
||||||
test_expect_success 'setup' '
|
test_expect_success PERL 'setup' '
|
||||||
echo master >file &&
|
echo master >file &&
|
||||||
git add file &&
|
git add file &&
|
||||||
git commit -m "added file" &&
|
git commit -m "added file" &&
|
||||||
@ -62,7 +57,7 @@ test_expect_success 'setup' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Configure a custom difftool.<tool>.cmd and use it
|
# Configure a custom difftool.<tool>.cmd and use it
|
||||||
test_expect_success 'custom commands' '
|
test_expect_success PERL 'custom commands' '
|
||||||
restore_test_defaults &&
|
restore_test_defaults &&
|
||||||
git config difftool.test-tool.cmd "cat \$REMOTE" &&
|
git config difftool.test-tool.cmd "cat \$REMOTE" &&
|
||||||
|
|
||||||
@ -75,13 +70,13 @@ test_expect_success 'custom commands' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Ensures that git-difftool ignores bogus --tool values
|
# Ensures that git-difftool ignores bogus --tool values
|
||||||
test_expect_success 'difftool ignores bad --tool values' '
|
test_expect_success PERL 'difftool ignores bad --tool values' '
|
||||||
diff=$(git difftool --no-prompt --tool=bad-tool branch)
|
diff=$(git difftool --no-prompt --tool=bad-tool branch)
|
||||||
test "$?" = 1 &&
|
test "$?" = 1 &&
|
||||||
test "$diff" = ""
|
test "$diff" = ""
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'difftool honors --gui' '
|
test_expect_success PERL 'difftool honors --gui' '
|
||||||
git config merge.tool bogus-tool &&
|
git config merge.tool bogus-tool &&
|
||||||
git config diff.tool bogus-tool &&
|
git config diff.tool bogus-tool &&
|
||||||
git config diff.guitool test-tool &&
|
git config diff.guitool test-tool &&
|
||||||
@ -92,7 +87,7 @@ test_expect_success 'difftool honors --gui' '
|
|||||||
restore_test_defaults
|
restore_test_defaults
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'difftool --gui works without configured diff.guitool' '
|
test_expect_success PERL 'difftool --gui works without configured diff.guitool' '
|
||||||
git config diff.tool test-tool &&
|
git config diff.tool test-tool &&
|
||||||
|
|
||||||
diff=$(git difftool --no-prompt --gui branch) &&
|
diff=$(git difftool --no-prompt --gui branch) &&
|
||||||
@ -102,7 +97,7 @@ test_expect_success 'difftool --gui works without configured diff.guitool' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Specify the diff tool using $GIT_DIFF_TOOL
|
# Specify the diff tool using $GIT_DIFF_TOOL
|
||||||
test_expect_success 'GIT_DIFF_TOOL variable' '
|
test_expect_success PERL 'GIT_DIFF_TOOL variable' '
|
||||||
git config --unset diff.tool
|
git config --unset diff.tool
|
||||||
GIT_DIFF_TOOL=test-tool &&
|
GIT_DIFF_TOOL=test-tool &&
|
||||||
export GIT_DIFF_TOOL &&
|
export GIT_DIFF_TOOL &&
|
||||||
@ -115,7 +110,7 @@ test_expect_success 'GIT_DIFF_TOOL variable' '
|
|||||||
|
|
||||||
# Test the $GIT_*_TOOL variables and ensure
|
# Test the $GIT_*_TOOL variables and ensure
|
||||||
# that $GIT_DIFF_TOOL always wins unless --tool is specified
|
# that $GIT_DIFF_TOOL always wins unless --tool is specified
|
||||||
test_expect_success 'GIT_DIFF_TOOL overrides' '
|
test_expect_success PERL 'GIT_DIFF_TOOL overrides' '
|
||||||
git config diff.tool bogus-tool &&
|
git config diff.tool bogus-tool &&
|
||||||
git config merge.tool bogus-tool &&
|
git config merge.tool bogus-tool &&
|
||||||
|
|
||||||
@ -136,7 +131,7 @@ test_expect_success 'GIT_DIFF_TOOL overrides' '
|
|||||||
|
|
||||||
# Test that we don't have to pass --no-prompt to difftool
|
# Test that we don't have to pass --no-prompt to difftool
|
||||||
# when $GIT_DIFFTOOL_NO_PROMPT is true
|
# when $GIT_DIFFTOOL_NO_PROMPT is true
|
||||||
test_expect_success 'GIT_DIFFTOOL_NO_PROMPT variable' '
|
test_expect_success PERL 'GIT_DIFFTOOL_NO_PROMPT variable' '
|
||||||
GIT_DIFFTOOL_NO_PROMPT=true &&
|
GIT_DIFFTOOL_NO_PROMPT=true &&
|
||||||
export GIT_DIFFTOOL_NO_PROMPT &&
|
export GIT_DIFFTOOL_NO_PROMPT &&
|
||||||
|
|
||||||
@ -148,7 +143,7 @@ test_expect_success 'GIT_DIFFTOOL_NO_PROMPT variable' '
|
|||||||
|
|
||||||
# git-difftool supports the difftool.prompt variable.
|
# git-difftool supports the difftool.prompt variable.
|
||||||
# Test that GIT_DIFFTOOL_PROMPT can override difftool.prompt = false
|
# Test that GIT_DIFFTOOL_PROMPT can override difftool.prompt = false
|
||||||
test_expect_success 'GIT_DIFFTOOL_PROMPT variable' '
|
test_expect_success PERL 'GIT_DIFFTOOL_PROMPT variable' '
|
||||||
git config difftool.prompt false &&
|
git config difftool.prompt false &&
|
||||||
GIT_DIFFTOOL_PROMPT=true &&
|
GIT_DIFFTOOL_PROMPT=true &&
|
||||||
export GIT_DIFFTOOL_PROMPT &&
|
export GIT_DIFFTOOL_PROMPT &&
|
||||||
@ -160,7 +155,7 @@ test_expect_success 'GIT_DIFFTOOL_PROMPT variable' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Test that we don't have to pass --no-prompt when difftool.prompt is false
|
# Test that we don't have to pass --no-prompt when difftool.prompt is false
|
||||||
test_expect_success 'difftool.prompt config variable is false' '
|
test_expect_success PERL 'difftool.prompt config variable is false' '
|
||||||
git config difftool.prompt false &&
|
git config difftool.prompt false &&
|
||||||
|
|
||||||
diff=$(git difftool branch) &&
|
diff=$(git difftool branch) &&
|
||||||
@ -170,7 +165,7 @@ test_expect_success 'difftool.prompt config variable is false' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Test that we don't have to pass --no-prompt when mergetool.prompt is false
|
# Test that we don't have to pass --no-prompt when mergetool.prompt is false
|
||||||
test_expect_success 'difftool merge.prompt = false' '
|
test_expect_success PERL 'difftool merge.prompt = false' '
|
||||||
git config --unset difftool.prompt
|
git config --unset difftool.prompt
|
||||||
git config mergetool.prompt false &&
|
git config mergetool.prompt false &&
|
||||||
|
|
||||||
@ -181,7 +176,7 @@ test_expect_success 'difftool merge.prompt = false' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Test that the -y flag can override difftool.prompt = true
|
# Test that the -y flag can override difftool.prompt = true
|
||||||
test_expect_success 'difftool.prompt can overridden with -y' '
|
test_expect_success PERL 'difftool.prompt can overridden with -y' '
|
||||||
git config difftool.prompt true &&
|
git config difftool.prompt true &&
|
||||||
|
|
||||||
diff=$(git difftool -y branch) &&
|
diff=$(git difftool -y branch) &&
|
||||||
@ -191,7 +186,7 @@ test_expect_success 'difftool.prompt can overridden with -y' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Test that the --prompt flag can override difftool.prompt = false
|
# Test that the --prompt flag can override difftool.prompt = false
|
||||||
test_expect_success 'difftool.prompt can overridden with --prompt' '
|
test_expect_success PERL 'difftool.prompt can overridden with --prompt' '
|
||||||
git config difftool.prompt false &&
|
git config difftool.prompt false &&
|
||||||
|
|
||||||
prompt=$(echo | git difftool --prompt branch | tail -1) &&
|
prompt=$(echo | git difftool --prompt branch | tail -1) &&
|
||||||
@ -201,7 +196,7 @@ test_expect_success 'difftool.prompt can overridden with --prompt' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
# Test that the last flag passed on the command-line wins
|
# Test that the last flag passed on the command-line wins
|
||||||
test_expect_success 'difftool last flag wins' '
|
test_expect_success PERL 'difftool last flag wins' '
|
||||||
diff=$(git difftool --prompt --no-prompt branch) &&
|
diff=$(git difftool --prompt --no-prompt branch) &&
|
||||||
test "$diff" = "branch" &&
|
test "$diff" = "branch" &&
|
||||||
|
|
||||||
@ -215,7 +210,7 @@ test_expect_success 'difftool last flag wins' '
|
|||||||
|
|
||||||
# git-difftool falls back to git-mergetool config variables
|
# git-difftool falls back to git-mergetool config variables
|
||||||
# so test that behavior here
|
# so test that behavior here
|
||||||
test_expect_success 'difftool + mergetool config variables' '
|
test_expect_success PERL 'difftool + mergetool config variables' '
|
||||||
remove_config_vars
|
remove_config_vars
|
||||||
git config merge.tool test-tool &&
|
git config merge.tool test-tool &&
|
||||||
git config mergetool.test-tool.cmd "cat \$LOCAL" &&
|
git config mergetool.test-tool.cmd "cat \$LOCAL" &&
|
||||||
@ -233,7 +228,7 @@ test_expect_success 'difftool + mergetool config variables' '
|
|||||||
restore_test_defaults
|
restore_test_defaults
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'difftool.<tool>.path' '
|
test_expect_success PERL 'difftool.<tool>.path' '
|
||||||
git config difftool.tkdiff.path echo &&
|
git config difftool.tkdiff.path echo &&
|
||||||
diff=$(git difftool --tool=tkdiff --no-prompt branch) &&
|
diff=$(git difftool --tool=tkdiff --no-prompt branch) &&
|
||||||
git config --unset difftool.tkdiff.path &&
|
git config --unset difftool.tkdiff.path &&
|
||||||
@ -243,32 +238,32 @@ test_expect_success 'difftool.<tool>.path' '
|
|||||||
restore_test_defaults
|
restore_test_defaults
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'difftool --extcmd=cat' '
|
test_expect_success PERL 'difftool --extcmd=cat' '
|
||||||
diff=$(git difftool --no-prompt --extcmd=cat branch) &&
|
diff=$(git difftool --no-prompt --extcmd=cat branch) &&
|
||||||
test "$diff" = branch"$LF"master
|
test "$diff" = branch"$LF"master
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'difftool --extcmd cat' '
|
test_expect_success PERL 'difftool --extcmd cat' '
|
||||||
diff=$(git difftool --no-prompt --extcmd cat branch) &&
|
diff=$(git difftool --no-prompt --extcmd cat branch) &&
|
||||||
test "$diff" = branch"$LF"master
|
test "$diff" = branch"$LF"master
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'difftool -x cat' '
|
test_expect_success PERL 'difftool -x cat' '
|
||||||
diff=$(git difftool --no-prompt -x cat branch) &&
|
diff=$(git difftool --no-prompt -x cat branch) &&
|
||||||
test "$diff" = branch"$LF"master
|
test "$diff" = branch"$LF"master
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'difftool --extcmd echo arg1' '
|
test_expect_success PERL 'difftool --extcmd echo arg1' '
|
||||||
diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"echo\ \$1\" branch)
|
diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"echo\ \$1\" branch)
|
||||||
test "$diff" = file
|
test "$diff" = file
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'difftool --extcmd cat arg1' '
|
test_expect_success PERL 'difftool --extcmd cat arg1' '
|
||||||
diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"cat\ \$1\" branch)
|
diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"cat\ \$1\" branch)
|
||||||
test "$diff" = master
|
test "$diff" = master
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'difftool --extcmd cat arg2' '
|
test_expect_success PERL 'difftool --extcmd cat arg2' '
|
||||||
diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"cat\ \$2\" branch)
|
diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"cat\ \$2\" branch)
|
||||||
test "$diff" = branch
|
test "$diff" = branch
|
||||||
'
|
'
|
||||||
|
@ -3,20 +3,17 @@
|
|||||||
test_description='git send-email'
|
test_description='git send-email'
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
if ! test_have_prereq PERL; then
|
# May be altered later in the test
|
||||||
skip_all='skipping git send-email tests, perl not available'
|
PREREQ="PERL"
|
||||||
test_done
|
|
||||||
fi
|
|
||||||
|
|
||||||
PROG='git send-email'
|
test_expect_success $PREREQ \
|
||||||
test_expect_success \
|
|
||||||
'prepare reference tree' \
|
'prepare reference tree' \
|
||||||
'echo "1A quick brown fox jumps over the" >file &&
|
'echo "1A quick brown fox jumps over the" >file &&
|
||||||
echo "lazy dog" >>file &&
|
echo "lazy dog" >>file &&
|
||||||
git add file &&
|
git add file &&
|
||||||
GIT_AUTHOR_NAME="A" git commit -a -m "Initial."'
|
GIT_AUTHOR_NAME="A" git commit -a -m "Initial."'
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success $PREREQ \
|
||||||
'Setup helper tool' \
|
'Setup helper tool' \
|
||||||
'(echo "#!$SHELL_PATH"
|
'(echo "#!$SHELL_PATH"
|
||||||
echo shift
|
echo shift
|
||||||
@ -36,7 +33,7 @@ clean_fake_sendmail() {
|
|||||||
rm -f commandline* msgtxt*
|
rm -f commandline* msgtxt*
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_success 'Extract patches' '
|
test_expect_success $PREREQ 'Extract patches' '
|
||||||
patches=`git format-patch -s --cc="One <one@example.com>" --cc=two@example.com -n HEAD^1`
|
patches=`git format-patch -s --cc="One <one@example.com>" --cc=two@example.com -n HEAD^1`
|
||||||
'
|
'
|
||||||
|
|
||||||
@ -57,49 +54,56 @@ test_no_confirm () {
|
|||||||
|
|
||||||
# Exit immediately to prevent hang if a no-confirm test fails
|
# Exit immediately to prevent hang if a no-confirm test fails
|
||||||
check_no_confirm () {
|
check_no_confirm () {
|
||||||
test -f no_confirm_okay || {
|
if ! test -f no_confirm_okay
|
||||||
skip_all='confirm test failed; skipping remaining tests to prevent hanging'
|
then
|
||||||
test_done
|
say 'confirm test failed; skipping remaining tests to prevent hanging'
|
||||||
}
|
PREREQ="$PREREQ,CHECK_NO_CONFIRM"
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_success 'No confirm with --suppress-cc' '
|
test_expect_success $PREREQ 'No confirm with --suppress-cc' '
|
||||||
test_no_confirm --suppress-cc=sob
|
test_no_confirm --suppress-cc=sob &&
|
||||||
|
check_no_confirm
|
||||||
'
|
'
|
||||||
check_no_confirm
|
|
||||||
|
|
||||||
test_expect_success 'No confirm with --confirm=never' '
|
|
||||||
test_no_confirm --confirm=never
|
test_expect_success $PREREQ 'No confirm with --confirm=never' '
|
||||||
|
test_no_confirm --confirm=never &&
|
||||||
|
check_no_confirm
|
||||||
'
|
'
|
||||||
check_no_confirm
|
|
||||||
|
|
||||||
# leave sendemail.confirm set to never after this so that none of the
|
# leave sendemail.confirm set to never after this so that none of the
|
||||||
# remaining tests prompt unintentionally.
|
# remaining tests prompt unintentionally.
|
||||||
test_expect_success 'No confirm with sendemail.confirm=never' '
|
test_expect_success $PREREQ 'No confirm with sendemail.confirm=never' '
|
||||||
git config sendemail.confirm never &&
|
git config sendemail.confirm never &&
|
||||||
test_no_confirm --compose --subject=foo
|
test_no_confirm --compose --subject=foo &&
|
||||||
|
check_no_confirm
|
||||||
'
|
'
|
||||||
check_no_confirm
|
|
||||||
|
|
||||||
test_expect_success 'Send patches' '
|
test_expect_success $PREREQ 'Send patches' '
|
||||||
git send-email --suppress-cc=sob --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors
|
git send-email --suppress-cc=sob --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' '
|
||||||
cat >expected <<\EOF
|
cat >expected <<\EOF
|
||||||
!nobody@example.com!
|
!nobody@example.com!
|
||||||
!author@example.com!
|
!author@example.com!
|
||||||
!one@example.com!
|
!one@example.com!
|
||||||
!two@example.com!
|
!two@example.com!
|
||||||
EOF
|
EOF
|
||||||
test_expect_success \
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ \
|
||||||
'Verify commandline' \
|
'Verify commandline' \
|
||||||
'test_cmp expected commandline1'
|
'test_cmp expected commandline1'
|
||||||
|
|
||||||
test_expect_success 'Send patches with --envelope-sender' '
|
test_expect_success $PREREQ 'Send patches with --envelope-sender' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
git send-email --envelope-sender="Patch Contributer <patch@example.com>" --suppress-cc=sob --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors
|
git send-email --envelope-sender="Patch Contributer <patch@example.com>" --suppress-cc=sob --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' '
|
||||||
cat >expected <<\EOF
|
cat >expected <<\EOF
|
||||||
!patch@example.com!
|
!patch@example.com!
|
||||||
!-i!
|
!-i!
|
||||||
@ -108,15 +112,18 @@ cat >expected <<\EOF
|
|||||||
!one@example.com!
|
!one@example.com!
|
||||||
!two@example.com!
|
!two@example.com!
|
||||||
EOF
|
EOF
|
||||||
test_expect_success \
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ \
|
||||||
'Verify commandline' \
|
'Verify commandline' \
|
||||||
'test_cmp expected commandline1'
|
'test_cmp expected commandline1'
|
||||||
|
|
||||||
test_expect_success 'Send patches with --envelope-sender=auto' '
|
test_expect_success $PREREQ 'Send patches with --envelope-sender=auto' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
git send-email --envelope-sender=auto --suppress-cc=sob --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors
|
git send-email --envelope-sender=auto --suppress-cc=sob --from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' '
|
||||||
cat >expected <<\EOF
|
cat >expected <<\EOF
|
||||||
!nobody@example.com!
|
!nobody@example.com!
|
||||||
!-i!
|
!-i!
|
||||||
@ -125,10 +132,13 @@ cat >expected <<\EOF
|
|||||||
!one@example.com!
|
!one@example.com!
|
||||||
!two@example.com!
|
!two@example.com!
|
||||||
EOF
|
EOF
|
||||||
test_expect_success \
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ \
|
||||||
'Verify commandline' \
|
'Verify commandline' \
|
||||||
'test_cmp expected commandline1'
|
'test_cmp expected commandline1'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' "
|
||||||
cat >expected-show-all-headers <<\EOF
|
cat >expected-show-all-headers <<\EOF
|
||||||
0001-Second.patch
|
0001-Second.patch
|
||||||
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
||||||
@ -158,8 +168,9 @@ References: <unique-message-id@example.com>
|
|||||||
|
|
||||||
Result: OK
|
Result: OK
|
||||||
EOF
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
test_expect_success 'Show all headers' '
|
test_expect_success $PREREQ 'Show all headers' '
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
--suppress-cc=sob \
|
--suppress-cc=sob \
|
||||||
@ -177,7 +188,7 @@ test_expect_success 'Show all headers' '
|
|||||||
test_cmp expected-show-all-headers actual-show-all-headers
|
test_cmp expected-show-all-headers actual-show-all-headers
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Prompting works' '
|
test_expect_success $PREREQ 'Prompting works' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
(echo "Example <from@example.com>"
|
(echo "Example <from@example.com>"
|
||||||
echo "to@example.com"
|
echo "to@example.com"
|
||||||
@ -190,7 +201,7 @@ test_expect_success 'Prompting works' '
|
|||||||
grep "^To: to@example.com\$" msgtxt1
|
grep "^To: to@example.com\$" msgtxt1
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'cccmd works' '
|
test_expect_success $PREREQ 'cccmd works' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
cp $patches cccmd.patch &&
|
cp $patches cccmd.patch &&
|
||||||
echo cccmd--cccmd@example.com >>cccmd.patch &&
|
echo cccmd--cccmd@example.com >>cccmd.patch &&
|
||||||
@ -209,10 +220,10 @@ test_expect_success 'cccmd works' '
|
|||||||
grep "^ cccmd@example.com" msgtxt1
|
grep "^ cccmd@example.com" msgtxt1
|
||||||
'
|
'
|
||||||
|
|
||||||
z8=zzzzzzzz
|
test_expect_success $PREREQ 'reject long lines' '
|
||||||
z64=$z8$z8$z8$z8$z8$z8$z8$z8
|
z8=zzzzzzzz &&
|
||||||
z512=$z64$z64$z64$z64$z64$z64$z64$z64
|
z64=$z8$z8$z8$z8$z8$z8$z8$z8 &&
|
||||||
test_expect_success 'reject long lines' '
|
z512=$z64$z64$z64$z64$z64$z64$z64$z64 &&
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
cp $patches longline.patch &&
|
cp $patches longline.patch &&
|
||||||
echo $z512$z512 >>longline.patch &&
|
echo $z512$z512 >>longline.patch &&
|
||||||
@ -225,11 +236,11 @@ test_expect_success 'reject long lines' '
|
|||||||
grep longline.patch errors
|
grep longline.patch errors
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'no patch was sent' '
|
test_expect_success $PREREQ 'no patch was sent' '
|
||||||
! test -e commandline1
|
! test -e commandline1
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Author From: in message body' '
|
test_expect_success $PREREQ 'Author From: in message body' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
git send-email \
|
git send-email \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
@ -240,7 +251,7 @@ test_expect_success 'Author From: in message body' '
|
|||||||
grep "From: A <author@example.com>" msgbody1
|
grep "From: A <author@example.com>" msgbody1
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Author From: not in message body' '
|
test_expect_success $PREREQ 'Author From: not in message body' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
git send-email \
|
git send-email \
|
||||||
--from="A <author@example.com>" \
|
--from="A <author@example.com>" \
|
||||||
@ -251,7 +262,7 @@ test_expect_success 'Author From: not in message body' '
|
|||||||
! grep "From: A <author@example.com>" msgbody1
|
! grep "From: A <author@example.com>" msgbody1
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'allow long lines with --no-validate' '
|
test_expect_success $PREREQ 'allow long lines with --no-validate' '
|
||||||
git send-email \
|
git send-email \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
--to=nobody@example.com \
|
--to=nobody@example.com \
|
||||||
@ -261,7 +272,7 @@ test_expect_success 'allow long lines with --no-validate' '
|
|||||||
2>errors
|
2>errors
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Invalid In-Reply-To' '
|
test_expect_success $PREREQ 'Invalid In-Reply-To' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
git send-email \
|
git send-email \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
@ -273,7 +284,7 @@ test_expect_success 'Invalid In-Reply-To' '
|
|||||||
! grep "^In-Reply-To: < *>" msgtxt1
|
! grep "^In-Reply-To: < *>" msgtxt1
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Valid In-Reply-To when prompting' '
|
test_expect_success $PREREQ 'Valid In-Reply-To when prompting' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
(echo "From Example <from@example.com>"
|
(echo "From Example <from@example.com>"
|
||||||
echo "To Example <to@example.com>"
|
echo "To Example <to@example.com>"
|
||||||
@ -284,7 +295,7 @@ test_expect_success 'Valid In-Reply-To when prompting' '
|
|||||||
! grep "^In-Reply-To: < *>" msgtxt1
|
! grep "^In-Reply-To: < *>" msgtxt1
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'setup fake editor' '
|
test_expect_success $PREREQ 'setup fake editor' '
|
||||||
(echo "#!$SHELL_PATH" &&
|
(echo "#!$SHELL_PATH" &&
|
||||||
echo "echo fake edit >>\"\$1\""
|
echo "echo fake edit >>\"\$1\""
|
||||||
) >fake-editor &&
|
) >fake-editor &&
|
||||||
@ -293,7 +304,7 @@ test_expect_success 'setup fake editor' '
|
|||||||
|
|
||||||
test_set_editor "$(pwd)/fake-editor"
|
test_set_editor "$(pwd)/fake-editor"
|
||||||
|
|
||||||
test_expect_success '--compose works' '
|
test_expect_success $PREREQ '--compose works' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
git send-email \
|
git send-email \
|
||||||
--compose --subject foo \
|
--compose --subject foo \
|
||||||
@ -304,14 +315,15 @@ test_expect_success '--compose works' '
|
|||||||
2>errors
|
2>errors
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'first message is compose text' '
|
test_expect_success $PREREQ 'first message is compose text' '
|
||||||
grep "^fake edit" msgtxt1
|
grep "^fake edit" msgtxt1
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'second message is patch' '
|
test_expect_success $PREREQ 'second message is patch' '
|
||||||
grep "Subject:.*Second" msgtxt2
|
grep "Subject:.*Second" msgtxt2
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' "
|
||||||
cat >expected-suppress-sob <<\EOF
|
cat >expected-suppress-sob <<\EOF
|
||||||
0001-Second.patch
|
0001-Second.patch
|
||||||
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
||||||
@ -338,6 +350,7 @@ X-Mailer: X-MAILER-STRING
|
|||||||
|
|
||||||
Result: OK
|
Result: OK
|
||||||
EOF
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
test_suppression () {
|
test_suppression () {
|
||||||
git send-email \
|
git send-email \
|
||||||
@ -354,11 +367,12 @@ test_suppression () {
|
|||||||
test_cmp expected-suppress-$1${2+"-$2"} actual-suppress-$1${2+"-$2"}
|
test_cmp expected-suppress-$1${2+"-$2"} actual-suppress-$1${2+"-$2"}
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_success 'sendemail.cc set' '
|
test_expect_success $PREREQ 'sendemail.cc set' '
|
||||||
git config sendemail.cc cc@example.com &&
|
git config sendemail.cc cc@example.com &&
|
||||||
test_suppression sob
|
test_suppression sob
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' "
|
||||||
cat >expected-suppress-sob <<\EOF
|
cat >expected-suppress-sob <<\EOF
|
||||||
0001-Second.patch
|
0001-Second.patch
|
||||||
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
||||||
@ -383,12 +397,14 @@ X-Mailer: X-MAILER-STRING
|
|||||||
|
|
||||||
Result: OK
|
Result: OK
|
||||||
EOF
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
test_expect_success 'sendemail.cc unset' '
|
test_expect_success $PREREQ 'sendemail.cc unset' '
|
||||||
git config --unset sendemail.cc &&
|
git config --unset sendemail.cc &&
|
||||||
test_suppression sob
|
test_suppression sob
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' "
|
||||||
cat >expected-suppress-cccmd <<\EOF
|
cat >expected-suppress-cccmd <<\EOF
|
||||||
0001-Second.patch
|
0001-Second.patch
|
||||||
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
||||||
@ -416,14 +432,16 @@ X-Mailer: X-MAILER-STRING
|
|||||||
|
|
||||||
Result: OK
|
Result: OK
|
||||||
EOF
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
test_expect_success 'sendemail.cccmd' '
|
test_expect_success $PREREQ 'sendemail.cccmd' '
|
||||||
echo echo cc-cmd@example.com > cccmd &&
|
echo echo cc-cmd@example.com > cccmd &&
|
||||||
chmod +x cccmd &&
|
chmod +x cccmd &&
|
||||||
git config sendemail.cccmd ./cccmd &&
|
git config sendemail.cccmd ./cccmd &&
|
||||||
test_suppression cccmd
|
test_suppression cccmd
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' '
|
||||||
cat >expected-suppress-all <<\EOF
|
cat >expected-suppress-all <<\EOF
|
||||||
0001-Second.patch
|
0001-Second.patch
|
||||||
Dry-OK. Log says:
|
Dry-OK. Log says:
|
||||||
@ -439,11 +457,13 @@ X-Mailer: X-MAILER-STRING
|
|||||||
|
|
||||||
Result: OK
|
Result: OK
|
||||||
EOF
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success '--suppress-cc=all' '
|
test_expect_success $PREREQ '--suppress-cc=all' '
|
||||||
test_suppression all
|
test_suppression all
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' "
|
||||||
cat >expected-suppress-body <<\EOF
|
cat >expected-suppress-body <<\EOF
|
||||||
0001-Second.patch
|
0001-Second.patch
|
||||||
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
||||||
@ -471,11 +491,13 @@ X-Mailer: X-MAILER-STRING
|
|||||||
|
|
||||||
Result: OK
|
Result: OK
|
||||||
EOF
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
test_expect_success '--suppress-cc=body' '
|
test_expect_success $PREREQ '--suppress-cc=body' '
|
||||||
test_suppression body
|
test_suppression body
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' "
|
||||||
cat >expected-suppress-body-cccmd <<\EOF
|
cat >expected-suppress-body-cccmd <<\EOF
|
||||||
0001-Second.patch
|
0001-Second.patch
|
||||||
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
||||||
@ -500,11 +522,13 @@ X-Mailer: X-MAILER-STRING
|
|||||||
|
|
||||||
Result: OK
|
Result: OK
|
||||||
EOF
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
test_expect_success '--suppress-cc=body --suppress-cc=cccmd' '
|
test_expect_success $PREREQ '--suppress-cc=body --suppress-cc=cccmd' '
|
||||||
test_suppression body cccmd
|
test_suppression body cccmd
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' "
|
||||||
cat >expected-suppress-sob <<\EOF
|
cat >expected-suppress-sob <<\EOF
|
||||||
0001-Second.patch
|
0001-Second.patch
|
||||||
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
||||||
@ -529,12 +553,14 @@ X-Mailer: X-MAILER-STRING
|
|||||||
|
|
||||||
Result: OK
|
Result: OK
|
||||||
EOF
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
test_expect_success '--suppress-cc=sob' '
|
test_expect_success $PREREQ '--suppress-cc=sob' '
|
||||||
git config --unset sendemail.cccmd
|
git config --unset sendemail.cccmd
|
||||||
test_suppression sob
|
test_suppression sob
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' "
|
||||||
cat >expected-suppress-bodycc <<\EOF
|
cat >expected-suppress-bodycc <<\EOF
|
||||||
0001-Second.patch
|
0001-Second.patch
|
||||||
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
||||||
@ -562,11 +588,13 @@ X-Mailer: X-MAILER-STRING
|
|||||||
|
|
||||||
Result: OK
|
Result: OK
|
||||||
EOF
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
test_expect_success '--suppress-cc=bodycc' '
|
test_expect_success $PREREQ '--suppress-cc=bodycc' '
|
||||||
test_suppression bodycc
|
test_suppression bodycc
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' "
|
||||||
cat >expected-suppress-cc <<\EOF
|
cat >expected-suppress-cc <<\EOF
|
||||||
0001-Second.patch
|
0001-Second.patch
|
||||||
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
(mbox) Adding cc: A <author@example.com> from line 'From: A <author@example.com>'
|
||||||
@ -588,8 +616,9 @@ X-Mailer: X-MAILER-STRING
|
|||||||
|
|
||||||
Result: OK
|
Result: OK
|
||||||
EOF
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
test_expect_success '--suppress-cc=cc' '
|
test_expect_success $PREREQ '--suppress-cc=cc' '
|
||||||
test_suppression cc
|
test_suppression cc
|
||||||
'
|
'
|
||||||
|
|
||||||
@ -604,23 +633,23 @@ test_confirm () {
|
|||||||
grep "Send this email" stdout
|
grep "Send this email" stdout
|
||||||
}
|
}
|
||||||
|
|
||||||
test_expect_success '--confirm=always' '
|
test_expect_success $PREREQ '--confirm=always' '
|
||||||
test_confirm --confirm=always --suppress-cc=all
|
test_confirm --confirm=always --suppress-cc=all
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success '--confirm=auto' '
|
test_expect_success $PREREQ '--confirm=auto' '
|
||||||
test_confirm --confirm=auto
|
test_confirm --confirm=auto
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success '--confirm=cc' '
|
test_expect_success $PREREQ '--confirm=cc' '
|
||||||
test_confirm --confirm=cc
|
test_confirm --confirm=cc
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success '--confirm=compose' '
|
test_expect_success $PREREQ '--confirm=compose' '
|
||||||
test_confirm --confirm=compose --compose
|
test_confirm --confirm=compose --compose
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'confirm by default (due to cc)' '
|
test_expect_success $PREREQ 'confirm by default (due to cc)' '
|
||||||
CONFIRM=$(git config --get sendemail.confirm) &&
|
CONFIRM=$(git config --get sendemail.confirm) &&
|
||||||
git config --unset sendemail.confirm &&
|
git config --unset sendemail.confirm &&
|
||||||
test_confirm
|
test_confirm
|
||||||
@ -629,7 +658,7 @@ test_expect_success 'confirm by default (due to cc)' '
|
|||||||
test $ret = "0"
|
test $ret = "0"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'confirm by default (due to --compose)' '
|
test_expect_success $PREREQ 'confirm by default (due to --compose)' '
|
||||||
CONFIRM=$(git config --get sendemail.confirm) &&
|
CONFIRM=$(git config --get sendemail.confirm) &&
|
||||||
git config --unset sendemail.confirm &&
|
git config --unset sendemail.confirm &&
|
||||||
test_confirm --suppress-cc=all --compose
|
test_confirm --suppress-cc=all --compose
|
||||||
@ -638,7 +667,7 @@ test_expect_success 'confirm by default (due to --compose)' '
|
|||||||
test $ret = "0"
|
test $ret = "0"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'confirm detects EOF (inform assumes y)' '
|
test_expect_success $PREREQ 'confirm detects EOF (inform assumes y)' '
|
||||||
CONFIRM=$(git config --get sendemail.confirm) &&
|
CONFIRM=$(git config --get sendemail.confirm) &&
|
||||||
git config --unset sendemail.confirm &&
|
git config --unset sendemail.confirm &&
|
||||||
rm -fr outdir &&
|
rm -fr outdir &&
|
||||||
@ -654,7 +683,7 @@ test_expect_success 'confirm detects EOF (inform assumes y)' '
|
|||||||
test $ret = "0"
|
test $ret = "0"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'confirm detects EOF (auto causes failure)' '
|
test_expect_success $PREREQ 'confirm detects EOF (auto causes failure)' '
|
||||||
CONFIRM=$(git config --get sendemail.confirm) &&
|
CONFIRM=$(git config --get sendemail.confirm) &&
|
||||||
git config sendemail.confirm auto &&
|
git config sendemail.confirm auto &&
|
||||||
GIT_SEND_EMAIL_NOTTY=1 &&
|
GIT_SEND_EMAIL_NOTTY=1 &&
|
||||||
@ -669,7 +698,7 @@ test_expect_success 'confirm detects EOF (auto causes failure)' '
|
|||||||
test $ret = "0"
|
test $ret = "0"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'confirm doesnt loop forever' '
|
test_expect_success $PREREQ 'confirm doesnt loop forever' '
|
||||||
CONFIRM=$(git config --get sendemail.confirm) &&
|
CONFIRM=$(git config --get sendemail.confirm) &&
|
||||||
git config sendemail.confirm auto &&
|
git config sendemail.confirm auto &&
|
||||||
GIT_SEND_EMAIL_NOTTY=1 &&
|
GIT_SEND_EMAIL_NOTTY=1 &&
|
||||||
@ -684,7 +713,7 @@ test_expect_success 'confirm doesnt loop forever' '
|
|||||||
test $ret = "0"
|
test $ret = "0"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'utf8 Cc is rfc2047 encoded' '
|
test_expect_success $PREREQ 'utf8 Cc is rfc2047 encoded' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
rm -fr outdir &&
|
rm -fr outdir &&
|
||||||
git format-patch -1 -o outdir --cc="àéìöú <utf8@example.com>" &&
|
git format-patch -1 -o outdir --cc="àéìöú <utf8@example.com>" &&
|
||||||
@ -697,7 +726,7 @@ test_expect_success 'utf8 Cc is rfc2047 encoded' '
|
|||||||
grep "=?UTF-8?q?=C3=A0=C3=A9=C3=AC=C3=B6=C3=BA?= <utf8@example.com>"
|
grep "=?UTF-8?q?=C3=A0=C3=A9=C3=AC=C3=B6=C3=BA?= <utf8@example.com>"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success '--compose adds MIME for utf8 body' '
|
test_expect_success $PREREQ '--compose adds MIME for utf8 body' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
(echo "#!$SHELL_PATH" &&
|
(echo "#!$SHELL_PATH" &&
|
||||||
echo "echo utf8 body: àéìöú >>\"\$1\""
|
echo "echo utf8 body: àéìöú >>\"\$1\""
|
||||||
@ -714,7 +743,7 @@ test_expect_success '--compose adds MIME for utf8 body' '
|
|||||||
grep "^Content-Type: text/plain; charset=UTF-8" msgtxt1
|
grep "^Content-Type: text/plain; charset=UTF-8" msgtxt1
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success '--compose respects user mime type' '
|
test_expect_success $PREREQ '--compose respects user mime type' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
(echo "#!$SHELL_PATH" &&
|
(echo "#!$SHELL_PATH" &&
|
||||||
echo "(echo MIME-Version: 1.0"
|
echo "(echo MIME-Version: 1.0"
|
||||||
@ -737,7 +766,7 @@ test_expect_success '--compose respects user mime type' '
|
|||||||
! grep "^Content-Type: text/plain; charset=UTF-8" msgtxt1
|
! grep "^Content-Type: text/plain; charset=UTF-8" msgtxt1
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success '--compose adds MIME for utf8 subject' '
|
test_expect_success $PREREQ '--compose adds MIME for utf8 subject' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
GIT_EDITOR="\"$(pwd)/fake-editor\"" \
|
GIT_EDITOR="\"$(pwd)/fake-editor\"" \
|
||||||
git send-email \
|
git send-email \
|
||||||
@ -750,7 +779,7 @@ test_expect_success '--compose adds MIME for utf8 subject' '
|
|||||||
grep "^Subject: =?UTF-8?q?utf8-s=C3=BCbj=C3=ABct?=" msgtxt1
|
grep "^Subject: =?UTF-8?q?utf8-s=C3=BCbj=C3=ABct?=" msgtxt1
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'detects ambiguous reference/file conflict' '
|
test_expect_success $PREREQ 'detects ambiguous reference/file conflict' '
|
||||||
echo master > master &&
|
echo master > master &&
|
||||||
git add master &&
|
git add master &&
|
||||||
git commit -m"add master" &&
|
git commit -m"add master" &&
|
||||||
@ -758,7 +787,7 @@ test_expect_success 'detects ambiguous reference/file conflict' '
|
|||||||
grep disambiguate errors
|
grep disambiguate errors
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'feed two files' '
|
test_expect_success $PREREQ 'feed two files' '
|
||||||
rm -fr outdir &&
|
rm -fr outdir &&
|
||||||
git format-patch -2 -o outdir &&
|
git format-patch -2 -o outdir &&
|
||||||
git send-email \
|
git send-email \
|
||||||
@ -771,7 +800,7 @@ test_expect_success 'feed two files' '
|
|||||||
test "z$(sed -n -e 2p subjects)" = "zSubject: [PATCH 2/2] add master"
|
test "z$(sed -n -e 2p subjects)" = "zSubject: [PATCH 2/2] add master"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'in-reply-to but no threading' '
|
test_expect_success $PREREQ 'in-reply-to but no threading' '
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
@ -782,7 +811,7 @@ test_expect_success 'in-reply-to but no threading' '
|
|||||||
grep "In-Reply-To: <in-reply-id@example.com>"
|
grep "In-Reply-To: <in-reply-id@example.com>"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'no in-reply-to and no threading' '
|
test_expect_success $PREREQ 'no in-reply-to and no threading' '
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
@ -792,7 +821,7 @@ test_expect_success 'no in-reply-to and no threading' '
|
|||||||
! grep "In-Reply-To: " stdout
|
! grep "In-Reply-To: " stdout
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'threading but no chain-reply-to' '
|
test_expect_success $PREREQ 'threading but no chain-reply-to' '
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
@ -803,7 +832,7 @@ test_expect_success 'threading but no chain-reply-to' '
|
|||||||
grep "In-Reply-To: " stdout
|
grep "In-Reply-To: " stdout
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'warning with an implicit --chain-reply-to' '
|
test_expect_success $PREREQ 'warning with an implicit --chain-reply-to' '
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
@ -812,7 +841,7 @@ test_expect_success 'warning with an implicit --chain-reply-to' '
|
|||||||
grep "no-chain-reply-to" errors
|
grep "no-chain-reply-to" errors
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'no warning with an explicit --chain-reply-to' '
|
test_expect_success $PREREQ 'no warning with an explicit --chain-reply-to' '
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
@ -822,7 +851,7 @@ test_expect_success 'no warning with an explicit --chain-reply-to' '
|
|||||||
! grep "no-chain-reply-to" errors
|
! grep "no-chain-reply-to" errors
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'no warning with an explicit --no-chain-reply-to' '
|
test_expect_success $PREREQ 'no warning with an explicit --no-chain-reply-to' '
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
@ -832,7 +861,7 @@ test_expect_success 'no warning with an explicit --no-chain-reply-to' '
|
|||||||
! grep "no-chain-reply-to" errors
|
! grep "no-chain-reply-to" errors
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'no warning with sendemail.chainreplyto = false' '
|
test_expect_success $PREREQ 'no warning with sendemail.chainreplyto = false' '
|
||||||
git config sendemail.chainreplyto false &&
|
git config sendemail.chainreplyto false &&
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
@ -842,7 +871,7 @@ test_expect_success 'no warning with sendemail.chainreplyto = false' '
|
|||||||
! grep "no-chain-reply-to" errors
|
! grep "no-chain-reply-to" errors
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'no warning with sendemail.chainreplyto = true' '
|
test_expect_success $PREREQ 'no warning with sendemail.chainreplyto = true' '
|
||||||
git config sendemail.chainreplyto true &&
|
git config sendemail.chainreplyto true &&
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
@ -852,7 +881,7 @@ test_expect_success 'no warning with sendemail.chainreplyto = true' '
|
|||||||
! grep "no-chain-reply-to" errors
|
! grep "no-chain-reply-to" errors
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'sendemail.to works' '
|
test_expect_success $PREREQ 'sendemail.to works' '
|
||||||
git config --replace-all sendemail.to "Somebody <somebody@ex.com>" &&
|
git config --replace-all sendemail.to "Somebody <somebody@ex.com>" &&
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
@ -861,7 +890,7 @@ test_expect_success 'sendemail.to works' '
|
|||||||
grep "To: Somebody <somebody@ex.com>" stdout
|
grep "To: Somebody <somebody@ex.com>" stdout
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success '--no-to overrides sendemail.to' '
|
test_expect_success $PREREQ '--no-to overrides sendemail.to' '
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
@ -872,7 +901,7 @@ test_expect_success '--no-to overrides sendemail.to' '
|
|||||||
! grep "To: Somebody <somebody@ex.com>" stdout
|
! grep "To: Somebody <somebody@ex.com>" stdout
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'sendemail.cc works' '
|
test_expect_success $PREREQ 'sendemail.cc works' '
|
||||||
git config --replace-all sendemail.cc "Somebody <somebody@ex.com>" &&
|
git config --replace-all sendemail.cc "Somebody <somebody@ex.com>" &&
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
@ -882,7 +911,7 @@ test_expect_success 'sendemail.cc works' '
|
|||||||
grep "Cc: Somebody <somebody@ex.com>" stdout
|
grep "Cc: Somebody <somebody@ex.com>" stdout
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success '--no-cc overrides sendemail.cc' '
|
test_expect_success $PREREQ '--no-cc overrides sendemail.cc' '
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
@ -894,7 +923,7 @@ test_expect_success '--no-cc overrides sendemail.cc' '
|
|||||||
! grep "Cc: Somebody <somebody@ex.com>" stdout
|
! grep "Cc: Somebody <somebody@ex.com>" stdout
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'sendemail.bcc works' '
|
test_expect_success $PREREQ 'sendemail.bcc works' '
|
||||||
git config --replace-all sendemail.bcc "Other <other@ex.com>" &&
|
git config --replace-all sendemail.bcc "Other <other@ex.com>" &&
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
@ -905,7 +934,7 @@ test_expect_success 'sendemail.bcc works' '
|
|||||||
grep "RCPT TO:<other@ex.com>" stdout
|
grep "RCPT TO:<other@ex.com>" stdout
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success '--no-bcc overrides sendemail.bcc' '
|
test_expect_success $PREREQ '--no-bcc overrides sendemail.bcc' '
|
||||||
git send-email \
|
git send-email \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
--from="Example <nobody@example.com>" \
|
--from="Example <nobody@example.com>" \
|
||||||
@ -918,6 +947,7 @@ test_expect_success '--no-bcc overrides sendemail.bcc' '
|
|||||||
! grep "RCPT TO:<other@ex.com>" stdout
|
! grep "RCPT TO:<other@ex.com>" stdout
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' '
|
||||||
cat >email-using-8bit <<EOF
|
cat >email-using-8bit <<EOF
|
||||||
From fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001
|
From fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001
|
||||||
Message-Id: <bogus-message-id@example.com>
|
Message-Id: <bogus-message-id@example.com>
|
||||||
@ -927,14 +957,17 @@ Subject: subject goes here
|
|||||||
|
|
||||||
Dieser deutsche Text enthält einen Umlaut!
|
Dieser deutsche Text enthält einen Umlaut!
|
||||||
EOF
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' '
|
||||||
cat >content-type-decl <<EOF
|
cat >content-type-decl <<EOF
|
||||||
MIME-Version: 1.0
|
MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
EOF
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'asks about and fixes 8bit encodings' '
|
test_expect_success $PREREQ 'asks about and fixes 8bit encodings' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
echo |
|
echo |
|
||||||
git send-email --from=author@example.com --to=nobody@example.com \
|
git send-email --from=author@example.com --to=nobody@example.com \
|
||||||
@ -947,7 +980,7 @@ test_expect_success 'asks about and fixes 8bit encodings' '
|
|||||||
test_cmp actual content-type-decl
|
test_cmp actual content-type-decl
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'sendemail.8bitEncoding works' '
|
test_expect_success $PREREQ 'sendemail.8bitEncoding works' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
git config sendemail.assume8bitEncoding UTF-8 &&
|
git config sendemail.assume8bitEncoding UTF-8 &&
|
||||||
echo bogus |
|
echo bogus |
|
||||||
@ -958,7 +991,7 @@ test_expect_success 'sendemail.8bitEncoding works' '
|
|||||||
test_cmp actual content-type-decl
|
test_cmp actual content-type-decl
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success '--8bit-encoding overrides sendemail.8bitEncoding' '
|
test_expect_success $PREREQ '--8bit-encoding overrides sendemail.8bitEncoding' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
git config sendemail.assume8bitEncoding "bogus too" &&
|
git config sendemail.assume8bitEncoding "bogus too" &&
|
||||||
echo bogus |
|
echo bogus |
|
||||||
@ -970,6 +1003,7 @@ test_expect_success '--8bit-encoding overrides sendemail.8bitEncoding' '
|
|||||||
test_cmp actual content-type-decl
|
test_cmp actual content-type-decl
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' '
|
||||||
cat >email-using-8bit <<EOF
|
cat >email-using-8bit <<EOF
|
||||||
From fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001
|
From fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001
|
||||||
Message-Id: <bogus-message-id@example.com>
|
Message-Id: <bogus-message-id@example.com>
|
||||||
@ -979,12 +1013,15 @@ Subject: Dieser Betreff enthält auch einen Umlaut!
|
|||||||
|
|
||||||
Nothing to see here.
|
Nothing to see here.
|
||||||
EOF
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success $PREREQ 'setup expect' '
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
Subject: =?UTF-8?q?Dieser=20Betreff=20enth=C3=A4lt=20auch=20einen=20Umlaut!?=
|
Subject: =?UTF-8?q?Dieser=20Betreff=20enth=C3=A4lt=20auch=20einen=20Umlaut!?=
|
||||||
EOF
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success '--8bit-encoding also treats subject' '
|
test_expect_success $PREREQ '--8bit-encoding also treats subject' '
|
||||||
clean_fake_sendmail &&
|
clean_fake_sendmail &&
|
||||||
echo bogus |
|
echo bogus |
|
||||||
git send-email --from=author@example.com --to=nobody@example.com \
|
git send-email --from=author@example.com --to=nobody@example.com \
|
||||||
|
@ -95,8 +95,6 @@ test_expect_success 'fresh clone with svn.authors-file in config' '
|
|||||||
(
|
(
|
||||||
rm -r "$GIT_DIR" &&
|
rm -r "$GIT_DIR" &&
|
||||||
test x = x"$(git config svn.authorsfile)" &&
|
test x = x"$(git config svn.authorsfile)" &&
|
||||||
HOME="`pwd`" &&
|
|
||||||
export HOME &&
|
|
||||||
test_config="$HOME"/.gitconfig &&
|
test_config="$HOME"/.gitconfig &&
|
||||||
unset GIT_CONFIG_NOGLOBAL &&
|
unset GIT_CONFIG_NOGLOBAL &&
|
||||||
unset GIT_DIR &&
|
unset GIT_DIR &&
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
test_description='Test export of commits to CVS'
|
test_description='Test export of commits to CVS'
|
||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
. "$TEST_DIRECTORY"/lib-prereq-FILEMODE.sh
|
||||||
|
|
||||||
if ! test_have_prereq PERL; then
|
if ! test_have_prereq PERL; then
|
||||||
skip_all='skipping git cvsexportcommit tests, perl not available'
|
skip_all='skipping git cvsexportcommit tests, perl not available'
|
||||||
@ -229,11 +230,6 @@ test_expect_success \
|
|||||||
test_must_fail git cvsexportcommit -c $id
|
test_must_fail git cvsexportcommit -c $id
|
||||||
)'
|
)'
|
||||||
|
|
||||||
if ! test "$(git config --bool core.filemode)" = false
|
|
||||||
then
|
|
||||||
test_set_prereq FILEMODE
|
|
||||||
fi
|
|
||||||
|
|
||||||
test_expect_success FILEMODE \
|
test_expect_success FILEMODE \
|
||||||
'Retain execute bit' \
|
'Retain execute bit' \
|
||||||
'mkdir G &&
|
'mkdir G &&
|
||||||
|
@ -3,17 +3,14 @@
|
|||||||
test_description='git cvsimport basic tests'
|
test_description='git cvsimport basic tests'
|
||||||
. ./lib-cvs.sh
|
. ./lib-cvs.sh
|
||||||
|
|
||||||
if ! test_have_prereq PERL; then
|
test_expect_success PERL 'setup cvsroot environment' '
|
||||||
skip_all='skipping git cvsimport tests, perl not available'
|
CVSROOT=$(pwd)/cvsroot &&
|
||||||
test_done
|
export CVSROOT
|
||||||
fi
|
'
|
||||||
|
|
||||||
CVSROOT=$(pwd)/cvsroot
|
test_expect_success PERL 'setup cvsroot' '$CVS init'
|
||||||
export CVSROOT
|
|
||||||
|
|
||||||
test_expect_success 'setup cvsroot' '$CVS init'
|
test_expect_success PERL 'setup a cvs module' '
|
||||||
|
|
||||||
test_expect_success 'setup a cvs module' '
|
|
||||||
|
|
||||||
mkdir "$CVSROOT/module" &&
|
mkdir "$CVSROOT/module" &&
|
||||||
$CVS co -d module-cvs module &&
|
$CVS co -d module-cvs module &&
|
||||||
@ -45,23 +42,23 @@ EOF
|
|||||||
cd ..
|
cd ..
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'import a trivial module' '
|
test_expect_success PERL 'import a trivial module' '
|
||||||
|
|
||||||
git cvsimport -a -R -z 0 -C module-git module &&
|
git cvsimport -a -R -z 0 -C module-git module &&
|
||||||
test_cmp module-cvs/o_fortuna module-git/o_fortuna
|
test_cmp module-cvs/o_fortuna module-git/o_fortuna
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'pack refs' 'cd module-git && git gc && cd ..'
|
test_expect_success PERL 'pack refs' 'cd module-git && git gc && cd ..'
|
||||||
|
|
||||||
test_expect_success 'initial import has correct .git/cvs-revisions' '
|
test_expect_success PERL 'initial import has correct .git/cvs-revisions' '
|
||||||
|
|
||||||
(cd module-git &&
|
(cd module-git &&
|
||||||
git log --format="o_fortuna 1.1 %H" -1) > expected &&
|
git log --format="o_fortuna 1.1 %H" -1) > expected &&
|
||||||
test_cmp expected module-git/.git/cvs-revisions
|
test_cmp expected module-git/.git/cvs-revisions
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'update cvs module' '
|
test_expect_success PERL 'update cvs module' '
|
||||||
|
|
||||||
cd module-cvs &&
|
cd module-cvs &&
|
||||||
cat <<EOF >o_fortuna &&
|
cat <<EOF >o_fortuna &&
|
||||||
@ -90,7 +87,7 @@ EOF
|
|||||||
cd ..
|
cd ..
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'update git module' '
|
test_expect_success PERL 'update git module' '
|
||||||
|
|
||||||
cd module-git &&
|
cd module-git &&
|
||||||
git cvsimport -a -R -z 0 module &&
|
git cvsimport -a -R -z 0 module &&
|
||||||
@ -100,7 +97,7 @@ test_expect_success 'update git module' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'update has correct .git/cvs-revisions' '
|
test_expect_success PERL 'update has correct .git/cvs-revisions' '
|
||||||
|
|
||||||
(cd module-git &&
|
(cd module-git &&
|
||||||
git log --format="o_fortuna 1.1 %H" -1 HEAD^ &&
|
git log --format="o_fortuna 1.1 %H" -1 HEAD^ &&
|
||||||
@ -108,7 +105,7 @@ test_expect_success 'update has correct .git/cvs-revisions' '
|
|||||||
test_cmp expected module-git/.git/cvs-revisions
|
test_cmp expected module-git/.git/cvs-revisions
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'update cvs module' '
|
test_expect_success PERL 'update cvs module' '
|
||||||
|
|
||||||
cd module-cvs &&
|
cd module-cvs &&
|
||||||
echo 1 >tick &&
|
echo 1 >tick &&
|
||||||
@ -118,7 +115,7 @@ test_expect_success 'update cvs module' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'cvsimport.module config works' '
|
test_expect_success PERL 'cvsimport.module config works' '
|
||||||
|
|
||||||
cd module-git &&
|
cd module-git &&
|
||||||
git config cvsimport.module module &&
|
git config cvsimport.module module &&
|
||||||
@ -129,7 +126,7 @@ test_expect_success 'cvsimport.module config works' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'second update has correct .git/cvs-revisions' '
|
test_expect_success PERL 'second update has correct .git/cvs-revisions' '
|
||||||
|
|
||||||
(cd module-git &&
|
(cd module-git &&
|
||||||
git log --format="o_fortuna 1.1 %H" -1 HEAD^^ &&
|
git log --format="o_fortuna 1.1 %H" -1 HEAD^^ &&
|
||||||
@ -138,7 +135,7 @@ test_expect_success 'second update has correct .git/cvs-revisions' '
|
|||||||
test_cmp expected module-git/.git/cvs-revisions
|
test_cmp expected module-git/.git/cvs-revisions
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'import from a CVS working tree' '
|
test_expect_success PERL 'import from a CVS working tree' '
|
||||||
|
|
||||||
$CVS co -d import-from-wt module &&
|
$CVS co -d import-from-wt module &&
|
||||||
cd import-from-wt &&
|
cd import-from-wt &&
|
||||||
@ -150,12 +147,12 @@ test_expect_success 'import from a CVS working tree' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'no .git/cvs-revisions created by default' '
|
test_expect_success PERL 'no .git/cvs-revisions created by default' '
|
||||||
|
|
||||||
! test -e import-from-wt/.git/cvs-revisions
|
! test -e import-from-wt/.git/cvs-revisions
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'test entire HEAD' 'test_cmp_branch_tree master'
|
test_expect_success PERL 'test entire HEAD' 'test_cmp_branch_tree master'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
@ -34,50 +34,49 @@
|
|||||||
test_description='git cvsimport handling of vendor branches'
|
test_description='git cvsimport handling of vendor branches'
|
||||||
. ./lib-cvs.sh
|
. ./lib-cvs.sh
|
||||||
|
|
||||||
CVSROOT="$TEST_DIRECTORY"/t9601/cvsroot
|
setup_cvs_test_repository t9601
|
||||||
export CVSROOT
|
|
||||||
|
|
||||||
test_expect_success 'import a module with a vendor branch' '
|
test_expect_success PERL 'import a module with a vendor branch' '
|
||||||
|
|
||||||
git cvsimport -C module-git module
|
git cvsimport -C module-git module
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check HEAD out of cvs repository' 'test_cvs_co master'
|
test_expect_success PERL 'check HEAD out of cvs repository' 'test_cvs_co master'
|
||||||
|
|
||||||
test_expect_success 'check master out of git repository' 'test_git_co master'
|
test_expect_success PERL 'check master out of git repository' 'test_git_co master'
|
||||||
|
|
||||||
test_expect_success 'check a file that was imported once' '
|
test_expect_success PERL 'check a file that was imported once' '
|
||||||
|
|
||||||
test_cmp_branch_file master imported-once.txt
|
test_cmp_branch_file master imported-once.txt
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure 'check a file that was imported twice' '
|
test_expect_failure PERL 'check a file that was imported twice' '
|
||||||
|
|
||||||
test_cmp_branch_file master imported-twice.txt
|
test_cmp_branch_file master imported-twice.txt
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check a file that was imported then modified on HEAD' '
|
test_expect_success PERL 'check a file that was imported then modified on HEAD' '
|
||||||
|
|
||||||
test_cmp_branch_file master imported-modified.txt
|
test_cmp_branch_file master imported-modified.txt
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check a file that was imported, modified, then imported again' '
|
test_expect_success PERL 'check a file that was imported, modified, then imported again' '
|
||||||
|
|
||||||
test_cmp_branch_file master imported-modified-imported.txt
|
test_cmp_branch_file master imported-modified-imported.txt
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'check a file that was added to HEAD then imported' '
|
test_expect_success PERL 'check a file that was added to HEAD then imported' '
|
||||||
|
|
||||||
test_cmp_branch_file master added-imported.txt
|
test_cmp_branch_file master added-imported.txt
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'a vendor branch whose tag has been removed' '
|
test_expect_success PERL 'a vendor branch whose tag has been removed' '
|
||||||
|
|
||||||
test_cmp_branch_file master imported-anonymously.txt
|
test_cmp_branch_file master imported-anonymously.txt
|
||||||
|
|
||||||
|
@ -6,70 +6,69 @@
|
|||||||
test_description='git cvsimport handling of branches and tags'
|
test_description='git cvsimport handling of branches and tags'
|
||||||
. ./lib-cvs.sh
|
. ./lib-cvs.sh
|
||||||
|
|
||||||
CVSROOT="$TEST_DIRECTORY"/t9602/cvsroot
|
setup_cvs_test_repository t9602
|
||||||
export CVSROOT
|
|
||||||
|
|
||||||
test_expect_success 'import module' '
|
test_expect_success PERL 'import module' '
|
||||||
|
|
||||||
git cvsimport -C module-git module
|
git cvsimport -C module-git module
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'test branch master' '
|
test_expect_success PERL 'test branch master' '
|
||||||
|
|
||||||
test_cmp_branch_tree master
|
test_cmp_branch_tree master
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'test branch vendorbranch' '
|
test_expect_success PERL 'test branch vendorbranch' '
|
||||||
|
|
||||||
test_cmp_branch_tree vendorbranch
|
test_cmp_branch_tree vendorbranch
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure 'test branch B_FROM_INITIALS' '
|
test_expect_failure PERL 'test branch B_FROM_INITIALS' '
|
||||||
|
|
||||||
test_cmp_branch_tree B_FROM_INITIALS
|
test_cmp_branch_tree B_FROM_INITIALS
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure 'test branch B_FROM_INITIALS_BUT_ONE' '
|
test_expect_failure PERL 'test branch B_FROM_INITIALS_BUT_ONE' '
|
||||||
|
|
||||||
test_cmp_branch_tree B_FROM_INITIALS_BUT_ONE
|
test_cmp_branch_tree B_FROM_INITIALS_BUT_ONE
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure 'test branch B_MIXED' '
|
test_expect_failure PERL 'test branch B_MIXED' '
|
||||||
|
|
||||||
test_cmp_branch_tree B_MIXED
|
test_cmp_branch_tree B_MIXED
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'test branch B_SPLIT' '
|
test_expect_success PERL 'test branch B_SPLIT' '
|
||||||
|
|
||||||
test_cmp_branch_tree B_SPLIT
|
test_cmp_branch_tree B_SPLIT
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure 'test tag vendortag' '
|
test_expect_failure PERL 'test tag vendortag' '
|
||||||
|
|
||||||
test_cmp_branch_tree vendortag
|
test_cmp_branch_tree vendortag
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'test tag T_ALL_INITIAL_FILES' '
|
test_expect_success PERL 'test tag T_ALL_INITIAL_FILES' '
|
||||||
|
|
||||||
test_cmp_branch_tree T_ALL_INITIAL_FILES
|
test_cmp_branch_tree T_ALL_INITIAL_FILES
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure 'test tag T_ALL_INITIAL_FILES_BUT_ONE' '
|
test_expect_failure PERL 'test tag T_ALL_INITIAL_FILES_BUT_ONE' '
|
||||||
|
|
||||||
test_cmp_branch_tree T_ALL_INITIAL_FILES_BUT_ONE
|
test_cmp_branch_tree T_ALL_INITIAL_FILES_BUT_ONE
|
||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure 'test tag T_MIXED' '
|
test_expect_failure PERL 'test tag T_MIXED' '
|
||||||
|
|
||||||
test_cmp_branch_tree T_MIXED
|
test_cmp_branch_tree T_MIXED
|
||||||
|
|
||||||
|
@ -14,8 +14,7 @@
|
|||||||
test_description='git cvsimport testing for correct patchset estimation'
|
test_description='git cvsimport testing for correct patchset estimation'
|
||||||
. ./lib-cvs.sh
|
. ./lib-cvs.sh
|
||||||
|
|
||||||
CVSROOT="$TEST_DIRECTORY"/t9603/cvsroot
|
setup_cvs_test_repository t9603
|
||||||
export CVSROOT
|
|
||||||
|
|
||||||
test_expect_failure 'import with criss cross times on revisions' '
|
test_expect_failure 'import with criss cross times on revisions' '
|
||||||
|
|
||||||
|
119
t/test-lib.sh
119
t/test-lib.sh
@ -331,12 +331,35 @@ test_set_prereq () {
|
|||||||
satisfied=" "
|
satisfied=" "
|
||||||
|
|
||||||
test_have_prereq () {
|
test_have_prereq () {
|
||||||
case $satisfied in
|
# prerequisites can be concatenated with ','
|
||||||
*" $1 "*)
|
save_IFS=$IFS
|
||||||
: yes, have it ;;
|
IFS=,
|
||||||
*)
|
set -- $*
|
||||||
! : nope ;;
|
IFS=$save_IFS
|
||||||
esac
|
|
||||||
|
total_prereq=0
|
||||||
|
ok_prereq=0
|
||||||
|
missing_prereq=
|
||||||
|
|
||||||
|
for prerequisite
|
||||||
|
do
|
||||||
|
total_prereq=$(($total_prereq + 1))
|
||||||
|
case $satisfied in
|
||||||
|
*" $prerequisite "*)
|
||||||
|
ok_prereq=$(($ok_prereq + 1))
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Keep a list of missing prerequisites
|
||||||
|
if test -z "$missing_prereq"
|
||||||
|
then
|
||||||
|
missing_prereq=$prerequisite
|
||||||
|
else
|
||||||
|
missing_prereq="$prerequisite,$missing_prereq"
|
||||||
|
fi
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
test $total_prereq = $ok_prereq
|
||||||
}
|
}
|
||||||
|
|
||||||
# You are not expected to call test_ok_ and test_failure_ directly, use
|
# You are not expected to call test_ok_ and test_failure_ directly, use
|
||||||
@ -398,8 +421,14 @@ test_skip () {
|
|||||||
fi
|
fi
|
||||||
case "$to_skip" in
|
case "$to_skip" in
|
||||||
t)
|
t)
|
||||||
|
of_prereq=
|
||||||
|
if test "$missing_prereq" != "$prereq"
|
||||||
|
then
|
||||||
|
of_prereq=" of $prereq"
|
||||||
|
fi
|
||||||
|
|
||||||
say_color skip >&3 "skipping test: $@"
|
say_color skip >&3 "skipping test: $@"
|
||||||
say_color skip "ok $test_count # skip $1"
|
say_color skip "ok $test_count # skip $1 (missing $missing_prereq${of_prereq})"
|
||||||
: true
|
: true
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@ -657,28 +686,31 @@ test_when_finished () {
|
|||||||
test_create_repo () {
|
test_create_repo () {
|
||||||
test "$#" = 1 ||
|
test "$#" = 1 ||
|
||||||
error "bug in the test script: not 1 parameter to test-create-repo"
|
error "bug in the test script: not 1 parameter to test-create-repo"
|
||||||
owd=`pwd`
|
|
||||||
repo="$1"
|
repo="$1"
|
||||||
mkdir -p "$repo"
|
mkdir -p "$repo"
|
||||||
cd "$repo" || error "Cannot setup test environment"
|
(
|
||||||
"$GIT_EXEC_PATH/git-init" "--template=$TEST_DIRECTORY/../templates/blt/" >&3 2>&4 ||
|
cd "$repo" || error "Cannot setup test environment"
|
||||||
error "cannot run git init -- have you built things yet?"
|
"$GIT_EXEC_PATH/git-init" "--template=$GIT_BUILD_DIR/templates/blt/" >&3 2>&4 ||
|
||||||
mv .git/hooks .git/hooks-disabled
|
error "cannot run git init -- have you built things yet?"
|
||||||
cd "$owd"
|
mv .git/hooks .git/hooks-disabled
|
||||||
|
) || exit
|
||||||
}
|
}
|
||||||
|
|
||||||
test_done () {
|
test_done () {
|
||||||
GIT_EXIT_OK=t
|
GIT_EXIT_OK=t
|
||||||
test_results_dir="$TEST_DIRECTORY/test-results"
|
|
||||||
mkdir -p "$test_results_dir"
|
|
||||||
test_results_path="$test_results_dir/${0%.sh}-$$.counts"
|
|
||||||
|
|
||||||
echo "total $test_count" >> $test_results_path
|
if test -z "$HARNESS_ACTIVE"; then
|
||||||
echo "success $test_success" >> $test_results_path
|
test_results_dir="$TEST_DIRECTORY/test-results"
|
||||||
echo "fixed $test_fixed" >> $test_results_path
|
mkdir -p "$test_results_dir"
|
||||||
echo "broken $test_broken" >> $test_results_path
|
test_results_path="$test_results_dir/${0%.sh}-$$.counts"
|
||||||
echo "failed $test_failure" >> $test_results_path
|
|
||||||
echo "" >> $test_results_path
|
echo "total $test_count" >> $test_results_path
|
||||||
|
echo "success $test_success" >> $test_results_path
|
||||||
|
echo "fixed $test_fixed" >> $test_results_path
|
||||||
|
echo "broken $test_broken" >> $test_results_path
|
||||||
|
echo "failed $test_failure" >> $test_results_path
|
||||||
|
echo "" >> $test_results_path
|
||||||
|
fi
|
||||||
|
|
||||||
if test "$test_fixed" != 0
|
if test "$test_fixed" != 0
|
||||||
then
|
then
|
||||||
@ -720,7 +752,15 @@ test_done () {
|
|||||||
|
|
||||||
# Test the binaries we have just built. The tests are kept in
|
# Test the binaries we have just built. The tests are kept in
|
||||||
# t/ subdirectory and are run in 'trash directory' subdirectory.
|
# t/ subdirectory and are run in 'trash directory' subdirectory.
|
||||||
TEST_DIRECTORY=$(pwd)
|
if test -z "$TEST_DIRECTORY"
|
||||||
|
then
|
||||||
|
# We allow tests to override this, in case they want to run tests
|
||||||
|
# outside of t/, e.g. for running tests on the test library
|
||||||
|
# itself.
|
||||||
|
TEST_DIRECTORY=$(pwd)
|
||||||
|
fi
|
||||||
|
GIT_BUILD_DIR="$TEST_DIRECTORY"/..
|
||||||
|
|
||||||
if test -n "$valgrind"
|
if test -n "$valgrind"
|
||||||
then
|
then
|
||||||
make_symlink () {
|
make_symlink () {
|
||||||
@ -747,7 +787,7 @@ then
|
|||||||
test -x "$1" || return
|
test -x "$1" || return
|
||||||
|
|
||||||
base=$(basename "$1")
|
base=$(basename "$1")
|
||||||
symlink_target=$TEST_DIRECTORY/../$base
|
symlink_target=$GIT_BUILD_DIR/$base
|
||||||
# do not override scripts
|
# do not override scripts
|
||||||
if test -x "$symlink_target" &&
|
if test -x "$symlink_target" &&
|
||||||
test ! -d "$symlink_target" &&
|
test ! -d "$symlink_target" &&
|
||||||
@ -766,7 +806,7 @@ then
|
|||||||
# override all git executables in TEST_DIRECTORY/..
|
# override all git executables in TEST_DIRECTORY/..
|
||||||
GIT_VALGRIND=$TEST_DIRECTORY/valgrind
|
GIT_VALGRIND=$TEST_DIRECTORY/valgrind
|
||||||
mkdir -p "$GIT_VALGRIND"/bin
|
mkdir -p "$GIT_VALGRIND"/bin
|
||||||
for file in $TEST_DIRECTORY/../git* $TEST_DIRECTORY/../test-*
|
for file in $GIT_BUILD_DIR/git* $GIT_BUILD_DIR/test-*
|
||||||
do
|
do
|
||||||
make_valgrind_symlink $file
|
make_valgrind_symlink $file
|
||||||
done
|
done
|
||||||
@ -787,10 +827,10 @@ then
|
|||||||
elif test -n "$GIT_TEST_INSTALLED" ; then
|
elif test -n "$GIT_TEST_INSTALLED" ; then
|
||||||
GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path) ||
|
GIT_EXEC_PATH=$($GIT_TEST_INSTALLED/git --exec-path) ||
|
||||||
error "Cannot run git from $GIT_TEST_INSTALLED."
|
error "Cannot run git from $GIT_TEST_INSTALLED."
|
||||||
PATH=$GIT_TEST_INSTALLED:$TEST_DIRECTORY/..:$PATH
|
PATH=$GIT_TEST_INSTALLED:$GIT_BUILD_DIR:$PATH
|
||||||
GIT_EXEC_PATH=${GIT_TEST_EXEC_PATH:-$GIT_EXEC_PATH}
|
GIT_EXEC_PATH=${GIT_TEST_EXEC_PATH:-$GIT_EXEC_PATH}
|
||||||
else # normal case, use ../bin-wrappers only unless $with_dashes:
|
else # normal case, use ../bin-wrappers only unless $with_dashes:
|
||||||
git_bin_dir="$TEST_DIRECTORY/../bin-wrappers"
|
git_bin_dir="$GIT_BUILD_DIR/bin-wrappers"
|
||||||
if ! test -x "$git_bin_dir/git" ; then
|
if ! test -x "$git_bin_dir/git" ; then
|
||||||
if test -z "$with_dashes" ; then
|
if test -z "$with_dashes" ; then
|
||||||
say "$git_bin_dir/git is not executable; using GIT_EXEC_PATH"
|
say "$git_bin_dir/git is not executable; using GIT_EXEC_PATH"
|
||||||
@ -798,18 +838,18 @@ else # normal case, use ../bin-wrappers only unless $with_dashes:
|
|||||||
with_dashes=t
|
with_dashes=t
|
||||||
fi
|
fi
|
||||||
PATH="$git_bin_dir:$PATH"
|
PATH="$git_bin_dir:$PATH"
|
||||||
GIT_EXEC_PATH=$TEST_DIRECTORY/..
|
GIT_EXEC_PATH=$GIT_BUILD_DIR
|
||||||
if test -n "$with_dashes" ; then
|
if test -n "$with_dashes" ; then
|
||||||
PATH="$TEST_DIRECTORY/..:$PATH"
|
PATH="$GIT_BUILD_DIR:$PATH"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
GIT_TEMPLATE_DIR=$(pwd)/../templates/blt
|
GIT_TEMPLATE_DIR="$GIT_BUILD_DIR"/templates/blt
|
||||||
unset GIT_CONFIG
|
unset GIT_CONFIG
|
||||||
GIT_CONFIG_NOSYSTEM=1
|
GIT_CONFIG_NOSYSTEM=1
|
||||||
GIT_CONFIG_NOGLOBAL=1
|
GIT_CONFIG_NOGLOBAL=1
|
||||||
export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG_NOSYSTEM GIT_CONFIG_NOGLOBAL
|
export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG_NOSYSTEM GIT_CONFIG_NOGLOBAL
|
||||||
|
|
||||||
. ../GIT-BUILD-OPTIONS
|
. "$GIT_BUILD_DIR"/GIT-BUILD-OPTIONS
|
||||||
|
|
||||||
if test -z "$GIT_TEST_CMP"
|
if test -z "$GIT_TEST_CMP"
|
||||||
then
|
then
|
||||||
@ -821,22 +861,22 @@ then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
GITPERLLIB=$(pwd)/../perl/blib/lib:$(pwd)/../perl/blib/arch/auto/Git
|
GITPERLLIB="$GIT_BUILD_DIR"/perl/blib/lib:"$GIT_BUILD_DIR"/perl/blib/arch/auto/Git
|
||||||
export GITPERLLIB
|
export GITPERLLIB
|
||||||
test -d ../templates/blt || {
|
test -d "$GIT_BUILD_DIR"/templates/blt || {
|
||||||
error "You haven't built things yet, have you?"
|
error "You haven't built things yet, have you?"
|
||||||
}
|
}
|
||||||
|
|
||||||
if test -z "$GIT_TEST_INSTALLED" && test -z "$NO_PYTHON"
|
if test -z "$GIT_TEST_INSTALLED" && test -z "$NO_PYTHON"
|
||||||
then
|
then
|
||||||
GITPYTHONLIB="$(pwd)/../git_remote_helpers/build/lib"
|
GITPYTHONLIB="$GIT_BUILD_DIR/git_remote_helpers/build/lib"
|
||||||
export GITPYTHONLIB
|
export GITPYTHONLIB
|
||||||
test -d ../git_remote_helpers/build || {
|
test -d "$GIT_BUILD_DIR"/git_remote_helpers/build || {
|
||||||
error "You haven't built git_remote_helpers yet, have you?"
|
error "You haven't built git_remote_helpers yet, have you?"
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! test -x ../test-chmtime; then
|
if ! test -x "$GIT_BUILD_DIR"/test-chmtime; then
|
||||||
echo >&2 'You need to build test-chmtime:'
|
echo >&2 'You need to build test-chmtime:'
|
||||||
echo >&2 'Run "make test-chmtime" in the source (toplevel) directory'
|
echo >&2 'Run "make test-chmtime" in the source (toplevel) directory'
|
||||||
exit 1
|
exit 1
|
||||||
@ -861,6 +901,9 @@ test_create_repo "$test"
|
|||||||
# in subprocesses like git equals our $PWD (for pathname comparisons).
|
# in subprocesses like git equals our $PWD (for pathname comparisons).
|
||||||
cd -P "$test" || exit 1
|
cd -P "$test" || exit 1
|
||||||
|
|
||||||
|
HOME=$(pwd)
|
||||||
|
export HOME
|
||||||
|
|
||||||
this_test=${0##*/}
|
this_test=${0##*/}
|
||||||
this_test=${this_test%%-*}
|
this_test=${this_test%%-*}
|
||||||
for skp in $GIT_SKIP_TESTS
|
for skp in $GIT_SKIP_TESTS
|
||||||
@ -922,3 +965,7 @@ test -z "$NO_PYTHON" && test_set_prereq PYTHON
|
|||||||
# test whether the filesystem supports symbolic links
|
# test whether the filesystem supports symbolic links
|
||||||
ln -s x y 2>/dev/null && test -h y 2>/dev/null && test_set_prereq SYMLINKS
|
ln -s x y 2>/dev/null && test -h y 2>/dev/null && test_set_prereq SYMLINKS
|
||||||
rm -f y
|
rm -f y
|
||||||
|
|
||||||
|
# When the tests are run as root, permission tests will report that
|
||||||
|
# things are writable when they shouldn't be.
|
||||||
|
test -w / || test_set_prereq SANITY
|
||||||
|
Loading…
Reference in New Issue
Block a user