diff --git a/lts/Makefile b/lts/Makefile index aaee1f8..fc8708d 100644 --- a/lts/Makefile +++ b/lts/Makefile @@ -2,4 +2,4 @@ TEST = test.test_ltsutils .PHONY: test test: - PYTHONPATH=. python -m unittest -v $(TEST) + PYTHONPATH=. python -m unittest -v -k .Test $(TEST) diff --git a/lts/ltsutils/package_repo.py b/lts/ltsutils/package_repo.py index 7dcae87..37069be 100644 --- a/lts/ltsutils/package_repo.py +++ b/lts/ltsutils/package_repo.py @@ -15,7 +15,7 @@ class PackageRepo: def getNVR(self, commit='HEAD'): with self.sh.popen(['git', 'show', '{}:{}.spec'.format(commit, self.name)], stdout=PIPE) as specfile: nvr = self.sh.run('rpmspec --srpm -q --queryformat %{NVR} /dev/stdin', stdin=specfile.stdout) - return tuple(nvr.stdout.strip().split('-')) + return tuple(nvr.stdout.strip().rsplit('-', maxsplit=2)) def checkoutBranch(self, branch, allow_remote=False): # allow_remote=True allows checking out a new remote-tracking branch diff --git a/lts/test/test_ltsutils.py b/lts/test/test_ltsutils.py index 1a11d31..e65ce18 100644 --- a/lts/test/test_ltsutils.py +++ b/lts/test/test_ltsutils.py @@ -7,28 +7,30 @@ import ltsutils.shell run = functools.partial(subprocess.run, check=True) +class Package: + def __init__(self, name): + self.name = name + self.repo_url = 'https://github.com/clearlinux-pkgs/{}.git'.format(name) + class LTSUtilsTestCase(unittest.TestCase): toplvl = pathlib.Path('../../..') packages = toplvl / 'packages' - pkgname = 'nano' - master_commit = '6947e7170435e179aaa86b156e53cae644ce1d73' - repo_url = 'https://github.com/clearlinux-pkgs/{}.git'.format(pkgname) def cloneOrExtractRepo(self): tmpdir = pathlib.Path('/var/tmp/common-lts-test') tmpdir.mkdir(mode=0o700, exist_ok=True) - tarball = tmpdir / '{}.tar.gz'.format(self.pkgname) + tarball = tmpdir / '{}.tar.gz'.format(self.package.name) if tarball.exists(): run(['tar', 'xf', tarball, '-C', self.workdir]) else: - run(['git', 'clone', self.repo_url, self.workdir]) + run(['git', 'clone', self.package.repo_url, self.workdir]) run(['tar', 'czf', tarball, '-C', self.workdir, '.']) def setUp(self): - self._tmpdir = tempfile.TemporaryDirectory(prefix='test-{}-'.format(self.pkgname), dir=self.packages) + self._tmpdir = tempfile.TemporaryDirectory(prefix='test-{}-'.format(self.package.name), dir=self.packages) self.workdir = pathlib.Path(self._tmpdir.name) self.cloneOrExtractRepo() - self.repo = PackageRepo(self.pkgname, self.workdir) + self.repo = PackageRepo(self.package.name, self.workdir) self._sh = ltsutils.shell.Shell(self.workdir) self._sh.capture_output = False @@ -42,18 +44,16 @@ class LTSUtilsTestCase(unittest.TestCase): def tearDown(self): self._tmpdir.cleanup() -class TestPackageRepo(LTSUtilsTestCase): - L1 = '3dcfa09f5217eedf6ec7539af7e243655d3abdb6' # 3.2-54 - L2 = 'b8243dd54e8feb16a11474f848b8735f5591cf12' # 3.2-55 - +class PackageRepoTestCase(LTSUtilsTestCase): def setUp(self): super().setUp() + self.L1 = self.package.L1 + self.L2 = self.package.L2 self.sh('git branch L1 %s' % self.L1) self.sh('git branch L2 %s' % self.L2) def testGetNVR(self): - nvr = self.repo.getNVR(self.L2) - self.assertEqual(nvr, ('nano', '3.2', '55')) + raise NotImplementedError def testHasBranch(self): self.assertTrue(self.repo.hasBranch('L2')) @@ -77,3 +77,21 @@ class TestPackageRepo(LTSUtilsTestCase): self.sh('git checkout --detach L2') self.assertRaises(PackageRepo.UnknownCurrentBranchException, self.repo.getCurrentBranch) + +class TestNano(PackageRepoTestCase): + package = Package('nano') + package.L1 = '3dcfa09f5217eedf6ec7539af7e243655d3abdb6' # 3.2-54 + package.L2 = 'b8243dd54e8feb16a11474f848b8735f5591cf12' # 3.2-55 + + def testGetNVR(self): + nvr = self.repo.getNVR(self.L2) + self.assertEqual(nvr, ('nano', '3.2', '55')) + +class TestMySQL_Python(PackageRepoTestCase): + package = Package('MySQL-python') + package.L1 = '386163d8fc9c857c7194c4e958374af4c4f071ed' # 1.2.5-31 + package.L2 = 'f85bc5ec2141384f45f224d4464a0a44a981a4d4' # 1.2.5-33 + + def testGetNVR(self): + nvr = self.repo.getNVR(self.L2) + self.assertEqual(nvr, ('MySQL-python', '1.2.5', '33'))