tests/test-dirstate.t
author Pierre-Yves David <pierre-yves.david@fb.com>
Mon, 08 Feb 2016 18:12:06 +0100
changeset 28138 5ad2017454ee
parent 26587 56b2bcea2529
child 33954 b9765319880e
permissions -rw-r--r--
destutil: remove current head from list of candidates early While 'hg merge' will refuse to pick a default destination if the working copy is not on a head, this will be a common and valid case for rebase. In this case, we will need to exclude from the candidate destination all descendants from the rebased set. We make a step forward in that direction by removing parents of the working copy from the candidate destinations instead of manually filtering the working copy parent at the end of the process. This will make the extra step of filtering descendant much simpler in a future changeset.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11888
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
     1
------ Test dirstate._dirs refcounting
7096
6dab29f6df37 dirstate._dirs: fix refcounting broken by 7dfac37cfabf
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff changeset
     2
11887
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
     3
  $ hg init t
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
     4
  $ cd t
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
     5
  $ mkdir -p a/b/c/d
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
     6
  $ touch a/b/c/d/x
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
     7
  $ touch a/b/c/d/y
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
     8
  $ touch a/b/c/d/z
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
     9
  $ hg ci -Am m
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
    10
  adding a/b/c/d/x
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
    11
  adding a/b/c/d/y
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
    12
  adding a/b/c/d/z
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
    13
  $ hg mv a z
15447
9910f60a37ee tests: make (glob) on windows accept \ instead of /
Mads Kiilerich <mads@kiilerich.com>
parents: 12399
diff changeset
    14
  moving a/b/c/d/x to z/b/c/d/x (glob)
9910f60a37ee tests: make (glob) on windows accept \ instead of /
Mads Kiilerich <mads@kiilerich.com>
parents: 12399
diff changeset
    15
  moving a/b/c/d/y to z/b/c/d/y (glob)
9910f60a37ee tests: make (glob) on windows accept \ instead of /
Mads Kiilerich <mads@kiilerich.com>
parents: 12399
diff changeset
    16
  moving a/b/c/d/z to z/b/c/d/z (glob)
17095
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    17
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    18
Test name collisions
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    19
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    20
  $ rm z/b/c/d/x
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    21
  $ mkdir z/b/c/d/x
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    22
  $ touch z/b/c/d/x/y
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    23
  $ hg add z/b/c/d/x/y
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    24
  abort: file 'z/b/c/d/x' in dirstate clashes with 'z/b/c/d/x/y'
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    25
  [255]
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    26
  $ rm -rf z/b/c/d
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    27
  $ touch z/b/c/d
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    28
  $ hg add z/b/c/d
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    29
  abort: directory 'z/b/c/d' already in dirstate
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    30
  [255]
45cf6a91a02d dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents: 15447
diff changeset
    31
11888
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    32
  $ cd ..
11887
76818b28ce98 tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents: 7096
diff changeset
    33
12399
4fee1fd3de9a tests: added a short description to issue numbers
Martin Geisler <mg@aragost.com>
parents: 11888
diff changeset
    34
Issue1790: dirstate entry locked into unset if file mtime is set into
4fee1fd3de9a tests: added a short description to issue numbers
Martin Geisler <mg@aragost.com>
parents: 11888
diff changeset
    35
the future
11888
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    36
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    37
Prepare test repo:
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    38
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    39
  $ hg init u
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    40
  $ cd u
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    41
  $ echo a > a
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    42
  $ hg add
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    43
  adding a
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    44
  $ hg ci -m1
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    45
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    46
Set mtime of a into the future:
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    47
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    48
  $ touch -t 202101011200 a
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    49
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    50
Status must not set a's entry to unset (issue1790):
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    51
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    52
  $ hg status
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    53
  $ hg debugstate
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    54
  n 644          2 2021-01-01 12:00:00 a
17733
3c775c5a6c03 dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents: 17095
diff changeset
    55
3c775c5a6c03 dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents: 17095
diff changeset
    56
Test modulo storage/comparison of absurd dates:
11888
2bd699886ffc tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents: 11887
diff changeset
    57
19092
8c560ad1cdc4 tests: AIX can't handle negative date in test-dirstate.t
Jim Hague <jim.hague@acm.org>
parents: 17737
diff changeset
    58
#if no-aix
17733
3c775c5a6c03 dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents: 17095
diff changeset
    59
  $ touch -t 195001011200 a
3c775c5a6c03 dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents: 17095
diff changeset
    60
  $ hg st
3c775c5a6c03 dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents: 17095
diff changeset
    61
  $ hg debugstate
3c775c5a6c03 dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents: 17095
diff changeset
    62
  n 644          2 2018-01-19 15:14:08 a
19092
8c560ad1cdc4 tests: AIX can't handle negative date in test-dirstate.t
Jim Hague <jim.hague@acm.org>
parents: 17737
diff changeset
    63
#endif
22406
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    64
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    65
Verify that exceptions during a dirstate change leave the dirstate
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    66
coherent (issue4353)
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    67
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    68
  $ cat > ../dirstateexception.py <<EOF
26587
56b2bcea2529 error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22406
diff changeset
    69
  > from mercurial import merge, extensions, error
22406
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    70
  > 
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    71
  > def wraprecordupdates(orig, repo, actions, branchmerge):
26587
56b2bcea2529 error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 22406
diff changeset
    72
  >     raise error.Abort("simulated error while recording dirstateupdates")
22406
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    73
  > 
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    74
  > def reposetup(ui, repo):
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    75
  >     extensions.wrapfunction(merge, 'recordupdates', wraprecordupdates)
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    76
  > EOF
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    77
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    78
  $ hg rm a
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    79
  $ hg commit -m 'rm a'
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    80
  $ echo "[extensions]" >> .hg/hgrc
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    81
  $ echo "dirstateex=../dirstateexception.py" >> .hg/hgrc
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    82
  $ hg up 0
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    83
  abort: simulated error while recording dirstateupdates
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    84
  [255]
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    85
  $ hg log -r . -T '{rev}\n'
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    86
  1
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    87
  $ hg status
2e47e461d2ca dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents: 19092
diff changeset
    88
  ? a