tests/test-extdata.t
author Gregory Szorc <gregory.szorc@gmail.com>
Wed, 26 Sep 2018 14:41:15 -0700
changeset 40389 1b183edbb68e
parent 37975 faa41fd282d1
child 42575 eec65b706caf
permissions -rw-r--r--
repository: teach addgroup() to receive data with missing parents The way the narrow extension works today, the server rewrites outgoing changegroup data to lie about parents when the parents data is missing. It adds the ellipsis flag to the revision so it can be recorded as such in the revlog. In the new wire protocol, such rewriting does not occur on the server (at least not yet anyway). Instead, it is up to the client to recognize when it has received a revision without its parents. This means rewriting will be performed on the client. Furthermore, the mechanism for storing a shallow revision may differ from store to store. For example, the revlog store uses the ellipsis flag to denote a revision's parents have been rewritten. But a non-revlog store may wish to store things differently. And, some stores may not even support receiving shallow revision data! Therefore, it makes sense for the store itself to be making decisions about what to do when they receive revision data without their parents. This commit teaches the addgroup() bulk insert method to accept a boolean argument that indicates whether the incoming data may lack parent revisions. This flag can be set when receiving "shallow" data from a remote. The revlog implementation of this method has been taught to rewrite the missing parent(s) to nullid and to add the ellipsis flag to the revision when a missing parent is encountered. But it only does this if ellipsis flags are enabled on the repo and the incoming data is marked as possibly shallow. An error occurs otherwise. Differential Revision: https://phab.mercurial-scm.org/D5165
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34458
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     1
  $ hg init repo
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     2
  $ cd repo
34460
d5c5cc767b7e extdata: ignore ambiguous identifier as well
Yuya Nishihara <yuya@tcha.org>
parents: 34459
diff changeset
     3
  $ for n in 0 1 2 3 4 5 6 7 8 9 10 11; do
34458
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     4
  >   echo $n > $n
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     5
  >   hg ci -qAm $n
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     6
  > done
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     7
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     8
test revset support
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     9
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    10
  $ cat <<'EOF' >> .hg/hgrc
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    11
  > [extdata]
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    12
  > filedata = file:extdata.txt
34459
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    13
  > notes = notes.txt
34458
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    14
  > shelldata = shell:cat extdata.txt | grep 2
34542
153e4e05e9b3 extdata: show debug message if external command exits with non-zero status
Yuya Nishihara <yuya@tcha.org>
parents: 34460
diff changeset
    15
  > emptygrep = shell:cat extdata.txt | grep empty
34458
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    16
  > EOF
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    17
  $ cat <<'EOF' > extdata.txt
34459
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    18
  > 2 another comment on 2
34458
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    19
  > 3
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    20
  > EOF
