tests/test-mq-qpush-fail
author David Greenaway <hg-dev@davidgreenaway.com>
Sat, 03 Apr 2010 11:58:16 +1100
changeset 11060 e6df01776e08
parent 10397 8cb81d75730c
permissions -rwxr-xr-x
findrenames: Optimise "addremove -s100" by matching files by their SHA1 hashes. We speed up 'findrenames' for the usecase when a user specifies they want a similarity of 100% by matching files by their exact SHA1 hash value. This reduces the number of comparisons required to find exact matches from O(n^2) to O(n). While it would be nice if we could just use mercurial's pre-calculated SHA1 hash for existing files, this hash includes the file's ancestor information making it unsuitable for our purposes. Instead, we calculate the hash of old content from scratch. The following benchmarks were taken on the current head of crew: addremove 100% similarity: rm -rf *; hg up -C; mv tests tests.new hg --time addremove -s100 --dry-run before: real 176.350 secs (user 128.890+0.000 sys 47.430+0.000) after: real 2.130 secs (user 1.890+0.000 sys 0.240+0.000) addremove 75% similarity: rm -rf *; hg up -C; mv tests tests.new; \ for i in tests.new/*; do echo x >> $i; done hg --time addremove -s75 --dry-run before: real 264.560 secs (user 215.130+0.000 sys 49.410+0.000) after: real 218.710 secs (user 172.790+0.000 sys 45.870+0.000)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4658
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     1
#!/bin/sh
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     2
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     3
# Test that qpush cleans things up if it doesn't complete
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     4
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     5
echo "[extensions]" >> $HGRCPATH
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     6
echo "mq=" >> $HGRCPATH
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     7
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     8
hg init repo
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     9
cd repo
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    10
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    11
echo foo > foo
8167
6c82beaaa11a tests: removed redundant "-d '0 0'" from test scripts
Martin Geisler <mg@lazybytes.net>
parents: 4658
diff changeset
    12
hg ci -Am 'add foo'
4658
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    13
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    14
touch untracked-file
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    15
echo 'syntax: glob' > .hgignore
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    16
echo '.hgignore' >> .hgignore
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    17
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    18
hg qinit
8795
51c29aec0b75 mq: eliminate warning on qpush with empty series
Adrian Buehlmann <adrian@cadifra.com>
parents: 8167
diff changeset
    19
51c29aec0b75 mq: eliminate warning on qpush with empty series
Adrian Buehlmann <adrian@cadifra.com>
parents: 8167
diff changeset
    20
echo '% test qpush on empty series'
51c29aec0b75 mq: eliminate warning on qpush with empty series
Adrian Buehlmann <adrian@cadifra.com>
parents: 8167
diff changeset
    21
hg qpush
51c29aec0b75 mq: eliminate warning on qpush with empty series
Adrian Buehlmann <adrian@cadifra.com>
parents: 8167
diff changeset
    22
4658
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    23
hg qnew patch1
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    24
echo >> foo
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    25
hg qrefresh -m 'patch 1'
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    26
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    27
hg qnew patch2
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    28
echo bar > bar
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    29
hg add bar
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    30
hg qrefresh -m 'patch 2'
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    31
10397
8cb81d75730c mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents: 9590
diff changeset
    32
hg qnew --config 'mq.plain=true' bad-patch
4658
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    33
echo >> foo
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    34
hg qrefresh
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    35
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    36
hg qpop -a
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    37
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    38
python -c 'print "\xe9"' > message
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    39
cat .hg/patches/bad-patch >> message
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    40
mv message .hg/patches/bad-patch
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    41
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    42
hg qpush -a && echo 'qpush succeded?!'
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    43
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    44
hg parents
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    45
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    46
echo '% bar should be gone; other unknown/ignored files should still be around'
17f5d2069551 mq: test that qpush cleans things up when it fails
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    47
hg status -A
8875
801cacf46e62 mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8795
diff changeset
    48
801cacf46e62 mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8795
diff changeset
    49
echo '% preparing qpush of a missing patch'
801cacf46e62 mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8795
diff changeset
    50
hg qpop -a
801cacf46e62 mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8795
diff changeset
    51
hg qpush
801cacf46e62 mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8795
diff changeset
    52
rm .hg/patches/patch2
801cacf46e62 mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8795
diff changeset
    53
echo '% now we expect the push to fail, but it should NOT complain about patch1'
801cacf46e62 mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8795
diff changeset
    54
hg qpush
801cacf46e62 mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8795
diff changeset
    55
9590
07a62819b309 mq: fix traceback for qpush inexistant-patch with no patch applied
Benoit Allard <benoit@aeteurope.nl>
parents: 8875
diff changeset
    56
echo '% preparing qpush of missing patch with no patch applied'
07a62819b309 mq: fix traceback for qpush inexistant-patch with no patch applied
Benoit Allard <benoit@aeteurope.nl>
parents: 8875
diff changeset
    57
hg qpop -a
07a62819b309 mq: fix traceback for qpush inexistant-patch with no patch applied
Benoit Allard <benoit@aeteurope.nl>
parents: 8875
diff changeset
    58
rm .hg/patches/patch1
07a62819b309 mq: fix traceback for qpush inexistant-patch with no patch applied
Benoit Allard <benoit@aeteurope.nl>
parents: 8875
diff changeset
    59
echo '% qpush should fail the same way as below'
07a62819b309 mq: fix traceback for qpush inexistant-patch with no patch applied
Benoit Allard <benoit@aeteurope.nl>
parents: 8875
diff changeset
    60
hg qpush
07a62819b309 mq: fix traceback for qpush inexistant-patch with no patch applied
Benoit Allard <benoit@aeteurope.nl>
parents: 8875
diff changeset
    61
8875
801cacf46e62 mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8795
diff changeset
    62
true # happy ending