tests/test-import-context.t
author Gregory Szorc <gregory.szorc@gmail.com>
Mon, 10 Dec 2018 17:26:12 +0000
changeset 40922 ca6372b7e566
parent 40350 633da7139e4a
child 41738 c70bdd222dcd
permissions -rw-r--r--
tests: add tests for server-side linknode adjustment with wireprotov2 The current implementation of linknode serving in wireprotov2 simply serves up the linkrev/linknode as stored: it doesn't attempt to adjust the linknode to what the receiver is aware of. This can result in the client seeing a linknode referencing a changeset that is unknown to it. This commit adds test coverage of that scenario. The tests in test-wireproto-command-filesdata.t demonstrate two failures. First, the linknode refers to a changeset not in the available set. Second, the server doesn't send a file revision that it should have (because of linkrev filtering). The test in test-wireproto-exchange.t demonstrates that the lack of a file revision results in a corrupted repository on the client. Differential Revision: https://phab.mercurial-scm.org/D5404
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     1
Test applying context diffs
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     2
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     3
  $ cat > writepatterns.py <<EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     4
  > import sys
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     5
  > 
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     6
  > path = sys.argv[1]
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     7
  > lasteol = sys.argv[2] == '1'
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     8
  > patterns = sys.argv[3:]
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     9
  > 
36394
4bc983568016 py3: replace file() with open()
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32940
diff changeset
    10
  > fp = open(path, 'wb')
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    11
  > for i, pattern in enumerate(patterns):
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    12
  >     count = int(pattern[0:-1])
38365
bf953d218a91 py3: encode sys.argv to bytes using .encode()
Pulkit Goyal <7895pulkit@gmail.com>
parents: 36394
diff changeset
    13
  >     char = pattern[-1].encode('utf8') + b'\n'
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    14
  >     if not lasteol and i == len(patterns) - 1:
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    15
  >         fp.write((char*count)[:-1])
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    16
  >     else:
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    17
  >         fp.write(char*count)
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    18
  > fp.close()
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    19
  > EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    20
  $ cat > cat.py <<EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    21
  > import sys
40350
633da7139e4a py3: fix test-import-context.t
Matt Harbison <matt_harbison@yahoo.com>
parents: 39707
diff changeset
    22
  > from mercurial import pycompat
633da7139e4a py3: fix test-import-context.t
Matt Harbison <matt_harbison@yahoo.com>
parents: 39707
diff changeset
    23
  > from mercurial.utils import stringutil
633da7139e4a py3: fix test-import-context.t
Matt Harbison <matt_harbison@yahoo.com>
parents: 39707
diff changeset
    24
  > pycompat.stdout.write(b'%s\n'
633da7139e4a py3: fix test-import-context.t
Matt Harbison <matt_harbison@yahoo.com>
parents: 39707
diff changeset
    25
  >                       % stringutil.pprint(open(sys.argv[1], 'rb').read()))
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    26
  > EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    27
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    28
Initialize the test repository
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    29
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    30
  $ hg init repo
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    31
  $ cd repo
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
    32
  $ "$PYTHON" ../writepatterns.py a 0 5A 1B 5C 1D
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
    33
  $ "$PYTHON" ../writepatterns.py b 1 1A 1B
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
    34
  $ "$PYTHON" ../writepatterns.py c 1 5A
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
    35
  $ "$PYTHON" ../writepatterns.py d 1 5A 1B
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    36
  $ hg add
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    37
  adding a
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    38
  adding b
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    39
  adding c
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    40
  adding d
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    41
  $ hg ci -m addfiles
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    42
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    43
Add file, missing a last end of line
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    44
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    45
  $ hg import --no-commit - <<EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    46
  > *** /dev/null	2010-10-16 18:05:49.000000000 +0200
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    47
  > --- b/newnoeol	2010-10-16 18:23:26.000000000 +0200
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    48
  > ***************
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    49
  > *** 0 ****
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    50
  > --- 1,2 ----
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    51
  > + a
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    52
  > + b
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    53
  > \ No newline at end of file
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    54
  > *** a/a	Sat Oct 16 16:35:51 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    55
  > --- b/a	Sat Oct 16 16:35:51 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    56
  > ***************
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    57
  > *** 3,12 ****
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    58
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    59
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    60
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    61
  > ! B
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    62
  >   C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    63
  >   C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    64
  >   C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    65
  >   C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    66
  >   C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    67
  > ! D
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    68
  > \ No newline at end of file
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    69
  > --- 3,13 ----
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    70
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    71
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    72
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    73
  > ! E
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    74
  >   C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    75
  >   C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    76
  >   C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    77
  >   C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    78
  >   C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    79
  > ! F
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    80
  > ! F
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    81
  > 
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    82
  > *** a/b	2010-10-16 18:40:38.000000000 +0200
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    83
  > --- /dev/null	2010-10-16 18:05:49.000000000 +0200
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    84
  > ***************
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    85
  > *** 1,2 ****
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    86
  > - A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    87
  > - B
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    88
  > --- 0 ----
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    89
  > *** a/c	Sat Oct 16 21:34:26 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    90
  > --- b/c	Sat Oct 16 21:34:27 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    91
  > ***************
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    92
  > *** 3,5 ****
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    93
  > --- 3,7 ----
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    94
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    95
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    96
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    97
  > + B
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    98
  > + B
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    99
  > *** a/d	Sat Oct 16 21:47:20 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   100
  > --- b/d	Sat Oct 16 21:47:22 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   101
  > ***************
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   102
  > *** 2,6 ****
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   103
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   104
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   105
  >   A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   106
  > - A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   107
  > - B
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   108
  > --- 2,4 ----
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   109
  > EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   110
  applying patch from stdin
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   111
  $ hg st
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   112
  M a
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   113
  M c
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   114
  M d
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   115
  A newnoeol
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   116
  R b
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   117
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   118
What's in a
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   119
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
   120
  $ "$PYTHON" ../cat.py a
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   121
  'A\nA\nA\nA\nA\nE\nC\nC\nC\nC\nC\nF\nF\n'
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
   122
  $ "$PYTHON" ../cat.py newnoeol
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   123
  'a\nb'
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
   124
  $ "$PYTHON" ../cat.py c
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   125
  'A\nA\nA\nA\nA\nB\nB\n'
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
   126
  $ "$PYTHON" ../cat.py d
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   127
  'A\nA\nA\nA\n'
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
   128
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 12825
diff changeset
   129
  $ cd ..