34459
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    21
  $ cat <<'EOF' > notes.txt
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    22
  > f6ed this change is great!
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    23
  > e834 this is buggy :(
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    24
  > 0625 first post
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    25
  > bogusnode gives no error
34460
d5c5cc767b7e extdata: ignore ambiguous identifier as well
Yuya Nishihara <yuya@tcha.org>
parents: 34459
diff changeset
    26
  > a ambiguous node gives no error
34459
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    27
  > EOF
34458
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    28
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    29
  $ hg log -qr "extdata(filedata)"
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    30
  2:f6ed99a58333
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    31
  3:9de260b1e88e
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    32
  $ hg log -qr "extdata(shelldata)"
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    33
  2:f6ed99a58333
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    34
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    35
test weight of extdata() revset
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    36
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    37
  $ hg debugrevspec -p optimized "extdata(filedata) & 3"
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    38
  * optimized:
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    39
  (andsmally
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    40
    (func
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    41
      (symbol 'extdata')
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    42
      (symbol 'filedata'))
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    43
    (symbol '3'))
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    44
  3
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    45
34542
153e4e05e9b3 extdata: show debug message if external command exits with non-zero status
Yuya Nishihara <yuya@tcha.org>
parents: 34460
diff changeset
    46
test non-zero exit of shell command
153e4e05e9b3 extdata: show debug message if external command exits with non-zero status
Yuya Nishihara <yuya@tcha.org>
parents: 34460
diff changeset
    47
153e4e05e9b3 extdata: show debug message if external command exits with non-zero status
Yuya Nishihara <yuya@tcha.org>
parents: 34460
diff changeset
    48
  $ hg log -qr "extdata(emptygrep)"
35419
b1959391a088 extdata: abort if external command exits with non-zero status (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 35239
diff changeset
    49
  abort: extdata command 'cat extdata.txt | grep empty' failed: exited with status 1
b1959391a088 extdata: abort if external command exits with non-zero status (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 35239
diff changeset
    50
  [255]
34542
153e4e05e9b3 extdata: show debug message if external command exits with non-zero status
Yuya Nishihara <yuya@tcha.org>
parents: 34460
diff changeset
    51
34458
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    52
test bad extdata() revset source
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    53
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    54
  $ hg log -qr "extdata()"
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    55
  hg: parse error: extdata takes at least 1 string argument
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    56
  [255]
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    57
  $ hg log -qr "extdata(unknown)"
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    58
  abort: unknown extdata source 'unknown'
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    59
  [255]
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    60
34459
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    61
test template support:
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    62
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    63
  $ hg log -r:3 -T "{node|short}{if(extdata('notes'), ' # {extdata('notes')}')}\n"
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    64
  06254b906311 # first post
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    65
  e8342c9a2ed1 # this is buggy :(
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    66
  f6ed99a58333 # this change is great!
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    67
  9de260b1e88e
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    68
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    69
test template cache:
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    70
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    71
  $ hg log -r:3 -T '{rev} "{extdata("notes")}" "{extdata("shelldata")}"\n'
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    72
  0 "first post" ""
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    73
  1 "this is buggy :(" ""
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    74
  2 "this change is great!" "another comment on 2"
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    75
  3 "" ""
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    76
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    77
test bad extdata() template source
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    78
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    79
  $ hg log -T "{extdata()}\n"
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    80
  hg: parse error: extdata expects one argument
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    81
  [255]
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    82
  $ hg log -T "{extdata('unknown')}\n"
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    83
  abort: unknown extdata source 'unknown'
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    84
  [255]
37975
faa41fd282d1 templatefuncs: show hint if extdata source is evaluated to empty (issue5843)
Yuya Nishihara <yuya@tcha.org>
parents: 35419
diff changeset
    85
  $ hg log -T "{extdata(unknown)}\n"
faa41fd282d1 templatefuncs: show hint if extdata source is evaluated to empty (issue5843)
Yuya Nishihara <yuya@tcha.org>
parents: 35419
diff changeset
    86
  hg: parse error: empty data source specified
faa41fd282d1 templatefuncs: show hint if extdata source is evaluated to empty (issue5843)
Yuya Nishihara <yuya@tcha.org>
parents: 35419
diff changeset
    87
  (did you mean extdata('unknown')?)
faa41fd282d1 templatefuncs: show hint if extdata source is evaluated to empty (issue5843)
Yuya Nishihara <yuya@tcha.org>
parents: 35419
diff changeset
    88
  [255]
faa41fd282d1 templatefuncs: show hint if extdata source is evaluated to empty (issue5843)
Yuya Nishihara <yuya@tcha.org>
parents: 35419
diff changeset
    89
  $ hg log -T "{extdata('{unknown}')}\n"
faa41fd282d1 templatefuncs: show hint if extdata source is evaluated to empty (issue5843)
Yuya Nishihara <yuya@tcha.org>
parents: 35419
diff changeset
    90
  hg: parse error: empty data source specified
faa41fd282d1 templatefuncs: show hint if extdata source is evaluated to empty (issue5843)
Yuya Nishihara <yuya@tcha.org>
parents: 35419
diff changeset
    91
  [255]
34459
a1b89c8ad32d templater: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents: 34458
diff changeset
    92
34458
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    93
we don't fix up relative file URLs, but we do run shell commands in repo root
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    94
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    95
  $ mkdir sub
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    96
  $ cd sub
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    97
  $ hg log -qr "extdata(filedata)"
35239
feecfefeba25 tests: add a substitution for ENOENT/ERROR_FILE_NOT_FOUND messages
Matt Harbison <matt_harbison@yahoo.com>
parents: 34690
diff changeset
    98
  abort: error: $ENOENT$
34458
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    99
  [255]
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   100
  $ hg log -qr "extdata(shelldata)"
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   101
  2:f6ed99a58333
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   102
2c3b8fa3211b revset: add experimental support for extdata
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   103
  $ cd ..