tests/test-narrow-debugcommands.t
author Yuya Nishihara <yuya@tcha.org>
Sat, 17 Mar 2018 20:09:05 +0900
changeset 37274 7d3bc1d4e871
parent 36127 e14821b290eb
child 37284 009d0283de5f
permissions -rw-r--r--
templater: pass (context, mapping) down to unwraphybrid() See the subsequent patches for why. I initially thought it would be wrong to pass a mapping to flatten() and stringify() since these functions may be applied to a tree of generators, where each node should be bound to the mapping when it was evaluated. But, actually that isn't a problem. If an intermediate node has to override a mapping dict, it can do on unwraphybrid() and yield "unwrapped" generator of byte strings: "{f(g(v))}" # literal template example. ^^^^ # g() want to override a mapping, so it returns a wrapped # object 'G{V}' with partial mapping 'lm' attached. ^^^^^^^ # f() stringifies 'G{V}', starting from a mapping 'm'. # when unwrapping 'G{}', it updates 'm' with 'lm', and # passes it to 'V'. This structure is important for the formatter (and the hgweb) to build a static template keyword, which can't access a mapping dict until evaluation phase.

  $ . "$TESTDIR/narrow-library.sh"
  $ hg init repo
  $ cd repo
  $ cat << EOF > .hg/narrowspec
  > [includes]
  > path:foo
  > [excludes]
  > EOF
  $ echo treemanifest >> .hg/requires
  $ echo narrowhg-experimental >> .hg/requires
  $ mkdir -p foo/bar
  $ echo b > foo/f
  $ echo c > foo/bar/f
  $ hg commit -Am hi
  adding foo/bar/f
  adding foo/f
  $ hg debugindex -m
     rev    offset  length  delta linkrev nodeid       p1           p2
       0         0      47     -1       0 14a5d056d75a 000000000000 000000000000
  $ hg debugindex --dir foo
     rev    offset  length  delta linkrev nodeid       p1           p2
       0         0      77     -1       0 e635c7857aef 000000000000 000000000000
  $ hg debugindex --dir foo/
     rev    offset  length  delta linkrev nodeid       p1           p2
       0         0      77     -1       0 e635c7857aef 000000000000 000000000000
  $ hg debugindex --dir foo/bar
     rev    offset  length  delta linkrev nodeid       p1           p2
       0         0      44     -1       0 e091d4224761 000000000000 000000000000
  $ hg debugindex --dir foo/bar/
     rev    offset  length  delta linkrev nodeid       p1           p2
       0         0      44     -1       0 e091d4224761 000000000000 000000000000
  $ hg debugdata -m 0
  foo\x00e635c7857aef92ac761ce5741a99da159abbbb24t (esc)
  $ hg debugdata --dir foo 0
  bar\x00e091d42247613adff5d41b67f15fe7189ee97b39t (esc)
  f\x001e88685f5ddec574a34c70af492f95b6debc8741 (esc)
  $ hg debugdata --dir foo/ 0
  bar\x00e091d42247613adff5d41b67f15fe7189ee97b39t (esc)
  f\x001e88685f5ddec574a34c70af492f95b6debc8741 (esc)
  $ hg debugdata --dir foo/bar 0
  f\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)
  $ hg debugdata --dir foo/bar/ 0
  f\x00149da44f2a4e14f488b7bd4157945a9837408c00 (esc)