tests/test-hgwebdirsym.t
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Wed, 14 Oct 2015 02:40:04 +0900
changeset 26630 3111b45a2bbf
parent 25472 4d2b9b304ad0
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:
22046
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 17017
diff changeset
     1
#require serve symlink
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
     2
22046
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 17017
diff changeset
     3
Tests whether or not hgwebdir properly handles various symlink topologies.
17015
73d20de5f30b tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents: 15446
diff changeset
     4
73d20de5f30b tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents: 15446
diff changeset
     5
hide outer repo
73d20de5f30b tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents: 15446
diff changeset
     6
  $ hg init
73d20de5f30b tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents: 15446
diff changeset
     7
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
     8
  $ hg init a
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
     9
  $ echo a > a/a
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    10
  $ hg --cwd a ci -Ama -d'1 0'
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    11
  adding a
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    12
  $ mkdir webdir
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    13
  $ cd webdir
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    14
  $ hg init b
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    15
  $ echo b > b/b
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    16
  $ hg --cwd b ci -Amb -d'2 0'
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    17
  adding b
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    18
  $ hg init c
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    19
  $ echo c > c/c
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    20
  $ hg --cwd c ci -Amc -d'3 0'
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    21
  adding c
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    22
  $ ln -s ../a al
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    23
  $ ln -s ../webdir circle
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    24
  $ root=`pwd`
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    25
  $ cd ..
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    26
  $ cat > collections.conf <<EOF
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    27
  > [collections]
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    28
  > $root=$root
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    29
  > EOF
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    30
  $ hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf collections.conf \
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    31
  >     -A access-collections.log -E error-collections.log
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    32
  $ cat hg.pid >> $DAEMON_PIDS
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    33
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    34
should succeed
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    35
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    36
  $ get-with-headers.py localhost:$HGPORT '?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    37
  200 Script output follows
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    38
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    39
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    40
  /al/
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    41
  /b/
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    42
  /c/
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    43
  
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    44
  $ get-with-headers.py localhost:$HGPORT 'al/file/tip/a?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    45
  200 Script output follows
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    46
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    47
  a
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    48
  $ get-with-headers.py localhost:$HGPORT 'b/file/tip/b?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    49
  200 Script output follows
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    50
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    51
  b
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    52
  $ get-with-headers.py localhost:$HGPORT 'c/file/tip/c?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    53
  200 Script output follows
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    54
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    55
  c
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    56
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    57
should fail
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    58
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    59
  $ get-with-headers.py localhost:$HGPORT 'circle/al/file/tip/a?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    60
  404 Not Found
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    61
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    62
  
13066
86888ae9ce90 hgwebdir: fix incorrect index generation for invalid paths (issue2023)
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 12444
diff changeset
    63
  error: repository circle/al/file/tip/a not found
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    64
  [1]
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    65
  $ get-with-headers.py localhost:$HGPORT 'circle/b/file/tip/a?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    66
  404 Not Found
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    67
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    68
  
13066
86888ae9ce90 hgwebdir: fix incorrect index generation for invalid paths (issue2023)
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 12444
diff changeset
    69
  error: repository circle/b/file/tip/a not found
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    70
  [1]
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    71
  $ get-with-headers.py localhost:$HGPORT 'circle/c/file/tip/a?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    72
  404 Not Found
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    73
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    74
  
13066
86888ae9ce90 hgwebdir: fix incorrect index generation for invalid paths (issue2023)
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 12444
diff changeset
    75
  error: repository circle/c/file/tip/a not found
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    76
  [1]
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    77
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    78
collections errors
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    79
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    80
  $ cat error-collections.log