##// END OF EJS Templates
narrow: fix flaky behavior described in issue6150...
narrow: fix flaky behavior described in issue6150 This has been plaguing the CI for a good while, and it doesn't appear to have an easy fix proposed yet. The solution in this change is to always do an unambiguous (but expensive) lookup in case of comparison. This should always be correct, albeit suboptimal. Differential Revision: https://phab.mercurial-scm.org/D10034

File last commit:

r43130:cf165e06 default
r47280:b994db7c stable
Show More
test-hgignore.t
390 lines | 8.3 KiB | text/troff | Tads3Lexer
Durham Goode
test: move ignore test run into a subdirectory...
r25869 $ hg init ignorerepo
$ cd ignorerepo
Adrian Buehlmann
tests: unify test-hgignore
r12312
Siddharth Agarwal
match: introduce nevermatcher for when no ignore files are present...
r32600 debugignore with no hgignore should be deterministic:
$ hg debugignore
<nevermatcher>
Martin Geisler
tests: added a short description to issue numbers...
r12399 Issue562: .hgignore requires newline at end:
Adrian Buehlmann
tests: unify test-hgignore
r12312
$ touch foo
$ touch bar
$ touch baz
$ cat > makeignore.py <<EOF
> f = open(".hgignore", "w")
> f.write("ignore\n")
> f.write("foo\n")
> # No EOL here
> f.write("bar")
> f.close()
> EOF
Matt Harbison
tests: quote PYTHON usage...
r39743 $ "$PYTHON" makeignore.py
Adrian Buehlmann
tests: unify test-hgignore
r12312
Should display baz only:
$ hg status
? baz
$ rm foo bar baz .hgignore makeignore.py
$ touch a.o
$ touch a.c
$ touch syntax
$ mkdir dir
$ touch dir/a.o
$ touch dir/b.o
$ touch dir/c.o
$ hg add dir/a.o
$ hg commit -m 0
$ hg add dir/b.o
$ hg status
A dir/b.o
? a.c
? a.o
? dir/c.o
? syntax
$ echo "*.o" > .hgignore
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg status
Durham Goode
test: move ignore test run into a subdirectory...
r25869 abort: $TESTTMP/ignorerepo/.hgignore: invalid pattern (relre): *.o (glob)
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 [255]
Adrian Buehlmann
tests: unify test-hgignore
r12312
Matt Harbison
debugignore: eliminate inconsistencies with `hg status` (issue5222)...
r33507 Ensure given files are relative to cwd
$ echo "dir/.*\.o" > .hgignore
$ hg status -i
I dir/c.o
$ hg debugignore dir/c.o dir/missing.o
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dir/c.o is ignored
Matt Harbison
debugignore: eliminate inconsistencies with `hg status` (issue5222)...
r33507 (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: 'dir/.*\.o') (glob)
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dir/missing.o is ignored
Matt Harbison
debugignore: eliminate inconsistencies with `hg status` (issue5222)...
r33507 (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: 'dir/.*\.o') (glob)
$ cd dir
$ hg debugignore c.o missing.o
c.o is ignored
(ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: 'dir/.*\.o') (glob)
missing.o is ignored
(ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: 'dir/.*\.o') (glob)
For icasefs, inexact matches also work, except for missing files
#if icasefs
$ hg debugignore c.O missing.O
c.o is ignored
(ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: 'dir/.*\.o') (glob)
missing.O is not ignored
#endif
$ cd ..
Adrian Buehlmann
tests: unify test-hgignore
r12312 $ echo ".*\.o" > .hgignore
Mads Kiilerich
tests: fix incorrect markup of continued lines of sh commands
r16487 $ hg status
Adrian Buehlmann
tests: unify test-hgignore
r12312 A dir/b.o
? .hgignore
? a.c
? syntax
Bryan O'Sullivan
test-hgignore.t: add tests for comments...
r27326 Ensure that comments work:
Yuya Nishihara
hgignore: add escape syntax test for glob patterns...
r42856 $ touch 'foo#bar' 'quux#' 'quu0#'
Matt Harbison
test-hgignore: conditionalize an illegal Windows filename
r27381 #if no-windows
Yuya Nishihara
hgignore: add escape syntax test for glob patterns...
r42856 $ touch 'baz\' 'baz\wat' 'ba0\#wat' 'ba1\\' 'ba1\\wat' 'quu0\'
Matt Harbison
test-hgignore: conditionalize an illegal Windows filename
r27381 #endif
Yuya Nishihara
hgignore: add escape syntax test for glob patterns...
r42856
Bryan O'Sullivan
test-hgignore.t: add tests for comments...
r27326 $ cat <<'EOF' >> .hgignore
> # full-line comment
> # whitespace-only comment line
> syntax# pattern, no whitespace, then comment
> a.c # pattern, then whitespace, then comment
Yuya Nishihara
hgignore: update \-escape test to reflect actual behavior...
r42854 > baz\\# # (escaped) backslash, then comment
Yuya Nishihara
hgignore: add a few more weird patterns to test case
r42855 > ba0\\\#w # (escaped) backslash, escaped comment character, then comment
> ba1\\\\# # (escaped) backslashes, then comment
Bryan O'Sullivan
test-hgignore.t: add tests for comments...
r27326 > foo\#b # escaped comment character
> quux\## escaped comment character at end of name
> EOF
$ hg status
A dir/b.o
? .hgignore
Yuya Nishihara
hgignore: add escape syntax test for glob patterns...
r42856 ? quu0#
? quu0\ (no-windows !)
$ cat <<'EOF' > .hgignore
> .*\.o
> syntax: glob
> syntax# pattern, no whitespace, then comment
> a.c # pattern, then whitespace, then comment
> baz\\#* # (escaped) backslash, then comment
> ba0\\\#w* # (escaped) backslash, escaped comment character, then comment
> ba1\\\\#* # (escaped) backslashes, then comment
> foo\#b* # escaped comment character
> quux\## escaped comment character at end of name
> quu0[\#]# escaped comment character inside [...]
> EOF
$ hg status
A dir/b.o
? .hgignore
? ba1\\wat (no-windows !)
? baz\wat (no-windows !)
? quu0\ (no-windows !)
$ rm 'foo#bar' 'quux#' 'quu0#'
Matt Harbison
test-hgignore: conditionalize an illegal Windows filename
r27381 #if no-windows
Yuya Nishihara
hgignore: add escape syntax test for glob patterns...
r42856 $ rm 'baz\' 'baz\wat' 'ba0\#wat' 'ba1\\' 'ba1\\wat' 'quu0\'
Matt Harbison
test-hgignore: conditionalize an illegal Windows filename
r27381 #endif
Bryan O'Sullivan
test-hgignore.t: add tests for comments...
r27326
Martin von Zweigbergk
tests: fix an incorrect description in test-ignore.t...
r33477 Check that '^\.' does not ignore the root directory:
Adrian Buehlmann
tests: unify test-hgignore
r12312
$ echo "^\." > .hgignore
$ hg status
A dir/b.o
? a.c
? a.o
? dir/c.o
? syntax
Siddharth Agarwal
test-hgignore: add testing for ui.ignore...
r23628 Test that patterns from ui.ignore options are read:
$ echo > .hgignore
$ cat >> $HGRCPATH << EOF
> [ui]
Durham Goode
test: move ignore test run into a subdirectory...
r25869 > ignore.other = $TESTTMP/ignorerepo/.hg/testhgignore
Siddharth Agarwal
test-hgignore: add testing for ui.ignore...
r23628 > EOF
$ echo "glob:**.o" > .hg/testhgignore
Adrian Buehlmann
tests: unify test-hgignore
r12312 $ hg status
A dir/b.o
? .hgignore
? a.c
? syntax
Siddharth Agarwal
test-hgignore: add testing for ui.ignore...
r23628 empty out testhgignore
$ echo > .hg/testhgignore
Siddharth Agarwal
ignore: resolve ignore files relative to repo root (issue4473) (BC)...
r23629
Test relative ignore path (issue4473):
$ cat >> $HGRCPATH << EOF
> [ui]
> ignore.relative = .hg/testhgignorerel
> EOF
$ echo "glob:*.o" > .hg/testhgignorerel
$ cd dir
Adrian Buehlmann
tests: unify test-hgignore
r12312 $ hg status
A dir/b.o
? .hgignore
? a.c
? syntax
Valentin Gatien-Baron
tests: show the pattern generated for a relative glob...
r43128 $ hg debugignore
Valentin Gatien-Baron
match: simplify the regexps created for glob patterns...
r43132 <includematcher includes='.*\\.o(?:/|$)'>
Adrian Buehlmann
tests: unify test-hgignore
r12312
Siddharth Agarwal
ignore: resolve ignore files relative to repo root (issue4473) (BC)...
r23629 $ cd ..
$ echo > .hg/testhgignorerel
Adrian Buehlmann
tests: unify test-hgignore
r12312 $ echo "syntax: glob" > .hgignore
$ echo "re:.*\.o" >> .hgignore
$ hg status
A dir/b.o
? .hgignore
? a.c
? syntax
$ echo "syntax: invalid" > .hgignore
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg status
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 $TESTTMP/ignorerepo/.hgignore: ignoring invalid syntax 'invalid'
Adrian Buehlmann
tests: unify test-hgignore
r12312 A dir/b.o
? .hgignore
? a.c
? a.o
? dir/c.o
? syntax
$ echo "syntax: glob" > .hgignore
$ echo "*.o" >> .hgignore
$ hg status
A dir/b.o
? .hgignore
? a.c
? syntax
$ echo "relglob:syntax*" > .hgignore
$ hg status
A dir/b.o
? .hgignore
? a.c
? a.o
? dir/c.o
$ echo "relglob:*" > .hgignore
$ hg status
A dir/b.o
$ cd dir
$ hg status .
A b.o
jfh
add debugignore which yields the combined ignore patten of the .hgignore files...
r13396 $ hg debugignore
Valentin Gatien-Baron
match: simplify the regexps created for glob patterns...
r43132 <includematcher includes='.*(?:/|$)'>
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
Laurent Charignon
debugignore: find out if a file is being ignored...
r27671 $ hg debugignore b.o
b.o is ignored
Matt Harbison
test-hgignore: add globs for Windows
r27757 (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 1: '*') (glob)
Laurent Charignon
debugignore: find out if a file is being ignored...
r27671
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..
Durham Goode
hgignore: fix regression with hgignore directory matches (issue3921)...
r19128
Check patterns that match only the directory
FUJIWARA Katsunori
tests: add line specific for testing with fsmonitor
r33211 "(fsmonitor !)" below assumes that fsmonitor is enabled with
"walk_on_invalidate = false" (default), which doesn't involve
re-walking whole repository at detection of .hgignore change.
Durham Goode
hgignore: fix regression with hgignore directory matches (issue3921)...
r19128 $ echo "^dir\$" > .hgignore
$ hg status
A dir/b.o
? .hgignore
? a.c
? a.o
FUJIWARA Katsunori
tests: add line specific for testing with fsmonitor
r33211 ? dir/c.o (fsmonitor !)
Durham Goode
hgignore: fix regression with hgignore directory matches (issue3921)...
r19128 ? syntax
Siddharth Agarwal
match: make glob '**/' match the empty string...
r21815
Check recursive glob pattern matches no directories (dir/**/c.o matches dir/c.o)
$ echo "syntax: glob" > .hgignore
$ echo "dir/**/c.o" >> .hgignore
$ touch dir/c.o
$ mkdir dir/subdir
$ touch dir/subdir/c.o
$ hg status
A dir/b.o
? .hgignore
? a.c
? a.o
? syntax
Laurent Charignon
debugignore: find out if a file is being ignored...
r27671 $ hg debugignore a.c
a.c is not ignored
$ hg debugignore dir/c.o
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dir/c.o is ignored
Matt Harbison
test-hgignore: add globs for Windows
r27757 (ignore rule in $TESTTMP/ignorerepo/.hgignore, line 2: 'dir/**/c.o') (glob)
Durham Goode
match: add 'include:' syntax...
r25215
Valentin Gatien-Baron
match: support rooted globs in hgignore...
r41318 Check rooted globs
$ hg purge --all --config extensions.purge=
$ echo "syntax: rootglob" > .hgignore
$ echo "a/*.ext" >> .hgignore
$ for p in a b/a aa; do mkdir -p $p; touch $p/b.ext; done
$ hg status -A 'set:**.ext'
? aa/b.ext
? b/a/b.ext
I a/b.ext
Durham Goode
match: add 'include:' syntax...
r25215 Check using 'include:' in ignore file
$ hg purge --all --config extensions.purge=
$ touch foo.included
$ echo ".*.included" > otherignore
$ hg status -I "include:otherignore"
? foo.included
$ echo "include:otherignore" >> .hgignore
$ hg status
A dir/b.o
? .hgignore
? otherignore
Check recursive uses of 'include:'
Durham Goode
ignore: fix include: rules depending on current directory (issue4759)...
r25870 $ echo "include:nested/ignore" >> otherignore
Valentin Gatien-Baron
match: support rooted globs in hgignore...
r41318 $ mkdir nested nested/more
Durham Goode
ignore: fix include: rules depending on current directory (issue4759)...
r25870 $ echo "glob:*ignore" > nested/ignore
Valentin Gatien-Baron
match: support rooted globs in hgignore...
r41318 $ echo "rootglob:a" >> nested/ignore
$ touch a nested/a nested/more/a
Durham Goode
match: add 'include:' syntax...
r25215 $ hg status
A dir/b.o
Valentin Gatien-Baron
match: support rooted globs in hgignore...
r41318 ? nested/a
? nested/more/a
$ rm a nested/a nested/more/a
Durham Goode
ignore: use 'include:' rules instead of custom syntax...
r25216
Durham Goode
match: enable 'subinclude:' syntax...
r25283 $ cp otherignore goodignore
Durham Goode
ignore: use 'include:' rules instead of custom syntax...
r25216 $ echo "include:badignore" >> otherignore
$ hg status
Matt Harbison
tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages...
r35230 skipping unreadable pattern file 'badignore': $ENOENT$
Durham Goode
ignore: use 'include:' rules instead of custom syntax...
r25216 A dir/b.o
Durham Goode
match: enable 'subinclude:' syntax...
r25283
$ mv goodignore otherignore
Durham Goode
ignore: fix include: rules depending on current directory (issue4759)...
r25870 Check using 'include:' while in a non-root directory
$ cd ..
$ hg -R ignorerepo status
A dir/b.o
$ cd ignorerepo
Durham Goode
match: enable 'subinclude:' syntax...
r25283 Check including subincludes
$ hg revert -q --all
$ hg purge --all --config extensions.purge=
$ echo ".hgignore" > .hgignore
$ mkdir dir1 dir2
$ touch dir1/file1 dir1/file2 dir2/file1 dir2/file2
$ echo "subinclude:dir2/.hgignore" >> .hgignore
$ echo "glob:file*2" > dir2/.hgignore
$ hg status
? dir1/file1
? dir1/file2
? dir2/file1
Valentin Gatien-Baron
match: support rooted globs in hgignore...
r41318 Check including subincludes with other patterns
Durham Goode
match: enable 'subinclude:' syntax...
r25283
$ echo "subinclude:dir1/.hgignore" >> .hgignore
Valentin Gatien-Baron
match: support rooted globs in hgignore...
r41318
$ mkdir dir1/subdir
$ touch dir1/subdir/file1
$ echo "rootglob:f?le1" > dir1/.hgignore
$ hg status
? dir1/file2
? dir1/subdir/file1
? dir2/file1
$ rm dir1/subdir/file1
Durham Goode
match: enable 'subinclude:' syntax...
r25283 $ echo "regexp:f.le1" > dir1/.hgignore
$ hg status
? dir1/file2
? dir2/file1
Check multiple levels of sub-ignores
$ touch dir1/subdir/subfile1 dir1/subdir/subfile3 dir1/subdir/subfile4
$ echo "subinclude:subdir/.hgignore" >> dir1/.hgignore
$ echo "glob:subfil*3" >> dir1/subdir/.hgignore
$ hg status
? dir1/file2
? dir1/subdir/subfile4
? dir2/file1
Check include subignore at the same level
$ mv dir1/subdir/.hgignore dir1/.hgignoretwo
$ echo "regexp:f.le1" > dir1/.hgignore
$ echo "subinclude:.hgignoretwo" >> dir1/.hgignore
$ echo "glob:file*2" > dir1/.hgignoretwo
$ hg status | grep file2
[1]
Laurent Charignon
debugignore: find out if a file is being ignored...
r27671 $ hg debugignore dir1/file2
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 dir1/file2 is ignored
Laurent Charignon
debugignore: find out why a file is being ignored (issue4856)...
r27672 (ignore rule in dir2/.hgignore, line 1: 'file*2')
Matt Harbison
debugignore: normalize the file before testing dirstate._ignore()...
r28054
#if windows
Windows paths are accepted on input
$ rm dir1/.hgignore
$ echo "dir1/file*" >> .hgignore
$ hg debugignore "dir1\file2"
Matt Harbison
tests: correct the remaining fallout from recent path style changes on Windows...
r41870 dir1/file2 is ignored
Matt Harbison
debugignore: normalize the file before testing dirstate._ignore()...
r28054 (ignore rule in $TESTTMP\ignorerepo\.hgignore, line 4: 'dir1/file*')
$ hg up -qC .
#endif