tests/test-cat.t
author Gregory Szorc <gregory.szorc@gmail.com>
Wed, 28 Mar 2018 10:40:41 -0700
changeset 37295 45b39c69fae0
parent 35393 4441705b7111
child 38539 b1bbff1dd99a
permissions -rw-r--r--
wireproto: separate commands tables for version 1 and 2 commands We can't easily reuse existing command handlers for version 2 commands because the response types will be different. e.g. many commands return nodes encoded as hex. Our new wire protocol is binary safe, so we'll wish to encode nodes as binary. We /could/ teach each command handler to look at the protocol handler and change behavior based on the version in use. However, this would make logic a bit unwieldy over time and would make it harder to design a unified protocol handler interface. I think it's better to create a clean break between version 1 and version 2 of commands on the server. What I imagine happening is we will have separate @wireprotocommand functions for each protocol generation. Those functions will parse the request, dispatch to a common function to process it, then generate the response in its own, transport-specific manner. This commit establishes a separate table for tracking version 1 commands from version 2 commands. The HTTP server pieces have been updated to use this new table. Most commands are marked as both version 1 and version 2, so there is little practical impact to this change. A side-effect of this change is we now rely on transport registration in wireprototypes.TRANSPORTS and certain properties of the protocol interface. So a test had to be updated to conform. Differential Revision: https://phab.mercurial-scm.org/D2982
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11874
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
     1
  $ hg init
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
     2
  $ echo 0 > a
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
     3
  $ echo 0 > b
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 12070
diff changeset
     4
  $ hg ci -A -m m
11874
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
     5
  adding a
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
     6
  adding b
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
     7
  $ hg rm a
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
     8
  $ hg cat a
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
     9
  0
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
    10
  $ hg cat --decode a # more tests in test-encode
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
    11
  0
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
    12
  $ echo 1 > b
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 12070
diff changeset
    13
  $ hg ci -m m
11874
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
    14
  $ echo 2 > b
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
    15
  $ hg cat -r 0 a
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
    16
  0
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
    17
  $ hg cat -r 0 b
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
    18
  0
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
    19
  $ hg cat -r 1 a
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 12070
diff changeset
    20
  a: no such file in rev 7040230c159c
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12156
diff changeset
    21
  [1]
11874
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
    22
  $ hg cat -r 1 b
a3c1234b3761 tests: unify test-cat
Martin Geisler <mg@lazybytes.net>
parents: 6328
diff changeset
    23
  1
17371
1310489eb5d6 fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents: 12316
diff changeset
    24
24381
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    25
Test multiple files
17371
1310489eb5d6 fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents: 12316
diff changeset
    26
1310489eb5d6 fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents: 12316
diff changeset
    27
  $ echo 3 > c
1310489eb5d6 fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents: 12316
diff changeset
    28
  $ hg ci -Am addmore c
24381
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    29
  $ hg cat b c
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    30
  1
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    31
  3
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    32
  $ hg cat .
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    33
  1
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    34
  3
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    35
  $ hg cat . c
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    36
  1
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    37
  3
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    38
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    39
Test fileset
82b82168d045 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com>
parents: 21078
diff changeset
    40
17371
1310489eb5d6 fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents: 12316
diff changeset
    41
  $ hg cat 'set:not(b) or a'
1310489eb5d6 fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents: 12316
diff changeset
    42
  3
1310489eb5d6 fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents: 12316
diff changeset
    43
  $ hg cat 'set:c or b'
1310489eb5d6 fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents: 12316
diff changeset
    44
  1
1310489eb5d6 fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents: 12316
diff changeset
    45
  3
1310489eb5d6 fileset: fix generator vs list bug in fast path
Patrick Mezard <patrick@mezard.eu>
parents: 12316
diff changeset
    46
21078
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    47
  $ mkdir tmp
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    48
  $ hg cat --output tmp/HH_%H c
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    49
  $ hg cat --output tmp/RR_%R c
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    50
  $ hg cat --output tmp/h_%h c
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    51
  $ hg cat --output tmp/r_%r c
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    52
  $ hg cat --output tmp/%s_s c
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    53
  $ hg cat --output tmp/%d%%_d c
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    54
  $ hg cat --output tmp/%p_p c
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    55
  $ hg log -r . --template "{rev}: {node|short}\n"
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    56
  2: 45116003780e
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    57
  $ find tmp -type f | sort
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    58
  tmp/.%_d
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    59
  tmp/HH_45116003780e3678b333fb2c99fa7d559c8457e9
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    60
  tmp/RR_2
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    61
  tmp/c_p
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    62
  tmp/c_s
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    63
  tmp/h_45116003780e
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    64
  tmp/r_2
