From b5b8d5091a7ea034863dcaafc36322ee8533cb89 Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Wed, 25 Oct 2017 00:15:50 +0200 Subject: recursiveloader: Detect cross-device Manifest entries --- tests/test_recursiveloader.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'tests/test_recursiveloader.py') diff --git a/tests/test_recursiveloader.py b/tests/test_recursiveloader.py index c16e7ff..38a4a07 100644 --- a/tests/test_recursiveloader.py +++ b/tests/test_recursiveloader.py @@ -706,3 +706,35 @@ OPTIONAL foo m = gemato.recursiveloader.ManifestRecursiveLoader( os.path.join(self.dir, 'Manifest')) m.assert_directory_verifies('', strict=False) + + +class CrossDeviceManifestTest(TempDirTestCase): + """ + Test for a Manifest that crosses filesystem boundaries. + """ + + FILES = { + 'Manifest': u''' +DATA sub/version 0 MD5 d41d8cd98f00b204e9800998ecf8427e +''', + } + + def setUp(self): + super(CrossDeviceManifestTest, self).setUp() + os.symlink('/proc', os.path.join(self.dir, 'sub')) + + def tearDown(self): + os.unlink(os.path.join(self.dir, 'sub')) + super(CrossDeviceManifestTest, self).tearDown() + + def test_assert_directory_verifies(self): + m = gemato.recursiveloader.ManifestRecursiveLoader( + os.path.join(self.dir, 'Manifest')) + self.assertRaises(gemato.exceptions.ManifestCrossDevice, + m.assert_directory_verifies, '') + + def test_assert_directory_verifies_nonstrict(self): + m = gemato.recursiveloader.ManifestRecursiveLoader( + os.path.join(self.dir, 'Manifest')) + self.assertRaises(gemato.exceptions.ManifestCrossDevice, + m.assert_directory_verifies, '', strict=False) -- cgit v1.2.3