test-transaction-safety: document the test schedule stable
authorPierre-Yves David <pierre-yves.david@octobus.net>
Tue, 27 Jul 2021 00:44:57 +0200
branchstable
changeset 47781 4870a8dc24d9
parent 47780 cf5f8da2244c
child 47782 ebfc315c6077
test-transaction-safety: document the test schedule This helps reader to understand how the test work and actually helped me to detect a missing synchronisation step. Differential Revision: https://phab.mercurial-scm.org/D11215
tests/test-transaction-safety.t
--- a/tests/test-transaction-safety.t	Thu Jul 29 12:22:25 2021 +0200
+++ b/tests/test-transaction-safety.t	Tue Jul 27 00:44:57 2021 +0200
@@ -41,7 +41,23 @@
 setup
 -----
 
-synchronisation+output script:
+synchronisation+output script using the following schedule:
+
+[A1] "external"       is started
+[A2] "external"       waits on EXT_UNLOCK
+[A2] "external"       + creates EXT_WAITING → unlocks [C1]
+[B1] "hg commit/pull" is started
+[B2] "hg commit/pull" is ready to be committed
+[B3] "hg commit/pull" spawn "internal" using a pretxnclose hook (need [C4])
+[C1] "internal"       waits on EXT_WAITING (need [A2])
+[C2] "internal"       show the tipmost revision (inside of the transaction)
+[C3] "internal"       waits on EXT_DONE (need [A4])
+[C3] "internal"       + creates EXT_UNLOCK → unlocks [A2]
+[A3] "external"       show the tipmost revision (outside of the transaction)
+[A4] "external"       creates EXT_DONE → unlocks [C3]
+[C4] "internal"       end of execution -> unlock [B3]
+[B4] "hg commit/pull" transaction is committed on disk
+
 
   $ mkdir sync
   $ mkdir output
@@ -60,6 +76,7 @@
   > EOF
   $ cat << EOF > script/internal.sh
   > #!/bin/sh
+  > "$RUNTESTDIR/testlib/wait-on-file" 5 "$HG_TEST_FILE_EXT_WAITING"
   > hg log --rev 'tip' -T 'internal: {rev} {desc}\n' > "$TESTTMP/output/internal.out"
   > "$RUNTESTDIR/testlib/wait-on-file" 5 "$HG_TEST_FILE_EXT_DONE" "$HG_TEST_FILE_EXT_UNLOCK"
   > EOF