tests/test-execute-bit.t
author Gregory Szorc <gregory.szorc@gmail.com>
Sun, 16 Oct 2016 10:38:52 -0700
changeset 30187 3e86261bf110
parent 22046 7a9cbb315d84
child 48335 b7fde9237c92
permissions -rw-r--r--
exchange: refactor APIs to obtain bundle data (API) Currently, exchange.getbundle() returns either a cg1unpacker or a util.chunkbuffer (in the case of bundle2). This is kinda OK, as both expose a .read() to consumers. However, localpeer.getbundle() has code inferring what the response type is based on arguments and converts the util.chunkbuffer returned in the bundle2 case to a bundle2.unbundle20 instance. This is a sign that the API for exchange.getbundle() is not ideal because it doesn't consistently return an "unbundler" instance. In addition, unbundlers mask the fact that there is an underlying generator of changegroup data. In both cg1 and bundle2, this generator is being fed into a util.chunkbuffer so it can be re-exposed as a file object. util.chunkbuffer is a nice abstraction. However, it should only be used "at the edges." This is because keeping data as a generator is more efficient than converting it to a chunkbuffer, especially if we convert that chunkbuffer back to a generator (as is the case in some code paths currently). This patch refactors exchange.getbundle() into exchange.getbundlechunks(). The new API returns an iterator of chunks instead of a file-like object. Callers of exchange.getbundle() have been updated to use the new API. There is a minor change of behavior in test-getbundle.t. This is because `hg debuggetbundle` isn't defining bundlecaps. As a result, a cg1 data stream and unpacker is being produced. This is getting fed into a new bundle20 instance via bundle2.writebundle(), which uses a backchannel mechanism between changegroup generation to add the "nbchanges" part parameter. I never liked this backchannel mechanism and I plan to remove it someday. `hg bundle` still produces the "nbchanges" part parameter, so there should be no user-visible change of behavior. I consider this "regression" a bug in `hg debuggetbundle`. And that bug is captured by an existing "TODO" in the code to use bundle2 capabilities.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22046
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 18334
diff changeset
     1
#require execbit
5490
bf2bb53e5d2b See if execute bit is honoured when we go back in time
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
     2
12190
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
     3
  $ hg init
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
     4
  $ echo a > a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
     5
  $ hg ci -Am'not executable'
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
     6
  adding a
5495
363ba35f55bd test-execute-bit: skip if execute-bit is not supported
Patrick Mezard <pmezard@gmail.com>
parents: 5490
diff changeset
     7
12190
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
     8
  $ chmod +x a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
     9
  $ hg ci -m'executable'
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    10
  $ hg id
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    11
  79abf14474dc tip
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    12
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    13
Make sure we notice the change of mode if the cached size == -1:
5490
bf2bb53e5d2b See if execute bit is honoured when we go back in time
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
    14
12190
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    15
  $ hg rm a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    16
  $ hg revert -r 0 a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    17
  $ hg debugstate
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    18
  n   0         -1 unset               a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    19
  $ hg status
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    20
  M a
5490
bf2bb53e5d2b See if execute bit is honoured when we go back in time
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
    21
12190
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    22
  $ hg up 0
18334
44bda93df90e merge: changing the mode of a file is also an update
Mads Kiilerich <mads@kiilerich.com>
parents: 12190
diff changeset
    23
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
12190
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    24
  $ hg id
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    25
  d69afc33ff8a
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    26
  $ test -x a && echo executable -- bad || echo not executable -- good
9231c629ec10 tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents: 6158
diff changeset
    27
  not executable -- good
6158
23ffe82615d8 repo.status: also compare flags for files in the lookup list.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 5495
diff changeset
    28