# -*- coding: utf-8 -*-

try:
    import unittest2 as unittest
except ImportError:
    import unittest

import six

from pungi.wrappers.createrepo import CreaterepoWrapper


class CreateRepoWrapperTest(unittest.TestCase):
    def test_get_createrepo_c_cmd_minimal(self):
        repo = CreaterepoWrapper()
        cmd = repo.get_createrepo_cmd("/test/dir")

        self.assertEqual(cmd[:2], ["createrepo_c", "/test/dir"])
        six.assertCountEqual(
            self, cmd[2:], ["--update", "--database", "--unique-md-filenames"]
        )

    def test_get_createrepo_c_cmd_full(self):
        repo = CreaterepoWrapper()
        cmd = repo.get_createrepo_cmd(
            "/test/dir",
            baseurl="http://base.example.com",
            excludes=["abc", "xyz"],
            pkglist="/test/pkglist",
            groupfile="/test/comps",
            cachedir="/test/cache",
            update=False,
            update_md_path="/test/md_path",
            skip_stat=True,
            checkts=True,
            split=True,
            pretty=False,
            database=False,
            checksum="sha256",
            unique_md_filenames=False,
            distro="Fedora",
            content=["c1", "c2"],
            repo=["r1", "r2"],
            revision="rev",
            deltas=True,
            oldpackagedirs="/test/old",
            num_deltas=2,
            workers=3,
            outputdir="/test/output",
            use_xz=True,
            extra_args=["--zck", "--zck-primary-dict=/foo/bar"],
        )
        self.maxDiff = None

        self.assertEqual(cmd[:2], ["createrepo_c", "/test/dir"])
        six.assertCountEqual(
            self,
            cmd[2:],
            [
                "--baseurl=http://base.example.com",
                "--excludes=abc",
                "--excludes=xyz",
                "--pkglist=/test/pkglist",
                "--groupfile=/test/comps",
                "--cachedir=/test/cache",
                "--skip-stat",
                "--update-md-path=/test/md_path",
                "--split",
                "--checkts",
                "--checksum=sha256",
                "--distro=Fedora",
                "--simple-md-filenames",
                "--no-database",
                "--content=c1",
                "--content=c2",
                "--repo=r1",
                "--repo=r2",
                "--revision=rev",
                "--deltas",
                "--oldpackagedirs=/test/old",
                "--num-deltas=2",
                "--workers=3",
                "--outputdir=/test/output",
                "--xz",
                "--zck",
                "--zck-primary-dict=/foo/bar",
            ],
        )

    def test_get_createrepo_cmd_minimal(self):
        repo = CreaterepoWrapper(False)
        cmd = repo.get_createrepo_cmd("/test/dir")

        self.assertEqual(cmd[:2], ["createrepo", "/test/dir"])
        six.assertCountEqual(
            self,
            cmd[2:],
            ["--update", "--database", "--unique-md-filenames", "--pretty"],
        )

    def test_get_createrepo_cmd_full(self):
        repo = CreaterepoWrapper(False)
        cmd = repo.get_createrepo_cmd(
            "/test/dir",
            baseurl="http://base.example.com",
            excludes=["abc", "xyz"],
            pkglist="/test/pkglist",
            groupfile="/test/comps",
            cachedir="/test/cache",
            update=False,
            update_md_path="/test/md_path",
            skip_stat=True,
            checkts=True,
            split=True,
            pretty=False,
            database=False,
            checksum="sha256",
            unique_md_filenames=False,
            distro="Fedora",
            content=["c1", "c2"],
            repo=["r1", "r2"],
            revision="rev",
            deltas=True,
            oldpackagedirs="/test/old",
            num_deltas=2,
            workers=3,
            outputdir="/test/output",
        )
        self.maxDiff = None

        self.assertEqual(cmd[:2], ["createrepo", "/test/dir"])
        six.assertCountEqual(
            self,
            cmd[2:],
            [
                "--baseurl=http://base.example.com",
                "--excludes=abc",
                "--excludes=xyz",
                "--pkglist=/test/pkglist",
                "--groupfile=/test/comps",
                "--cachedir=/test/cache",
                "--skip-stat",
                "--update-md-path=/test/md_path",
                "--split",
                "--checkts",
                "--checksum=sha256",
                "--distro=Fedora",
                "--simple-md-filenames",
                "--no-database",
                "--content=c1",
                "--content=c2",
                "--repo=r1",
                "--repo=r2",
                "--revision=rev",
                "--deltas",
                "--oldpackagedirs=/test/old",
                "--num-deltas=2",
                "--workers=3",
                "--outputdir=/test/output",
            ],
        )