50107a4b32e7 cat: explicitly document the supported formatter rules
Matt Harbison <matt_harbison@yahoo.com>
parents: 17371
diff changeset
    65
32584
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    66
Test template output
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    67
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    68
  $ hg --cwd tmp cat ../b ../c -T '== {path} ({abspath}) ==\n{data}'
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 35007
diff changeset
    69
  == ../b (b) ==
32584
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    70
  1
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 35007
diff changeset
    71
  == ../c (c) ==
32584
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    72
  3
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    73
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    74
  $ hg cat b c -Tjson --output -
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    75
  [
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    76
   {
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    77
    "abspath": "b",
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    78
    "data": "1\n",
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    79
    "path": "b"
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    80
   },
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    81
   {
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    82
    "abspath": "c",
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    83
    "data": "3\n",
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    84
    "path": "c"
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    85
   }
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    86
  ]
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    87
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    88
  $ hg cat b c -Tjson --output 'tmp/%p.json'
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    89
  $ cat tmp/b.json
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    90
  [
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    91
   {
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    92
    "abspath": "b",
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    93
    "data": "1\n",
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    94
    "path": "b"
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    95
   }
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    96
  ]
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    97
  $ cat tmp/c.json
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    98
  [
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
    99
   {
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
   100
    "abspath": "c",
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
   101
    "data": "3\n",
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
   102
    "path": "c"
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
   103
   }
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
   104
  ]
746e12a767b3 cat: add formatter support
Yuya Nishihara <yuya@tcha.org>
parents: 30833
diff changeset
   105
24720
c560d8c68791 cat: disable optimization of single file case for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 24381
diff changeset
   106
Test working directory
c560d8c68791 cat: disable optimization of single file case for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 24381
diff changeset
   107
c560d8c68791 cat: disable optimization of single file case for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 24381
diff changeset
   108
  $ echo b-wdir > b
c560d8c68791 cat: disable optimization of single file case for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 24381
diff changeset
   109
  $ hg cat -r 'wdir()' b
c560d8c68791 cat: disable optimization of single file case for workingctx
Yuya Nishihara <yuya@tcha.org>
parents: 24381
diff changeset
   110
  b-wdir
30833
bd5e9647f646 templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents: 24720
diff changeset
   111
bd5e9647f646 templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents: 24720
diff changeset
   112
Environment variables are not visible by default
bd5e9647f646 templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents: 24720
diff changeset
   113
bd5e9647f646 templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents: 24720
diff changeset
   114
  $ PATTERN='t4' hg log -r '.' -T "{ifcontains('PATTERN', envvars, 'yes', 'no')}\n"
bd5e9647f646 templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents: 24720
diff changeset
   115
  no
bd5e9647f646 templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents: 24720
diff changeset
   116
bd5e9647f646 templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents: 24720
diff changeset
   117
Environment variable visibility can be explicit
bd5e9647f646 templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents: 24720
diff changeset
   118
bd5e9647f646 templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents: 24720
diff changeset
   119
  $ PATTERN='t4' hg log -r '.' -T "{envvars % '{key} -> {value}\n'}" \
bd5e9647f646 templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents: 24720
diff changeset
   120
  >                 --config "experimental.exportableenviron=PATTERN"
bd5e9647f646 templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents: 24720
diff changeset
   121
  PATTERN -> t4
35006
8154119ed236 cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents: 32584
diff changeset
   122
8154119ed236 cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents: 32584
diff changeset
   123
Test behavior of output when directory structure does not already exist
8154119ed236 cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents: 32584
diff changeset
   124
8154119ed236 cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents: 32584
diff changeset
   125
  $ mkdir foo
8154119ed236 cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents: 32584
diff changeset
   126
  $ echo a > foo/a
8154119ed236 cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents: 32584
diff changeset
   127
  $ hg add foo/a
8154119ed236 cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents: 32584
diff changeset
   128
  $ hg commit -qm "add foo/a"
8154119ed236 cat: test output path behvaior when target path does not exist
Ryan McElroy <rmcelroy@fb.com>
parents: 32584
diff changeset
   129
  $ hg cat --output "output/%p" foo/a
35007
407ec7f3ff02 cmdutil: create dirs for templated cat file output
Ryan McElroy <rmcelroy@fb.com>
parents: 35006
diff changeset
   130
  $ cat output/foo/a
407ec7f3ff02 cmdutil: create dirs for templated cat file output
Ryan McElroy <rmcelroy@fb.com>
parents: 35006
diff changeset
   131
  a