mirror of
https://github.com/clearlinux/common.git
synced 2026-06-15 18:46:37 +00:00
ltsutils: Fix PackageRepo.getNVR for package names that contain '-'
Refactor unit tests, add test case for MySQL-python package
This commit is contained in:
committed by
Patrick McCarty
parent
a379bdd1e5
commit
7cd52ed2fd
+1
-1
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
+31
-13
@@ -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'))
|
||||
|
||||
Reference in New Issue
Block a user