narrow: add test demonstrating bug in acl exclusion enforcement stable
authorArun Kulshreshtha <akulshreshtha@janestreet.com>
Thu, 04 Jan 2024 14:41:18 -0500
branchstable
changeset 51308 bf7c24e12fad
parent 51280 c17cf2d51ff4
child 51309 9b44b25dece1
narrow: add test demonstrating bug in acl exclusion enforcement
tests/test-narrow-acl-excludes.t
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-narrow-acl-excludes.t	Thu Jan 04 14:41:18 2024 -0500
@@ -0,0 +1,81 @@
+Test exclusion-based ACL enforcement
+  $ . "$TESTDIR/narrow-library.sh"
+
+  $ hg init master
+  $ cd master
+
+  $ for x in `$TESTDIR/seq.py 3`; do
+  >   echo $x > "f$x"
+  >   hg add "f$x"
+  >   hg commit -m "Add $x"
+  > done
+  $ cat >> .hg/hgrc << EOF
+  > [narrowacl]
+  > default.includes=*
+  > default.excludes=f2 f3
+  > test.excludes=f3
+  > EOF
+  $ hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid
+  $ cat hg.pid >> "$DAEMON_PIDS"
+
+  $ cd ..
+  $ hg clone http://localhost:$HGPORT1 narrowclone1
+  requesting all changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 3 changesets with 2 changes to 2 files
+  new changesets * (glob)
+  updating to branch default
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+The clone directory should only contain f1 and f2
+  $ ls -A -1 narrowclone1 | sort
+  .hg
+  f1
+  f2
+
+Requirements should contain narrowhg
+  $ hg debugrequires -R narrowclone1 | grep narrowhg
+  narrowhg-experimental
+
+NarrowHG should exclude f3.
+  $ hg -R narrowclone1 tracked
+  I path:.
+  X path:f3
+
+Narrow should not be able to widen to include f3
+  $ hg -R narrowclone1 tracked --addinclude f3
+  comparing with http://localhost:$HGPORT1/
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  $ ls -A -1 narrowclone1 | sort
+  .hg
+  f1
+  f2
+  $ hg -R narrowclone1 tracked
+  I path:.
+  X path:f3
+
+
+Narrow should not be able to remove the exclusion for f3
+  $ hg -R narrowclone1 tracked --removeexclude f3
+  comparing with http://localhost:$HGPORT1/
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 0 changesets with 1 changes to 1 files
+  $ ls -A -1 narrowclone1 | sort
+  .hg
+  f1
+  f2
+  f3
+  $ hg -R narrowclone1 tracked
+  I path:.
+
+
+XXX: BUG! This test demonstrates that we are presently
+able to gain access to f3 by removing the exclusion.