tests: fix hooks in `test-transaction-rollback-on-revlog-split.t` for Windows
authorMatt Harbison <matt_harbison@yahoo.com>
Sat, 12 Oct 2024 16:55:30 -0400
changeset 51998 629ecced55a6
parent 51997 3f70ea5bcaeb
child 51999 997c9b2069d1
tests: fix hooks in `test-transaction-rollback-on-revlog-split.t` for Windows A few problems with external hooks here: 1) `cmd.exe` is blissfully unaware of the meaning of single quotes, and passes them along as part of the revision arg 2) `cmd.exe` doesn't know how to run the python script `f` with the shebang line, so it needs to be invoked with the intepreter explicitly. Then for some reason it was trying to open `$TESTTMP\troffset-computation-hooks\f`, so make it an absolute path. 3) Likewise, the shell script `wait-on-file` cannot be invoked directly by `cmd.exe`. 4) Windows python doesn't understand whatever `$TESTTMP` unrolls to (probably it has the double backslashes), and silently failed to write the lock file. I'm assuming that `pretxnclose.03-abort` is also bad (there's no `false` in `cmd.exe`), but it's not currently causing problems. Also note that the paths in this are very long, and typically exceed the `MAX_PATH` limit in Windows. It can be run with `run-tests.py --tmpdir /c/t`.
tests/test-transaction-rollback-on-revlog-split.t
--- a/tests/test-transaction-rollback-on-revlog-split.t	Sat Oct 12 16:35:03 2024 -0400
+++ b/tests/test-transaction-rollback-on-revlog-split.t	Sat Oct 12 16:55:30 2024 -0400
@@ -58,11 +58,11 @@
   > def _wait_post_load(orig, self, *args, **kwargs):
   >     wait = b'data/file' in self.radix
   >     if wait:
-  >         testing.wait_file(b"$TESTTMP/writer-revlog-split")
+  >         testing.wait_file(b"$TESTTMP_FORWARD_SLASH/writer-revlog-split")
   >     r = orig(self, *args, **kwargs)
   >     if wait:
-  >         testing.write_file(b"$TESTTMP/reader-index-read")
-  >         testing.wait_file(b"$TESTTMP/writer-revlog-unsplit")
+  >         testing.write_file(b"$TESTTMP_FORWARD_SLASH/reader-index-read")
+  >         testing.wait_file(b"$TESTTMP_FORWARD_SLASH/writer-revlog-unsplit")
   >     return r
   > 
   > def extsetup(ui):
@@ -441,7 +441,7 @@
   $ cd troffset-computation-race
   $ cat > .hg/hgrc <<EOF
   > [hooks]
-  > pretxnchangegroup=$RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/reader-index-read $TESTTMP/writer-revlog-split
+  > pretxnchangegroup=sh "$RUNTESTDIR/testlib/wait-on-file" 5 $TESTTMP/reader-index-read $TESTTMP/writer-revlog-split
   > pretxnclose = false
   > EOF
 
@@ -485,8 +485,8 @@
   $ cd troffset-computation-hooks
   $ cat > .hg/hgrc <<EOF
   > [hooks]
-  > pretxnclose.01-echo = hg cat -r 'max(all())' file | f --size
-  > pretxnclose.02-echo = $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/hook-done $TESTTMP/hook-tr-ready
+  > pretxnclose.01-echo = hg cat -r "max(all())" file | "$PYTHON" "$RUNTESTDIR/f" --size
+  > pretxnclose.02-echo = sh "$RUNTESTDIR/testlib/wait-on-file" 5 $TESTTMP/hook-done $TESTTMP/hook-tr-ready
   > pretxnclose.03-abort = false
   > EOF