##// END OF EJS Templates
extensions: register functions always at loading extension (issue5601)...
extensions: register functions always at loading extension (issue5601) Before this patch, functions defined in extensions are registered via extra loaders only in _dispatch(). Therefore, loading extensions in other code paths like below omits registration of functions. - WSGI service - operation across repositories (e.g. subrepo) - test-duplicateoptions.py, using extensions.loadall() directly To register functions always at loading new extension, this patch moves implementation for extra loading from dispatch._dispatch() to extensions.loadall(). AFAIK, only commands module causes cyclic dependency between extensions module, but this patch imports all related modules just before extra loading in loadall(), in order to centralize them. This patch makes extensions.py depend on many other modules, even though extensions.py itself doesn't. It should be avoided if possible, but I don't have any better idea. Some other places like below aren't reasonable for extra loading, IMHO. - specific function in newly added module: existing callers of extensions.loadall() should invoke it, too - hg.repository() or so: no-repo commands aren't covered by this. BTW, this patch removes _loaded.add(name) on relocation, because dispatch._loaded is used only for extraloaders (for similar reason, "exts" variable is removed, too).

File last commit:

r32940:75be1499 default
r33052:45b0e9d0 default
Show More
test-addremove-similar.t
174 lines | 3.8 KiB | text/troff | Tads3Lexer
/ tests / test-addremove-similar.t
Martin Geisler
tests: unify test-addremove-similar
r11851 $ hg init rep; cd rep
$ touch empty-file
timeless
tests: test-addremove-similar.t use print() for py3
r29174 $ $PYTHON -c 'for x in range(10000): print(x)' > large-file
Martin Geisler
tests: unify test-addremove-similar
r11851
$ hg addremove
adding empty-file
adding large-file
$ hg commit -m A
$ rm large-file empty-file
timeless
tests: test-addremove-similar.t use print() for py3
r29174 $ $PYTHON -c 'for x in range(10,10000): print(x)' > another-file
Martin Geisler
tests: unify test-addremove-similar
r11851
$ hg addremove -s50
adding another-file
removing empty-file
removing large-file
recording removal of large-file as rename to another-file (99% similar)
$ hg commit -m B
comparing two empty files caused ZeroDivisionError in the past
$ hg update -C 0
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ rm empty-file
$ touch another-empty-file
$ hg addremove -s50
adding another-empty-file
removing empty-file
$ cd ..
$ hg init rep2; cd rep2
timeless
tests: test-addremove-similar.t use print() for py3
r29174 $ $PYTHON -c 'for x in range(10000): print(x)' > large-file
$ $PYTHON -c 'for x in range(50): print(x)' > tiny-file
Martin Geisler
tests: unify test-addremove-similar
r11851
$ hg addremove
adding large-file
adding tiny-file
$ hg commit -m A
timeless
tests: test-addremove-similar.t use print() for py3
r29174 $ $PYTHON -c 'for x in range(70): print(x)' > small-file
Martin Geisler
tests: unify test-addremove-similar
r11851 $ rm tiny-file
$ rm large-file
$ hg addremove -s50
removing large-file
adding small-file
removing tiny-file
recording removal of tiny-file as rename to small-file (82% similar)
$ hg commit -m B
Yuya Nishihara
similar: sort files not by object id but by path for stable result...
r31579 should be sorted by path for stable result
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ for i in `$PYTHON $TESTDIR/seq.py 0 9`; do
Yuya Nishihara
similar: sort files not by object id but by path for stable result...
r31579 > cp small-file $i
> done
$ rm small-file
$ hg addremove
adding 0
adding 1
adding 2
adding 3
adding 4
adding 5
adding 6
adding 7
adding 8
adding 9
removing small-file
recording removal of small-file as rename to 0 (100% similar)
recording removal of small-file as rename to 1 (100% similar)
recording removal of small-file as rename to 2 (100% similar)
recording removal of small-file as rename to 3 (100% similar)
recording removal of small-file as rename to 4 (100% similar)
recording removal of small-file as rename to 5 (100% similar)
recording removal of small-file as rename to 6 (100% similar)
recording removal of small-file as rename to 7 (100% similar)
recording removal of small-file as rename to 8 (100% similar)
recording removal of small-file as rename to 9 (100% similar)
$ hg commit -m '10 same files'
pick one from many identical files
$ cp 0 a
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ rm `$PYTHON $TESTDIR/seq.py 0 9`
Yuya Nishihara
similar: sort files not by object id but by path for stable result...
r31579 $ hg addremove
removing 0
removing 1
removing 2
removing 3
removing 4
removing 5
removing 6
removing 7
removing 8
removing 9
adding a
Yuya Nishihara
similar: take the first match instead of the last...
r31583 recording removal of 0 as rename to a (100% similar)
Yuya Nishihara
similar: sort files not by object id but by path for stable result...
r31579 $ hg revert -aq
pick one from many similar files
$ cp 0 a
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ for i in `$PYTHON $TESTDIR/seq.py 0 9`; do
Yuya Nishihara
similar: sort files not by object id but by path for stable result...
r31579 > echo $i >> $i
> done
$ hg commit -m 'make them slightly different'
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ rm `$PYTHON $TESTDIR/seq.py 0 9`
Yuya Nishihara
similar: sort files not by object id but by path for stable result...
r31579 $ hg addremove -s50
removing 0
removing 1
removing 2
removing 3
removing 4
removing 5
removing 6
removing 7
removing 8
removing 9
adding a
Yuya Nishihara
similar: take the first match instead of the last...
r31583 recording removal of 0 as rename to a (99% similar)
Yuya Nishihara
similar: sort files not by object id but by path for stable result...
r31579 $ hg commit -m 'always the same file should be selected'
Martin Geisler
tests: unify test-addremove-similar
r11851 should all fail
$ hg addremove -s foo
abort: similarity must be a number
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-addremove-similar
r11851 $ hg addremove -s -1
abort: similarity must be between 0 and 100
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-addremove-similar
r11851 $ hg addremove -s 1e6
abort: similarity must be between 0 and 100
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-addremove-similar
r11851
$ cd ..
Pierre-Yves David
error: get Abort from 'error' instead of 'util'...
r26587 Issue1527: repeated addremove causes Abort
Martin Geisler
tests: unify test-addremove-similar
r11851
$ hg init rep3; cd rep3
$ mkdir d
$ echo a > d/a
$ hg add d/a
$ hg commit -m 1
$ mv d/a d/b
$ hg addremove -s80
removing d/a
adding d/b
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 recording removal of d/a as rename to d/b (100% similar) (glob)
Martin Geisler
tests: unify test-addremove-similar
r11851 $ hg debugstate
r 0 0 1970-01-01 00:00:00 d/a
a 0 -1 unset d/b
copy: d/a -> d/b
$ mv d/b c
no copies found here (since the target isn't in d
$ hg addremove -s80 d
Matt Harbison
addremove: restore the relative path printing when files are named...
r23481 removing d/b (glob)
Martin Geisler
tests: unify test-addremove-similar
r11851
copies here
$ hg addremove -s80
adding c
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 recording removal of d/a as rename to c (100% similar) (glob)
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..