Ejemplo n.º 1
0
    def test_nonrecursive(self):
        m1 = self.mfp.build(["bar", "foo", "  bar", "  foo"])
        m2 = self.mfp.build(["foo", "  foo", "xyzzy"])
        m3 = self.mfp.build(["foo", "  bar", "    baz", "  foo", "    foo"])
        self.assertEqual(list(Manifest.merge(m1, m2, m3)), [
            ("bar", None, None),
            ("foo", "foo", "foo"),
            ("foo/bar", None, "foo/bar"),
            (None, None, "foo/bar/baz"),
            ("foo/foo", "foo/foo", "foo/foo"),
            (None, None, "foo/foo/foo"),
            (None, "xyzzy", None)])

        # now without recursion
        self.assertEqual(list(Manifest.merge(m1, m2, m3, recursive = False)), [
            ("bar", None, None),
            ("foo", "foo", "foo"),
            (None, "xyzzy", None)])

        # and finally with selective recursion (only recurse into "foo"s)
        actual = []
        gen = Manifest.merge(m1, m2, m3, recursive = False)
        try:
            t = next(gen)
            while True:
                actual.append(t)
                paths = [p for p in t if p is not None]
                self.assertTrue(paths)
                path = paths[0]
                self.assertEqual([path] * len(paths), paths)
                try:
                    last_component = path.rsplit("/", 1)[1]
                except:
                    last_component = path
                if last_component == "foo":
                    t = gen.send(True)
                else:
                    t = next(gen)
        except StopIteration:
            pass

        self.assertEqual(actual, [
            ("bar", None, None),
            ("foo", "foo", "foo"),
            ("foo/bar", None, "foo/bar"),
            ("foo/foo", "foo/foo", "foo/foo"),
            (None, None, "foo/foo/foo"),
            (None, "xyzzy", None)])
Ejemplo n.º 2
0
 def test_custom_key(self):
     m1 = self.mfp.build(["1foo", "2bar", "3baz"])
     m2 = self.mfp.build(["abc", "def", "ghi"])
     m3 = self.mfp.build(["123", "456", "789"])
     self.assertEqual(
         list(Manifest.merge(m1, m2, m3, key = lambda px: True)), [
             ("1foo", "abc", "123"),
             ("2bar", "def", "456"),
             ("3baz", "ghi", "789")])
Ejemplo n.º 3
0
 def test_empty_subdir_vs_nonepty_subdir(self):
     m1 = Manifest_from_walking_unpacked_tar("file_and_empty_subdir.tar")
     m2 = Manifest_from_walking_unpacked_tar("file_and_subdir.tar")
     self.assertEqual(list(Manifest.merge(m1, m2)), [
         ("file", "file"), ("subdir", "subdir"), (None, "subdir/foo")])
Ejemplo n.º 4
0
 def test_three_mixed_singles(self):
     m1, m2, m3 = map(self.mfp.build, (["foo"], ["bar"], ["foo"]))
     self.assertEqual(list(Manifest.merge(m1, m2, m3)), [
         (None, "bar", None), ("foo", None, "foo")])
Ejemplo n.º 5
0
 def test_three_with_overlap(self):
     ms = map(self.mfp.build,
              (["foo", "same"], ["bar", "same"], ["baz", "same"]))
     self.assertEqual(list(Manifest.merge(*ms)), [
         (None, "bar", None), (None, None, "baz"), ("foo", None, None),
         ("same", "same", "same")])
Ejemplo n.º 6
0
 def test_single_file_x2(self):
     m1 = Manifest_from_walking_unpacked_tar("single_file.tar")
     m2 = self.mfp.build(["foo"])
     self.assertEqual(list(Manifest.merge(m1, m2)), [("foo", "foo")])
Ejemplo n.º 7
0
 def test_one_single_file(self):
     m = Manifest_from_walking_unpacked_tar("single_file.tar")
     self.assertEqual(list(Manifest.merge(m)), [("foo",)])
Ejemplo n.º 8
0
 def test_two_empties(self):
     m1, m2 = Manifest(), Manifest_from_walking_unpacked_tar("empty.tar")
     self.assertEqual(list(Manifest.merge(m1, m2)), [])
Ejemplo n.º 9
0
 def test_one_empty(self):
     m = Manifest()
     self.assertEqual(list(Manifest.merge(m)), [])
Ejemplo n.º 10
0
 def test_nothing(self):
     self.assertEqual(list(Manifest.merge()), [])