# HG changeset patch # User Matt Harbison # Date 2019-11-12 22:47:42 # Node ID 21e05aabef8c2ba59ed6703e0b7a514127294c60 # Parent 0c25e3404e2371ec1e7d237f58172268fd261c63 hghave: add a check for the `xz` compression utility This isn't install by default on Mac, which causes a test failure. The logic for avoiding the command is a little goofy, but nested `#if` isn't supported, and it still seems worth running the hg command to see if anything explodes. With this, the py3 tests run (almost) cleanly on 10.14.6: # Ran 835 tests, 58 skipped, 1 failed. Alas, the mac-packaging test is skipped because it's slow. The failure here is in test-releasenotes-merging.t, complaining about not being able to import the `fuzzywuzzy` module. I have it installed on py3 (thus the test isn't skipped), but not on py2. So there must be some unintended cross pollination here when running `hg` commands. Differential Revision: https://phab.mercurial-scm.org/D7374 diff --git a/tests/hghave.py b/tests/hghave.py --- a/tests/hghave.py +++ b/tests/hghave.py @@ -673,6 +673,13 @@ def has_tic(): return False +@check("xz", "xz compression utility") +def has_xz(): + # When Windows invokes a subprocess in shell mode, it uses `cmd.exe`, which + # only knows `where`, not `which`. So invoke MSYS shell explicitly. + return matchoutput("sh -c 'test -x \"`which xz`\"'", b'') + + @check("msys", "Windows with MSYS") def has_msys(): return os.getenv('MSYSTEM') diff --git a/tests/test-archive.t b/tests/test-archive.t --- a/tests/test-archive.t +++ b/tests/test-archive.t @@ -574,8 +574,8 @@ test xz support only available in Python #if py3 $ hg archive ../archive.txz - $ xz -l ../archive.txz | head -n1 - Strms Blocks Compressed Uncompressed Ratio Check Filename + $ which xz >/dev/null && xz -l ../archive.txz | head -n1 || true + Strms Blocks Compressed Uncompressed Ratio Check Filename (xz !) $ rm -f ../archive.txz #else $ hg archive ../archive.txz