Skip to content
Snippets Groups Projects
  1. Apr 25, 2018
    • Gregory Szorc's avatar
      tests: explicitly define compression engines for tests · da07c781
      Gregory Szorc authored
      The zstd compression engine requires C extensions and isn't present
      in pure Python builds.
      
      The compression engine list leaks into the server capabilities string.
      
      Unless we're testing functionality specific to a compression format,
      the set of compression formats supported by a server doesn't matter
      much.
      
      So this commit explicitly defines the server's compression engines for
      some tests so behavior is consistent between pure and non-pure builds.
      
      Differential Revision: https://phab.mercurial-scm.org/D3431
      da07c781
    • Augie Fackler's avatar
      tests: update no-zstd branch of test-treediscovery.t as in 330ada7e8ea5 · b56e2c13
      Augie Fackler authored
      This side of the test got overlooked. We should probably consider
      having a way to run some of our tests through a "no-zstd" case just
      like we run some things through a "no-obsmarkers" case, but that's not
      an appropriate thing for stable.
      
      Differential Revision: https://phab.mercurial-scm.org/D3430
      b56e2c13
    • Augie Fackler's avatar
      tests: glob away content-length changes relating to missing zstd bindings · 143632f8
      Augie Fackler authored
      This doesn't fix everything in these two tests around missing zstd: we
      still get some changes in the CBOR payload in ways that I think we
      probably shouldn't bother to glob around. Maybe we should just disable
      zstd support in some of these lower-level wireproto tests?
      
      Differential Revision: https://phab.mercurial-scm.org/D3429
      143632f8
    • Martin von Zweigbergk's avatar
      revlog: make pure version of _partialmatch() support 40-byte hex nodeids · ee3d58b4
      Martin von Zweigbergk authored
      Without this patch, test-histedit-arguments.t would fail when run with
      --pure. It turned out to be because the pure version of
      _partialmatch() does not support full 40-byte hex nodeids. When
      histedit's instructions include things like "pick tip", it resolves
      the "tip" revision early to a full nodeid (but plain hex nodeid
      prefixes are not resolved to full nodeids). Then the nodeid (full or
      not) is looked up using to a full nodeid later. This step is what
      fails in pure mode. It has been failing since my c4131138eadb
      (histedit: look up partial nodeid as partial nodeid, 2018-04-06). I
      haven't verified, but I suspect histedit instructions like "pick <full
      hex nodeid>" would have been failing before my commit too, though.
      
      The fix is trivial: change a "< 40" to "<= 40".
      
      Differential Revision: https://phab.mercurial-scm.org/D3428
      ee3d58b4
  2. Apr 24, 2018
    • Gregory Szorc's avatar
      hgweb: reuse body file object when hgwebdir calls hgweb (issue5851) · 877185de
      Gregory Szorc authored
      An unintended side-effect of f0a851542a05 was that the request body
      file object (which uses a util.cappedreader) was constructed twice
      when hgwebdir called into hgweb. Since we attempt to read all remaining
      data from this file object when Content-Length is defined and since there
      were two instances of this object and the client supplied no additional
      data to read, this resulted in deadlock.
      
      The fix implemented in this commit is to reuse the request body file
      object when it is passed from hgwebdir to hgweb.
      
      A test demonstrating `hg clone` and `hg push` via hgwebdir has been
      added. Without this patch, the test hangs when doing `hg clone`.
      Surprisingly, this must mean that we have effectively no test coverage
      of the wire protocol when run via hgwebdir.
      
      Differential Revision: https://phab.mercurial-scm.org/D3427
      877185de
    • Pulkit Goyal's avatar
      remotenames: mark the extension as EXPERIMENTAL · 678ab0de
      Pulkit Goyal authored
      I still don't feel confident about locking the behavior of all the things in
      the remotenames extension. Moreover the extension was introduced in this cycle
      only. Let's mark this extension EXPERIMENTAL for now so that we can change
      things especially the storage layer if required in next cycle.
      
      I will like to use cbor at storage layer too.
      
      Differential Revision: https://phab.mercurial-scm.org/D3426
      678ab0de
  3. Apr 25, 2018
  4. Apr 24, 2018
  5. Apr 23, 2018
    • Boris Feld's avatar
      sshpeer: reflect actual command activity one handshake · 58bbd14b
      Boris Feld authored
      The output from devel-peer-request is expected to give data about request and
      roundtrip done to the server. Changeset a9cffd14aa04 changed some of that by
      grouping hello and between commands call. However, the old sequence of command
      was "emulated" in sshpeer.
      
      Update the sshpeer to reflect this grouping of commands and update the tests
      that use it.
      58bbd14b
  6. Apr 24, 2018
    • Matt Harbison's avatar
      tests: drop a useless glob in test-infinite-bundlestore.t · 91b717e2
      Matt Harbison authored
      With the previous breakage tamed, the lack of test output difference was causing
      the test runner to report "no result code from test" because of this glob.
      91b717e2
    • Matt Harbison's avatar
      infinitepush: ensure fileindex bookmarks use '/' separators (issue5840) · 51dee6fa
      Matt Harbison authored
      After loading up with status messages, I noticed that the subsequent matcher was
      rejecting 'scratch\mybranch' on Windows.  No bookmarks were reported back, and
      the tests subsequently failed.  I did a search for 'match', and nothing else
      looks like it needs to be fixed up, but someone who understands this code should
      also take a look.
      
      I also tried setting `infinitepush.branchpattern=re:scratch\\.*` in
      library-infinitepush.sh without this change, but that didn't work.  Still,
      should we ban '\' in these bookmarks to avoid confusion?  I thought I saw code
      that sandwiches a pattern between 're:^' and '.*', so perhaps regex characters
      will need special care?
      
      I also noticed comments in externalbundlestore.{read,write} that it won't work
      on Windows because of opening an open file.  But I don't see a test failure, so
      this may lack test coverage.
      51dee6fa
  7. Apr 22, 2018
    • Gregory Szorc's avatar
      interfaceutil: module to stub out zope.interface · 856f381a
      Gregory Szorc authored
      The startup time of `hg` increased during the 4.6 development cycle. A
      cause of that was importing more modules and doing more work at module
      import time.
      
      The import of zope.interface and the declaring of various interfaces
      is partially responsible for the startup time regression.
      
      Our current usage of zope.interface doesn't do much at run time: we are
      merely declaring interfaces and stating that certain types implement
      various interfaces. Core Mercurial is not (yet) using of any of
      zope.interface features that actually require that interface plumbing be
      defined. The only place we actually need the interface metadata is in
      test-check-interfaces.py.
      
      This commit establishes a new interfaceutil module. It exposes the subset
      of the zope.interface API that we currently use. By default, the APIs
      no-op. But if an environment variable is set, we export the real
      zope.interface APIs.
      
      Existing importers of zope.interface have been converted to use the new
      module. test-check-interfaces.py has been updated to define the
      environment variable so the real zope.interface is used.
      
      The net effect of this change is we stop importing 9 zope.interface.*
      modules and we no longer perform interface bookkeeping when registering
      interfaces.
      
      On my i7-6700K on Linux, a shell loop that runs `hg log -r .` 300 times
      on a repo with 1 commit shows a significant CPU time improvement
      (average of 4 runs):
      
      4.5:    14.814s
      before: 19.028s
      after:  16.945s
      
      And with `run-tests.py -j10` (single run):
      
      4.5:    ~3100s (~51.7m)
      before: ~4450s (~74.2m)
      after:  ~3980s (~66.3m)
      
      So this claws back about half of the regressions in 4.6.
      
      Differential Revision: https://phab.mercurial-scm.org/D3419
      856f381a
  8. Apr 23, 2018
  9. Apr 20, 2018
  10. Apr 19, 2018
  11. Apr 20, 2018
  12. Apr 19, 2018
  13. Apr 18, 2018
  14. Apr 19, 2018
    • Matt Harbison's avatar
      infinitepush: open files in binary mode · 33d26f7b
      Matt Harbison authored
      This fixes the scary looking abort in test-infinitepush-ci.t when unbundling:
      
        --- tests/test-infinitepush-ci.t
        +++ tests/test-infinitepush-ci.t.err
        @@ -84,15 +84,12 @@
      
           $ hg unbundle .hg/scratchbranches/filebundlestore/a4/c2/a4c202c147a9c4bb91bbadb56321fc5f3950f7f2
           adding changesets
        -  adding manifests
        -  adding file changes
        -  added 1 changesets with 1 changes to 1 files
        -  new changesets 6cb0989601f1
        -  (run 'hg update' to get a working copy)
        -
        -  $ hg glog
        -  o  1:6cb0989601f1 added a
        -  |  public
        +  transaction abort!
        +  rollback completed
        +  abort: stream ended unexpectedly  (got 68 bytes, expected 218759168)
        +  [255]
        +
        +  $ hg glog
           @  0:67145f466344 initialcommit
              public
      
      This was found by grepping for '"r', "'r", '"w' and "'w" after manually creating
      a bundle from the same revision, diffing against the corrupt one, and seeing CRs
      sprinkled around.  Sadly, the missing bookmarks are still a problem in the two
      remaining test failures.
      33d26f7b
  15. Mar 31, 2018
  16. Apr 18, 2018
  17. Mar 04, 2018
    • Augie Fackler's avatar
      rebase: introduce support for automatically rebasing orphan changes · 92213f67
      Augie Fackler authored
      _destautorebase(SRC) is based on the _destrestack(SRC) revset from
      fbamend. The supporting _possibledestination function is extracted
      from evolve, with minor cleanups.
      
      We've considered some alternatives here:
       * This change, but with --auto as the flag name. We're hedging our bets
         on this a little in this change so that if this ends up being the wrong
         direction we haven't burned the valauble --auto name on rebase.
       * --destination auto: I've got reservations about the discoverability of this,
         and we don't currently have a good story for a revset alias of sorts that
         changes behavior depending on the context in which it's used.
       * A "rebase presets" feature, where we could use the currently-an-error
         positional argument space for the rebase command to define presets, so that
         users could define a 'linearize' preset that specifies
         --revision='orphan()-obsolete()' and --dest=_destautoorphanrebase(SRC).
      
      Personally, I find the third option somewhat appealing, but am
      hesitant to "spend" the functionality space of positional arguments to
      the rebase command. We should revisit the way we expose this
      functionality sometime in the 4.7 cycle once we've had a chance to vet
      the implementation of the functionality.
      
      Differential Revision: https://phab.mercurial-scm.org/D2668
      92213f67
  18. Apr 18, 2018
  19. Apr 17, 2018
Loading