From 07392ed32662006c029299bc06617310cfe17957 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 10 Feb 2020 21:35:48 -0500 Subject: project: allow src=. with symlinks Some Android/Nest manifests are using with src="." to create stable paths to specific projects. Allow that specific use case as it seems reasonable to support. Bug: https://crbug.com/gerrit/11218 Change-Id: I16dbe8d9fe42ea45440afcb61404c753bff1930d Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254330 Reviewed-by: Chanho Park Reviewed-by: Mike Frysinger Tested-by: Mike Frysinger --- tests/test_project.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tests/test_project.py') diff --git a/tests/test_project.py b/tests/test_project.py index 6d82da11..dc41f4c0 100644 --- a/tests/test_project.py +++ b/tests/test_project.py @@ -314,6 +314,14 @@ class LinkFile(CopyLinkTestCase): lf._Link() self.assertExists(os.path.join(self.topdir, 'foo')) + def test_src_self(self): + """Link to the project itself.""" + dest = os.path.join(self.topdir, 'foo', 'bar') + lf = self.LinkFile('.', 'foo/bar') + lf._Link() + self.assertExists(dest) + self.assertEqual('../git-project', os.readlink(dest)) + def test_dest_subdir(self): """Link a file to a subdir of a checkout.""" src = os.path.join(self.worktree, 'foo.txt') @@ -323,6 +331,21 @@ class LinkFile(CopyLinkTestCase): lf._Link() self.assertExists(os.path.join(self.topdir, 'sub', 'dir', 'foo', 'bar')) + def test_src_block_relative(self): + """Do not allow relative symlinks.""" + BAD_SOURCES = ( + './', + '..', + '../', + 'foo/.', + 'foo/./bar', + 'foo/..', + 'foo/../foo', + ) + for src in BAD_SOURCES: + lf = self.LinkFile(src, 'foo') + self.assertRaises(error.ManifestInvalidPathError, lf._Link) + def test_update(self): """Make sure changed targets get updated.""" dest = os.path.join(self.topdir, 'sym') -- cgit v1.2.3-54-g00ecf