tests/test-symlink-placeholder.t
author Mads Kiilerich <madski@unity3d.com>
Tue, 29 Jan 2013 17:01:41 +0100
branchstable
changeset 18501 a3b2dc1aa909
parent 16913 f2719b387380
child 19650 36f48c7d5944
permissions -rw-r--r--
OS X: try cheap ascii .lower() in normcase before making full unicode dance This is similar to what is done in encoding.lower, introduced in c481761033bd. This has been seen making 'hg up' and 'hg st' in a 50000+ files repo 13% faster. This might make Mercurial slightly slower for users who mainly use non-ASCII filenames. That is a reasonable trade-off.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15441
e0348815e806 tests: use 'hghave symlink' for tests using symlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 15348
diff changeset
     1
  $ "$TESTDIR/hghave" symlink || exit 80
e0348815e806 tests: use 'hghave symlink' for tests using symlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 15348
diff changeset
     2
15348
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     3
Create extension that can disable symlink support:
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     4
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     5
  $ cat > nolink.py <<EOF
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     6
  > from mercurial import extensions, util
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     7
  > def setflags(orig, f, l, x):
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     8
  >     pass
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     9
  > def checklink(orig, path):
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    10
  >     return False
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    11
  > def extsetup(ui):
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    12
  >     extensions.wrapfunction(util, 'setflags', setflags)
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    13
  >     extensions.wrapfunction(util, 'checklink', checklink)
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    14
  > EOF
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    15
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    16
  $ hg init unix-repo
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    17
  $ cd unix-repo
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    18
  $ echo foo > a
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    19
  $ ln -s a b
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    20
  $ hg ci -Am0
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    21
  adding a
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    22
  adding b
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    23
  $ cd ..
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    24
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    25
Simulate a checkout shared on NFS/Samba:
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    26
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    27
  $ hg clone -q unix-repo shared
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    28
  $ cd shared
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    29
  $ rm b
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    30
  $ echo foo > b
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    31
  $ hg --config extensions.n=$TESTTMP/nolink.py status --debug
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    32
  ignoring suspect symlink placeholder "b"
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    33
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    34
Make a clone using placeholders:
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    35
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    36
  $ hg --config extensions.n=$TESTTMP/nolink.py clone . ../win-repo
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    37
  updating to branch default
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    38
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    39
  $ cd ../win-repo
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    40
  $ cat b
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    41
  a (no-eol)
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    42
  $ hg --config extensions.n=$TESTTMP/nolink.py st --debug
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    43
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    44
Write binary data to the placeholder:
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    45
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    46
  >>> open('b', 'w').write('this is a binary\0')
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    47
  $ hg --config extensions.n=$TESTTMP/nolink.py st --debug
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    48
  ignoring suspect symlink placeholder "b"
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    49
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    50
Write a long string to the placeholder:
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    51
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    52
  >>> open('b', 'w').write('this' * 1000)
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    53
  $ hg --config extensions.n=$TESTTMP/nolink.py st --debug
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    54
  ignoring suspect symlink placeholder "b"
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    55
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    56
Commit shouldn't succeed:
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    57
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    58
  $ hg --config extensions.n=$TESTTMP/nolink.py ci -m1
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    59
  nothing changed
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    60
  [1]
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    61
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    62
Write a valid string to the placeholder:
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    63
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    64
  >>> open('b', 'w').write('this')
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    65
  $ hg --config extensions.n=$TESTTMP/nolink.py st --debug
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    66
  M b
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    67
  $ hg --config extensions.n=$TESTTMP/nolink.py ci -m1
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    68
  $ hg manifest tip --verbose
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    69
  644   a
c681e478c429 windows: sanity-check symlink placeholders
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    70
  644 @ b
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 15441
diff changeset
    71
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 15441
diff changeset
    72
  $ cd ..