tests/test-chainsaw-update.t
changeset 51433 d36a81d70f25
parent 51432 e79c7320605f
child 51503 d4095f7b000a
--- a/tests/test-chainsaw-update.t	Fri Feb 23 11:30:58 2024 +0100
+++ b/tests/test-chainsaw-update.t	Fri Feb 23 11:41:55 2024 +0100
@@ -58,26 +58,40 @@
 Actual tests
 ============
 
-Simple invocation
------------------
+Initial cloning if needed
+-------------------------
 
-  $ hg init repo
-  $ cd repo
-  $ hg admin::chainsaw-update --rev default --source ../src
+  $ hg admin::chainsaw-update --dest repo --rev default --source ./src
+  no such directory: "repo"
+  creating repository at "repo"
   recovering after interrupted transaction, if any
   no interrupted transaction available
-  pulling from ../src
+  pulling from ./src
   updating to revision 'default'
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   chainsaw-update to revision 'default' for repository at '$TESTTMP/repo' done
 
+  $ cd repo
   $ hg log -G
-  @  changeset:   1:bfcb8e629987
+  @  changeset:   3:bfcb8e629987
   |  tag:         tip
+  |  parent:      0:06f48e4098b8
   |  user:        test
   |  date:        Thu Jan 01 00:00:00 1970 +0000
   |  summary:     B_0
   |
+  | o  changeset:   2:7fd8de258aa4
+  | |  branch:      A
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     A_1
+  | |
+  | o  changeset:   1:ae1692b8aadb
+  |/   branch:      A
+  |    user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     A_0
+  |
   o  changeset:   0:06f48e4098b8
      user:        test
      date:        Thu Jan 01 00:00:00 1970 +0000
@@ -103,7 +117,8 @@
   wlock: (.*?), process 171814, host invalid.host.test/effffffc \((\d+)s\) (re)
   [2]
 
-  $ hg admin::chainsaw-update --no-purge-ignored --rev default --source ../src
+  $ hg admin::chainsaw-update --no-purge-ignored --dest . --rev default --source ../src
+  loaded repository at "."
   had to break store lock
   had to break working copy lock
   recovering after interrupted transaction, if any
@@ -127,9 +142,39 @@
   C root
 
   $ echo 2 > ../src/foo
-  $ hg -R ../src commit -m2
-  $ hg admin::chainsaw-update --rev default --source ../src -q
+  $ hg -R ../src commit -mB_1
+  $ hg admin::chainsaw-update --dest . --rev default --source ../src -q
   no interrupted transaction available
+  $ hg log -G
+  @  changeset:   4:973ab81c95fb
+  |  tag:         tip
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     B_1
+  |
+  o  changeset:   3:bfcb8e629987
+  |  parent:      0:06f48e4098b8
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     B_0
+  |
+  | o  changeset:   2:7fd8de258aa4
+  | |  branch:      A
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     A_1
+  | |
+  | o  changeset:   1:ae1692b8aadb
+  |/   branch:      A
+  |    user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     A_0
+  |
+  o  changeset:   0:06f48e4098b8
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     R_0
+  
   $ hg status -A
   C foo
   C root
@@ -148,7 +193,7 @@
   C foo
   C root
 
-  $ hg admin::chainsaw-update --no-purge-ignored --rev default --source ../src -q
+  $ hg admin::chainsaw-update --no-purge-ignored --dest . --rev default --source ../src -q
   no interrupted transaction available
   $ hg status --all
   I bar
@@ -158,7 +203,7 @@
   $ cat bar
   ignored
 
-  $ hg admin::chainsaw-update --rev default --source ../src -q
+  $ hg admin::chainsaw-update --dest . --rev default --source ../src -q
   no interrupted transaction available
   $ hg status --all
   C .hgignore
@@ -167,3 +212,44 @@
   $ test -f bar
   [1]
 
+test --minimal-initial-cloning variant
+--------------------------------------
+
+With `--minimal-initial-cloning`, there is no "requesting all changes"
+message. Hence clone bundles would be bypassed (TODO test both cases
+# with an actual clone-bundle)
+
+  $ cd ..
+  $ hg admin::chainsaw-update --dest repo2 --rev default --source src --initial-clone-minimal
+  no such directory: "repo2"
+  creating repository at "repo2"
+  recovering after interrupted transaction, if any
+  no interrupted transaction available
+  pulling from src
+  updating to revision 'default'
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  chainsaw-update to revision 'default' for repository at '$TESTTMP/repo2' done
+
+  $ cd repo2
+  $ hg log -G
+  @  changeset:   2:973ab81c95fb
+  |  tag:         tip
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     B_1
+  |
+  o  changeset:   1:bfcb8e629987
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     B_0
+  |
+  o  changeset:   0:06f48e4098b8
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     R_0
+  
+  $ hg status -A
+  C foo
+  C root
+  $ cat foo
+  2