# HG changeset patch # User Matt Harbison # Date 2024-10-12 20:55:30 # Node ID 629ecced55a6d2b59a158ffeb2f36bc979939dcd # Parent 3f70ea5bcaebb6ec3978a88bc0a1d9cc43fd67b4 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`. diff --git a/tests/test-transaction-rollback-on-revlog-split.t b/tests/test-transaction-rollback-on-revlog-split.t --- a/tests/test-transaction-rollback-on-revlog-split.t +++ b/tests/test-transaction-rollback-on-revlog-split.t @@ -58,11 +58,11 @@ Helper extension to intercept renames an > 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 @@ split and end reading (the data) after t $ cd troffset-computation-race $ cat > .hg/hgrc < [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 @@ We checks that hooks properly see the in $ cd troffset-computation-hooks $ cat > .hg/hgrc < [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