hghave: add a check for the `xz` compression utility
authorMatt Harbison <matt_harbison@yahoo.com>
Tue, 12 Nov 2019 17:47:42 -0500
changeset 43699 21e05aabef8c
parent 43698 0c25e3404e23
child 43700 a58d2361b231
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
tests/hghave.py
tests/test-archive.t
--- a/tests/hghave.py	Thu Nov 14 22:31:21 2019 -0800
+++ b/tests/hghave.py	Tue Nov 12 17:47:42 2019 -0500
@@ -673,6 +673,13 @@
         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')
--- a/tests/test-archive.t	Thu Nov 14 22:31:21 2019 -0800
+++ b/tests/test-archive.t	Tue Nov 12 17:47:42 2019 -0500
@@ -574,8 +574,8 @@
 
 #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