git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 0/2] interoperability test harness

From
Jeff King <peff@peff.net>
Date
Feb 25, 2017, 09:32 UTC
Message-ID
<20170225093231.k7jtvx47jieka7qm@sigill.intra.peff.net>

This series adds a small test harness for interoperability tests. The heavy lifting is done by the normal test-lib.sh; this just makes it easy for you to have access to two git versions at the same time.

This is something I've wanted a few times in the past when we make a fix that can only be tested when interacting with a different version of git. As we start to work on changes like new protocols or hash functions, this will hopefully make it easier to demonstrate what happens when an older version of git encounters our new features.

This doesn't run when the regular test suite runs (it's likely to be a bit flakier, as it actually has to build the alternative versions separately). So I don't necessarily expect people to run it all the time. But it lets us write down in a repeatable way the sorts of testing that often ends up being done manually (or not at all) today.

This series just adds the harness and a basic test that we can still clone from modern git using v1.0.0 (yay!). If people are interested, I suspect there are previous cases that could be backfilled. A few I can think of are:

  1. How older versions handle repositoryformatversion=2.
  2. Newer clients hitting older servers without various capabilities.
     One example is in:
       http://public-inbox.org/git/1433961320-1366-1-git-send-email-adgar@google.com/
  3. Vice-versa: older clients without capabilities hitting newer
     servers (especially in exotic situations, like shallow clone).

I don't think there's a huge value in doing that for old changes unless somebody has actively reported a problem. So only do it if it sounds like a fun experiment. :)

  [1/2]: t: add an interoperability test harness
  [2/2]: t/interop: add test of old clients against modern git-daemon
 Makefile                      |  3 ++
 t/interop/.gitignore          |  4 ++
 t/interop/Makefile            | 16 ++++++++
 t/interop/README              | 84 +++++++++++++++++++++++++++++++++++++++
 t/interop/i0000-basic.sh      | 27 +++++++++++++
 t/interop/i5500-git-daemon.sh | 41 +++++++++++++++++++
 t/interop/interop-lib.sh      | 92 +++++++++++++++++++++++++++++++++++++++++++
 t/lib-git-daemon.sh           |  3 +-
 8 files changed, 269 insertions(+), 1 deletion(-)
 create mode 100644 t/interop/.gitignore
 create mode 100644 t/interop/Makefile
 create mode 100644 t/interop/README
 create mode 100755 t/interop/i0000-basic.sh
 create mode 100755 t/interop/i5500-git-daemon.sh
 create mode 100644 t/interop/interop-lib.sh
-Peff
Next: Jeff King
Message 1 of 3 in “interoperability test harness”
  1. 0/2 interoperability test harnessJeff King, Feb 25, 2017
  2. 1/2 t: add an interoperability test harnessJeff King, Feb 25, 2017
  3. 2/2 t/interop: add test of old clients against modern git-daemonJeff King, Feb 25, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.