def test_03(self):
        '''Full with incs and one old inc'''
        folder = self.gen_tempfolder()
        old_leftover = [
            "duplicity-inc.20130101T000000Z.to.20130101T000001Z.manifest.gpg",
            "duplicity-inc.20130101T000000Z.to.20130101T000001Z.vol1.difftar.gpg",
            "duplicity-new-signatures.20130101T010000Z.to.20130101T000001Z.sigtar.gpg"
            ]
        last_full = [
            "duplicity-full.20130101T010000Z.manifest.gpg",
            "duplicity-full.20130101T010000Z.vol1.difftar.gpg",
            "duplicity-full.20130101T010000Z.vol2.difftar.gpg",
            "duplicity-full-signatures.20130101T010000Z.sigtar.gpg"
            ]
        after_full = [
            "duplicity-inc.20130101T010000Z.to.20130102T010001Z.manifest.gpg",
            "duplicity-inc.20130101T010000Z.to.20130102T010001Z.vol1.difftar.gpg",
            "duplicity-new-signatures.20130101T010000Z.to.20130102T010001Z.sigtar.gpg",
            "duplicity-inc.20130102T010001Z.to.20130103T010000Z.manifest.gpg",
            "duplicity-inc.20130102T010001Z.to.20130103T010000Z.vol1.difftar.gpg",
            "duplicity-new-signatures.20130102T010001Z.to.20130103T010000Z.sigtar.gpg"
            ]
        names_in = old_leftover + last_full + after_full
        self.add_files(folder, names_in)

        result = copy_duplicity_backups.return_last_n_full_backups(folder, 1)
        self.assertEqual(sorted(last_full+after_full), sorted(result))

        shutil.rmtree(folder)
    def test_04(self):
        '''3 fulls with incs, select last 2 fulls'''

        gen = TestNameGenerator()

        full_1 = gen.gen_names("full", 2013, 1, 1, 8)
        incs_1 = (
            gen.gen_names("inc", 2013, 1, 2, 1) +
            gen.gen_names("inc", 2013, 1, 3, 1) +
            gen.gen_names("inc", 2013, 1, 4, 2) +
            gen.gen_names("inc", 2013, 1, 6, 1))

        full_2 = gen.gen_names("full", 2013, 1, 8, 1)
        incs_2 = (
            gen.gen_names("inc", 2013, 1, 9, 3) +
            gen.gen_names("inc", 2013, 1, 10, 4) +
            gen.gen_names("inc", 2013, 1, 11, 2))

        full_3 = gen.gen_names("full", 2013, 2, 1, 1)
        incs_3 = (
            gen.gen_names("inc", 2013, 2, 3, 2) +
            gen.gen_names("inc", 2013, 2, 4, 20))


        names_in = full_1 + incs_1 + full_2 + incs_2 + full_3 + incs_3

        folder = self.gen_tempfolder()
        self.add_files(folder, names_in)

        result = copy_duplicity_backups.return_last_n_full_backups(folder, 2)
        expected = full_2 + incs_2 + full_3 + incs_3

        self.assertEqual(sorted(result), sorted(expected))

        shutil.rmtree(folder)
    def test_05(self):
        '''Multi regex match'''
        folder = self.gen_tempfolder()
        # Multiple matches for a wrong file,
        # "^" / "$"  in regex necessary
        names_in = [
            "duplicity-full.20130101T010000Z.manifest.gpg",
            "duplicity-full.20130101T010000Z.vol1.difftar.gpg"
            "duplicity-full.20130101T010000Z.vol2.difftar.gpg"
            "duplicity-full-signatures.20130101T010000Z.sigtar.gpg"
            ]

        self.add_files(folder, names_in)

        with self.assertRaises(copy_duplicity_backups.UnknownFileException):
            copy_duplicity_backups.return_last_n_full_backups(folder, 3)

        shutil.rmtree(folder)
    def test_01(self):
        '''Only one full'''
        folder = self.gen_tempfolder()
        names_in = [
            "duplicity-full.20130101T010000Z.manifest.gpg",
            "duplicity-full.20130101T010000Z.vol1.difftar.gpg",
            "duplicity-full.20130101T010000Z.vol2.difftar.gpg",
            "duplicity-full-signatures.20130101T010000Z.sigtar.gpg"
            ]
        self.add_files(folder, names_in)
        result = copy_duplicity_backups.return_last_n_full_backups(folder, 3)
        self.assertEqual(sorted(names_in), sorted(result))

        shutil.rmtree(folder)