tests/test-narrow-sparse.t
author Manuel Jacob <me@manueljacob.de>
Mon, 11 Jul 2022 01:51:20 +0200
branchstable
changeset 49378 094a5fa3cf52
parent 48669 7ee07e1a25c0
permissions -rw-r--r--
procutil: make stream detection in make_line_buffered more correct and strict In make_line_buffered(), we don’t want to wrap the stream if we know that lines get flushed to the underlying raw stream already. Previously, the heuristic was too optimistic. It assumed that any stream which is not an instance of io.BufferedIOBase doesn’t need wrapping. However, there are buffered streams that aren’t instances of io.BufferedIOBase, like Mercurial’s own winstdout. The new logic is different in two ways: First, only for the check, if unwraps any combination of WriteAllWrapper and winstdout. Second, it skips wrapping the stream only if it is an instance of io.RawIOBase (or already wrapped). If it is an instance of io.BufferedIOBase, it gets wrapped. In any other case, the function raises an exception. This ensures that, if an unknown stream is passed or we add another wrapper in the future, we don’t wrap the stream if it’s already line buffered or not wrap the stream if it’s not line buffered. In fact, this was already helpful during development of this change. Without it, I possibly would have forgot that WriteAllWrapper needs to be ignored for the check, leading to unnecessary wrapping if stdout is unbuffered. The alternative would have been to always wrap unknown streams. However, I don’t think that anyone would benefit from being less strict. We can expect streams from the standard library to be subclassing either io.RawIOBase or io.BufferedIOBase, so running Mercurial in the standard way should not regress by this change. Py2exe might replace sys.stdout and sys.stderr, but that currently breaks Mercurial anyway and also these streams don’t claim to be interactive, so this function is not called for them.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
41147
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
     1
Testing interaction of sparse and narrow when both are enabled on the client
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
     2
side and we do a non-ellipsis clone
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
     3
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
     4
#testcases tree flat
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
     5
  $ . "$TESTDIR/narrow-library.sh"
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
     6
  $ cat << EOF >> $HGRCPATH
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
     7
  > [extensions]
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
     8
  > sparse =
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
     9
  > EOF
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    10
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    11
#if tree
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    12
  $ cat << EOF >> $HGRCPATH
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    13
  > [experimental]
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    14
  > treemanifest = 1
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    15
  > EOF
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    16
#endif
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    17
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    18
  $ hg init master
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    19
  $ cd master
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    20
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    21
  $ mkdir inside
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    22
  $ echo 'inside' > inside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    23
  $ hg add inside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    24
  $ hg commit -m 'add inside'
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    25
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    26
  $ mkdir widest
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    27
  $ echo 'widest' > widest/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    28
  $ hg add widest/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    29
  $ hg commit -m 'add widest'
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    30
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    31
  $ mkdir outside
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    32
  $ echo 'outside' > outside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    33
  $ hg add outside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    34
  $ hg commit -m 'add outside'
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    35
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    36
  $ cd ..
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    37
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    38
narrow clone the inside file
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    39
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    40
  $ hg clone --narrow ssh://user@dummy/master narrow --include inside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    41
  requesting all changes
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    42
  adding changesets
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    43
  adding manifests
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    44
  adding file changes
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    45
  added 3 changesets with 1 changes to 1 files
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    46
  new changesets *:* (glob)
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    47
  updating to branch default
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    48
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    49
  $ cd narrow
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    50
  $ hg tracked
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    51
  I path:inside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    52
  $ hg files
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    53
  inside/f
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    54
41148
8eaf693b1409 sparse: don't enable on clone if it was a narrow clone
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 41147
diff changeset
    55
XXX: we should have a flag in `hg debugsparse` to list the sparse profile
8eaf693b1409 sparse: don't enable on clone if it was a narrow clone
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 41147
diff changeset
    56
  $ test -f .hg/sparse
8eaf693b1409 sparse: don't enable on clone if it was a narrow clone
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 41147
diff changeset
    57
  [1]
41147
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    58
48464
5e6542143d40 test: use `hg debugrequires` instead of `cat` in some tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48321
diff changeset
    59
  $ hg debugrequires
41147
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    60
  dotencode
48321
f35529784079 dirstate-v2: fix confusion between requirement and format config variable
Raphaël Gomès <rgomes@octobus.net>
parents: 48295
diff changeset
    61
  dirstate-v2 (dirstate-v2 !)
41147
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    62
  fncache
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    63
  generaldelta
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    64
  narrowhg-experimental
46884
cc3ad5c3af3b persistent-nodemap: enable the feature by default when using Rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46874
diff changeset
    65
  persistent-nodemap (rust !)
46874
84a93fa7ecfd revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41150
diff changeset
    66
  revlog-compression-zstd (zstd !)
41147
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    67
  revlogv1
48669
7ee07e1a25c0 share-safe: enable by default (BC)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 48464
diff changeset
    68
  share-safe
41147
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    69
  sparserevlog
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    70
  store
eb172f9c208c tests: add tests for narrow clone when both sparse and narrow are enabled
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
diff changeset
    71
  treemanifest (tree !)
41149
76dcf7958c5f tests: show that debugrebuilddirstate is broken with narrow+sparse
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 41148
diff changeset
    72
76dcf7958c5f tests: show that debugrebuilddirstate is broken with narrow+sparse
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 41148
diff changeset
    73
  $ hg debugrebuilddirstate
47303
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    74
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    75
We only make the following assertions for the flat test case since in the
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    76
treemanifest test case debugsparse fails with "path ends in directory
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    77
separator: outside/" which seems like a bug unrelated to the regression this is
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    78
testing for.
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    79
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    80
#if flat
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    81
widening with both sparse and narrow is possible
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    82
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    83
  $ cat >> .hg/hgrc <<EOF
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    84
  > [extensions]
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    85
  > sparse = 
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    86
  > narrow = 
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    87
  > EOF
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    88
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    89
  $ hg debugsparse -X outside/f -X widest/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    90
  $ hg tracked -q --addinclude outside/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    91
  $ find . -name .hg -prune -o -type f -print | sort
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    92
  ./inside/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    93
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    94
  $ hg debugsparse -d outside/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    95
  $ find . -name .hg -prune -o -type f -print | sort
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    96
  ./inside/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    97
  ./outside/f
e4ccc341e65b narrow: widen when files are excluded by sparse and not included by narrow
Charles Chamberlain <cchamberlain@janestreet.com>
parents: 47279
diff changeset
    98
#endif