tests/test-update-renames.t
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Wed, 14 Oct 2015 02:40:04 +0900
changeset 26630 3111b45a2bbf
parent 26614 ef1eb6df7071
permissions -rw-r--r--
parsers: make pack_dirstate take now in integer for consistency On recent OS, 'stat.st_mtime' has a double precision floating point value to represent nano seconds, but it is not wide enough for actual file timestamp: nowadays, only 52 - 32 = 20 bit width is available for decimal places in sec. Therefore, casting it to 'int' may cause unexpected result. See also changeset 13272104bb07 fixing issue4836 for detail. For example, changed file A may be treated as "clean" unexpectedly in steps below. "rounded now" is the value gotten by rounding via 'int(st.st_mtime)' or so. ---------------------+--------------------+------------------------ "now" | | timestamp of A (time_t) float rounded time_t| action | FS dirstate ------ ------- ------+--------------------+-------- --------------- N+.nnn N N | | --- --- | update file A | N | dirstate.normal(A) | N N+.999 N+1 N | | | dirstate.write() | N (*1) | : | | change file A | N | : | N+1.00 N+1 N+1 | | | "hg status" (*2) | N N ------ ------- ------+--------------------+-------- --------------- Timestamp N of A in dirstate isn't dropped at (*1), because "rounded now" is N+1 at that time, even if 'st_mtime' in 'time_t' is still N. Then, file A is unexpectedly treated as "clean" at (*2) in this case. For consistent handling of 'stat.st_mtime', this patch makes 'pack_dirstate()' take 'now' argument not in floating point but in integer. This patch makes 'PyArg_ParseTuple()' in 'pack_dirstate()' use format 'i' (= checking type mismatch or overflow), even though it is ensured that 'now' is in the range of 32bit signed integer by masking with '_rangemask' (= 0x7fffffff) on caller side. It should be cheaper enough than packing itself, and useful to detect that legacy code invokes 'pack_dirstate()' with 'now' in floating point value.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12328
b63f6422d2a7 tests: fix a bunch of pointless #s in unified tests
Matt Mackall <mpm@selenic.com>
parents: 12316
diff changeset
     1
Test update logic when there are renames
10874
4f11978ae45d copies: properly visit file context ancestors on working file contexts
Henrik Stuart <henrik.stuart@edlund.dk>
parents:
diff changeset
     2
12328
b63f6422d2a7 tests: fix a bunch of pointless #s in unified tests
Matt Mackall <mpm@selenic.com>
parents: 12316
diff changeset
     3
Update with local changes across a file rename
12299
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
     4
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
     5
  $ hg init
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
     6
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
     7
  $ echo a > a
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
     8
  $ hg add a
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
     9
  $ hg ci -m a
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    10
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    11
  $ hg mv a b
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    12
  $ hg ci -m rename
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    13
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    14
  $ echo b > b
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    15
  $ hg ci -m change
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    16
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    17
  $ hg up -q 0
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    18
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    19
  $ echo c > a
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    20
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    21
  $ hg up
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    22
  merging a and b to b
26614
ef1eb6df7071 simplemerge: move conflict warning message to filemerge
Siddharth Agarwal <sid0@fb.com>
parents: 16911
diff changeset
    23
  warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
12299
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    24
  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
a73684df0f8a tests: unify test-update-renames
Adrian Buehlmann <adrian@cadifra.com>
parents: 10874
diff changeset
    25
  use 'hg resolve' to retry unresolved file merges
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12299
diff changeset
    26
  [1]