Patchwork D5276: tests: add test for narrow+share

login
register
mail settings
Submitter phabricator
Date Dec. 23, 2018, 2:15 a.m.
Message ID <627b14bff837760ef5d2ce1b0c5a86b4@localhost.localdomain>
Download mbox | patch
Permalink /patch/37325/
State Not Applicable
Headers show

Comments

phabricator - Dec. 23, 2018, 2:15 a.m.
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG7db1619af061: tests: add test for narrow+share (authored by martinvonz, committed by ).

CHANGED PRIOR TO COMMIT
  https://phab.mercurial-scm.org/D5276?vs=12939&id=12959#toc

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D5276?vs=12939&id=12959

REVISION DETAIL
  https://phab.mercurial-scm.org/D5276

AFFECTED FILES
  tests/test-narrow-pull.t
  tests/test-narrow-share.t

CHANGE DETAILS




To: martinvonz, durin42, #hg-reviewers
Cc: mercurial-devel

Patch

diff --git a/tests/test-narrow-share.t b/tests/test-narrow-share.t
new file mode 100644
--- /dev/null
+++ b/tests/test-narrow-share.t
@@ -0,0 +1,132 @@ 
+#testcases flat tree
+
+  $ . "$TESTDIR/narrow-library.sh"
+
+#if tree
+  $ cat << EOF >> $HGRCPATH
+  > [experimental]
+  > treemanifest = 1
+  > EOF
+#endif
+
+  $ cat << EOF >> $HGRCPATH
+  > [extensions]
+  > share =
+  > EOF
+
+  $ hg init remote
+  $ cd remote
+  $ for x in `$TESTDIR/seq.py 0 10`
+  > do
+  >   mkdir d$x
+  >   echo $x > d$x/f
+  >   hg add d$x/f
+  >   hg commit -m "add d$x/f"
+  > done
+  $ cd ..
+
+  $ hg clone --narrow ssh://user@dummy/remote main -q \
+  > --include d1 --include d3 --include d5 --include d7
+
+  $ hg share main share
+  updating working directory
+  4 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg -R share tracked
+  I path:d1
+  I path:d3
+  I path:d5
+  I path:d7
+  $ hg -R share files
+  share/d1/f
+  share/d3/f
+  share/d5/f
+  share/d7/f
+
+Narrow the share and check that the main repo's working copy gets updated
+
+# Make d3/f dirty
+  $ echo x >> main/d3/f
+  $ echo y >> main/d3/g
+  $ hg add main/d3/g
+  $ hg -R main st
+  M d3/f
+  A d3/g
+# Make d5/f not match the dirstate timestamp even though it's clean
+  $ sleep 2
+  $ hg -R main st
+  M d3/f
+  A d3/g
+  $ hg -R main debugdirstate --no-dates
+  n 644          2 set                 d1/f
+  n 644          2 unset               d3/f
+  a   0         -1 unset               d3/g
+  n 644          2 set                 d5/f
+  n 644          2 set                 d7/f
+  $ touch main/d5/f
+  $ hg -R share tracked --removeinclude d1 --removeinclude d3 --removeinclude d5
+  comparing with ssh://user@dummy/remote
+  searching for changes
+  looking for local changes to affected paths
+  deleting data/d1/f.i
+  deleting data/d3/f.i
+  deleting data/d5/f.i
+  deleting meta/d1/00manifest.i (tree !)
+  deleting meta/d3/00manifest.i (tree !)
+  deleting meta/d5/00manifest.i (tree !)
+  $ hg -R main tracked
+  I path:d7
+# d1/f, d3/f, d3/g and d5/f should no longer be reported
+  $ hg -R main files
+  main/d7/f
+# d1/f should no longer be there, d3/f should be since it was dirty, d3/g should be there since
+# it was added, and d5/f should be since we couldn't be sure it was clean
+  $ find main/d* -type f | sort
+  main/d1/f
+  main/d3/f
+  main/d3/g
+  main/d5/f
+  main/d7/f
+
+Widen the share and check that the main repo's working copy gets updated
+
+  $ hg -R share tracked --addinclude d1 --addinclude d3 -q
+  $ hg -R share tracked
+  I path:d1
+  I path:d3
+  I path:d7
+  $ hg -R share files
+  share/d1/f
+  share/d3/f
+  share/d7/f
+  $ hg -R main tracked
+  I path:d1
+  I path:d3
+  I path:d7
+# d1/f, d3/f should be back
+  $ hg -R main files
+  main/d1/f
+  main/d3/f
+  main/d3/g
+  main/d7/f
+# d3/f should be modified (not clobbered by the widening), and d3/g should be untracked
+  $ hg -R main st --all
+  M d3/f
+  A d3/g
+  C d1/f
+  C d7/f
+
+We should also be able to unshare without breaking everything:
+
+  $ hg share main share-unshare
+  updating working directory
+  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cd share-unshare
+  $ hg unshare
+  $ hg verify
+  checking changesets
+  checking manifests
+  checking directory manifests (tree !)
+  crosschecking files in changesets and manifests
+  checking files
+  checked 11 changesets with 3 changes to 3 files
+  $ cd ..
diff --git a/tests/test-narrow-pull.t b/tests/test-narrow-pull.t
--- a/tests/test-narrow-pull.t
+++ b/tests/test-narrow-pull.t
@@ -150,25 +150,3 @@ 
   rollback completed
   abort: pull failed on remote
   [255]
-
-Can use 'hg share':
-  $ cat >> $HGRCPATH <<EOF
-  > [extensions]
-  > share=
-  > EOF
-
-  $ cd ..
-  $ hg share narrow2 narrow2-share
-  updating working directory
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ cd narrow2-share
-  $ hg status
-
-We should also be able to unshare without breaking everything:
-  $ hg unshare
-  $ hg verify
-  checking changesets
-  checking manifests
-  crosschecking files in changesets and manifests
-  checking files
-  checked 1 changesets with 1 changes to 1 files