[PATCH STABLE] subrepo: add test for Windows relative-ish path with drive letter

Yuya Nishihara yuya at tcha.org
Fri Feb 8 09:39:56 EST 2019


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1549540241 -32400
#      Thu Feb 07 20:50:41 2019 +0900
# Branch stable
# Node ID adf01cdceea20b5ad6dacb11dbb1d94e5055e39c
# Parent  87a6e3c953e045d92147925fc71aad7c327fdbfd
subrepo: add test for Windows relative-ish path with drive letter

Matt Harbison pointed out that Windows had some weird path syntax.
Fortunately it's rejected appropriately by pathauditor, so we're safe.
Let's test the behavior as we have a special handling for Windows drive
letters.

This patch includes a basic example. Maybe we'll need to extend the test
case further, but writing such tests on Linux isn't easy.

diff --git a/tests/test-audit-subrepo.t b/tests/test-audit-subrepo.t
--- a/tests/test-audit-subrepo.t
+++ b/tests/test-audit-subrepo.t
@@ -660,3 +660,44 @@ then pull (and update):
   $ cd ..
 
 #endif
+
+Test drive letter
+-----------------
+
+Windows has a weird relative path that can change the drive letter, which
+should also be prohibited on Windows.
+
+prepare tampered repo:
+
+  $ hg init driveletter
+  $ cd driveletter
+  $ hg import --bypass -qm 'add subrepo "X:"' - <<'EOF'
+  > diff --git a/.hgsub b/.hgsub
+  > new file mode 100644
+  > --- /dev/null
+  > +++ b/.hgsub
+  > @@ -0,0 +1,1 @@
+  > +X: = foo
+  > diff --git a/.hgsubstate b/.hgsubstate
+  > new file mode 100644
+  > --- /dev/null
+  > +++ b/.hgsubstate
+  > @@ -0,0 +1,1 @@
+  > +0000000000000000000000000000000000000000 X:
+  > EOF
+  $ cd ..
+
+on clone (and update):
+
+#if windows
+
+  $ hg clone -q driveletter driveletter2
+  abort: path contains illegal component: X:
+
+#else
+
+  $ hg clone -q driveletter driveletter2
+  $ ls driveletter2
+  X:
+
+#endif


More information about the Mercurial-devel mailing list