tests/test-ssh-batch.t
author Matt Harbison <matt_harbison@yahoo.com>
Sat, 03 Aug 2024 01:33:13 -0400
changeset 51871 cfd30df0f8e4
parent 47920 9c4204b7f3e4
permissions -rw-r--r--
bundlerepo: fix mismatches with repository and revlog classes Both pytype and PyCharm complained that `write()` and `_write()` in the bundlephasecache class aren't proper overrides- indeed they seem to be missing an argument that the base class has. PyCharm and pytype also complained that the `revlog.revlog` class doesn't have a `_chunk()` method. That looks like it was moved from revlog to `_InnerRevlog` back in e8ad6d8de8b8, and wasn't caught because this module wasn't type checked. However, I couldn't figure out a syntax with `revlog.revlog._inner._chunk(self, rev)`, as it complained about passing too many args. `bundlerevlog._rawtext()` uses this `super(...)` style to call the super class, so hopefully that works, even with the wonky dynamic subclassing. The revlog class needed the `_InnerRevlog` field typed because it isn't set in the constructor. Finally, the vfs type hints look broken. This initially failed with: File "/mnt/c/Users/Matt/hg/mercurial/bundlerepo.py", line 65, in __init__: Function readonlyvfs.__init__ was called with the wrong arguments [wrong-arg-types] Expected: (self, vfs: mercurial.vfs.vfs) Actually passed: (self, vfs: Callable) Called from (traceback): line 232, in dirlog line 214, in __init__ I don't see a raw Callable, but I tried changing some of the vfs args to be typed as `vfsmod.abstractvfs`, but that class doesn't have `options`, so it failed elsewhere. `readonlyvfs` isn't a subclass of `vfs` (it's a subclass of `abstractvfs`), so I'm not sure how to handle that. It would be a shame to have to make a union of vfs subclasses (but not all of them have `options` either).

  $ hg init a
  $ cd a
  $ touch a; hg commit -qAm_
  $ hg bookmark $(for i in $($TESTDIR/seq.py 0 20); do echo b$i; done)
  $ hg clone . ../b -q
  $ cd ../b

Checking that when lookup multiple bookmarks in one go, if one of them
fails (thus causing the sshpeer to be stopped), the errors from the
further lookups don't result in tracebacks.

  $ hg pull -r b0 -r nosuchbookmark $(for i in $($TESTDIR/seq.py 1 20); do echo -r b$i; done) ssh://user@dummy/$(pwd)/../a
  pulling from ssh://user@dummy/$TESTTMP/b/../a
  abort: unknown revision 'nosuchbookmark'
  [255]