Pytest instead of nose in unittest

Fixes: https://pagure.io/koji/issue/3140
This commit is contained in:
Jana Cupova 2021-12-02 10:02:45 +01:00 committed by Tomas Kopecek
parent bbaadef417
commit c310d6692d
34 changed files with 644 additions and 631 deletions

View file

@ -1,5 +1,4 @@
from __future__ import absolute_import
import logging
import mock
import shutil
import six
@ -33,6 +32,7 @@ policy = {
'''
}
class FakePolicy(object):
def __init__(self, rule):
@ -53,7 +53,7 @@ class TestSCM(unittest.TestCase):
"svn+ssh://server/some/path#bab0c73900241ef5c465d7e873e9d8b34c948e67",
"cvs://server/some/path#bab0c73900241ef5c465d7e873e9d8b34c948e67",
"cvs+ssh://server/some/path#bab0c73900241ef5c465d7e873e9d8b34c948e67",
]
]
bad = [
"http://localhost/foo.html",
"foo-1.1-1.src.rpm",
@ -61,7 +61,7 @@ class TestSCM(unittest.TestCase):
"git:foobar",
"https:foo/bar",
"https://",
]
]
for url in good:
self.assertTrue(SCM.is_scm_url(url))
for url in bad:
@ -81,7 +81,7 @@ class TestSCM(unittest.TestCase):
"foo-1.1-1.src.rpm",
"git://",
"https://server/foo-1.1-1.src.rpm",
]
]
for url in bad:
with self.assertRaises(koji.GenericError):
scm = SCM(url)
@ -123,7 +123,7 @@ class TestSCM(unittest.TestCase):
good = [
"git://goodserver/path1#1234",
"git+ssh://maybeserver/path1#1234",
]
]
bad = [
"cvs://badserver/projects/42#ref",
"svn://badserver/projects/42#ref",
@ -135,7 +135,7 @@ class TestSCM(unittest.TestCase):
"git://maybeserver/goodpath/../badpath/project#1234",
"git://maybeserver/goodpath/..//badpath/project#1234",
"git://maybeserver/..//badpath/project#1234",
]
]
for url in good:
scm = SCM(url)
scm.assert_allowed(config)
@ -245,7 +245,7 @@ class TestSCM(unittest.TestCase):
good = [
"git://goodserver/path1#1234",
"git+ssh://maybeserver/path1#1234",
]
]
bad = [
"cvs://badserver/projects/42#ref",
"svn://badserver/projects/42#ref",
@ -257,7 +257,7 @@ class TestSCM(unittest.TestCase):
"git://maybeserver/goodpath/../badpath/project#1234",
"git://maybeserver/goodpath/..//badpath/project#1234",
"git://maybeserver/..//badpath/project#1234",
]
]
session = mock.MagicMock()
session.evalPolicy.side_effect = FakePolicy(policy['one']).evalPolicy
for url in good:
@ -267,7 +267,7 @@ class TestSCM(unittest.TestCase):
scm = SCM(url)
with self.assertRaises(koji.BuildError) as cm:
scm.assert_allowed(session=session, by_config=False, by_policy=True)
self.assertRegexpMatches(str(cm.exception), '^SCM: .* is not allowed, reason: None$')
self.assertRegex(str(cm.exception), '^SCM: .* is not allowed, reason: None$')
def test_opts_by_policy(self):
session = mock.MagicMock()
@ -445,19 +445,16 @@ class TestSCMCheckouts(unittest.TestCase):
scm = SCM(url)
scm.assert_allowed(self.config)
scm.checkout(self.tempdir, session=self.session,
uploadpath=self.uploadpath, logfile=self.logfile)
uploadpath=self.uploadpath, logfile=self.logfile)
self.assertEqual(scm.use_common, False)
self.symlink.assert_not_called()
# expected commands
cmd = ['git', 'clone', '-n', 'git://nocommon/koji.git',
self.tempdir + '/koji']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir, logerror=1,
append=False, env=None)
cmd = ['git', 'clone', '-n', 'git://nocommon/koji.git', self.tempdir + '/koji']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir, logerror=1, append=False, env=None)
cmd = ['git', 'reset', '--hard', 'asdasd']
call2 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir + '/koji',
logerror=1, append=True, env=None)
call2 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir + '/koji', logerror=1, append=True, env=None)
self.log_output.assert_has_calls([call1, call2])
def test_checkout_gitssh_nocommon(self):
@ -466,19 +463,16 @@ class TestSCMCheckouts(unittest.TestCase):
scm = SCM(url)
scm.assert_allowed(self.config)
scm.checkout(self.tempdir, session=self.session,
uploadpath=self.uploadpath, logfile=self.logfile)
uploadpath=self.uploadpath, logfile=self.logfile)
self.assertEqual(scm.use_common, False)
self.symlink.assert_not_called()
# expected commands
cmd = ['git', 'clone', '-n', 'git+ssh://user@nocommon/koji.git',
self.tempdir + '/koji']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir, logerror=1,
append=False, env=None)
cmd = ['git', 'clone', '-n', 'git+ssh://user@nocommon/koji.git', self.tempdir + '/koji']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir, logerror=1, append=False, env=None)
cmd = ['git', 'reset', '--hard', 'asdasd']
call2 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir + '/koji',
logerror=1, append=True, env=None)
call2 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir + '/koji', logerror=1, append=True, env=None)
self.log_output.assert_has_calls([call1, call2])
def test_checkout_git_common(self):
@ -486,24 +480,20 @@ class TestSCMCheckouts(unittest.TestCase):
url = "git://default/koji.git#asdasd"
scm = SCM(url)
scm.assert_allowed(self.config)
scm.checkout(self.tempdir, session=self.session,
uploadpath=self.uploadpath, logfile=self.logfile)
scm.checkout(self.tempdir, session=self.session, uploadpath=self.uploadpath,
logfile=self.logfile)
self.assertEqual(scm.use_common, True)
self.symlink.assert_called_once()
# expected commands
cmd = ['git', 'clone', '-n', 'git://default/koji.git',
self.tempdir + '/koji']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir, logerror=1,
append=False, env=None)
cmd = ['git', 'clone', '-n', 'git://default/koji.git', self.tempdir + '/koji']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir, logerror=1, append=False, env=None)
cmd = ['git', 'reset', '--hard', 'asdasd']
call2 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir + '/koji',
logerror=1, append=True, env=None)
call2 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir + '/koji', logerror=1, append=True, env=None)
cmd = ['git', 'clone', 'git://default/common.git', 'common']
call3 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir,
logerror=1, append=True, env=None)
call3 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir, logerror=1, append=True, env=None)
self.log_output.assert_has_calls([call1, call2, call3])
def test_checkout_error_in_command(self):
@ -514,15 +504,13 @@ class TestSCMCheckouts(unittest.TestCase):
self.log_output.return_value = 1
with self.assertRaises(koji.BuildError):
scm.checkout(self.tempdir, session=self.session,
uploadpath=self.uploadpath, logfile=self.logfile)
uploadpath=self.uploadpath, logfile=self.logfile)
self.assertEqual(scm.use_common, False)
self.symlink.assert_not_called()
# expected commands
cmd = ['git', 'clone', '-n', 'git://nocommon/koji.git',
self.tempdir + '/koji']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir, logerror=1,
append=False, env=None)
cmd = ['git', 'clone', '-n', 'git://nocommon/koji.git', self.tempdir + '/koji']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir, logerror=1, append=False, env=None)
# should have errored after first command
self.log_output.assert_has_calls([call1])
@ -532,20 +520,17 @@ class TestSCMCheckouts(unittest.TestCase):
scm = SCM(url)
scm.assert_allowed(self.config)
scm.checkout(self.tempdir, session=self.session,
uploadpath=self.uploadpath, logfile=self.logfile)
uploadpath=self.uploadpath, logfile=self.logfile)
self.assertEqual(scm.use_common, True)
self.symlink.assert_called_once()
# expected commands
cmd = ['cvs', '-d', ':pserver:anonymous@default:/cvsisdead', 'checkout',
'-r', 'sometag', 'rpms/foo/EL3']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir, logerror=1,
append=False, env=None)
cmd = ['cvs', '-d', ':pserver:anonymous@default:/cvsisdead', 'checkout',
'common']
call2 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir, logerror=1,
append=True, env=None)
'-r', 'sometag', 'rpms/foo/EL3']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir, logerror=1, append=False, env=None)
cmd = ['cvs', '-d', ':pserver:anonymous@default:/cvsisdead', 'checkout', 'common']
call2 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir, logerror=1, append=True, env=None)
self.log_output.assert_has_calls([call1, call2])
def test_checkout_cvs_ssh(self):
@ -554,15 +539,14 @@ class TestSCMCheckouts(unittest.TestCase):
scm = SCM(url)
scm.assert_allowed(self.config)
scm.checkout(self.tempdir, session=self.session,
uploadpath=self.uploadpath, logfile=self.logfile)
uploadpath=self.uploadpath, logfile=self.logfile)
self.assertEqual(scm.use_common, False)
self.symlink.assert_not_called()
# expected commands
cmd = ['cvs', '-d', ':ext:user@nocommon:/cvsisdead', 'checkout', '-r',
'sometag', 'rpms/foo/EL3']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir, logerror=1,
append=False, env={'CVS_RSH': 'ssh'})
'sometag', 'rpms/foo/EL3']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir, logerror=1, append=False, env={'CVS_RSH': 'ssh'})
self.log_output.assert_has_calls([call1])
def test_checkout_svn(self):
@ -571,15 +555,14 @@ class TestSCMCheckouts(unittest.TestCase):
scm = SCM(url)
scm.assert_allowed(self.config)
scm.checkout(self.tempdir, session=self.session,
uploadpath=self.uploadpath, logfile=self.logfile)
uploadpath=self.uploadpath, logfile=self.logfile)
self.assertEqual(scm.use_common, False)
self.symlink.assert_not_called()
# expected commands
cmd = ['svn', 'checkout', '-r', 'revision',
'svn://nocommon/dist/rpms/foo/EL3', 'rpms/foo/EL3']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir, logerror=1,
append=False, env=None)
'svn://nocommon/dist/rpms/foo/EL3', 'rpms/foo/EL3']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir, logerror=1, append=False, env=None)
self.log_output.assert_has_calls([call1])
def test_checkout_svn_ssh(self):
@ -588,15 +571,14 @@ class TestSCMCheckouts(unittest.TestCase):
scm = SCM(url)
scm.assert_allowed(self.config)
scm.checkout(self.tempdir, session=self.session,
uploadpath=self.uploadpath, logfile=self.logfile)
uploadpath=self.uploadpath, logfile=self.logfile)
self.assertEqual(scm.use_common, False)
self.symlink.assert_not_called()
# expected commands
cmd = ['svn', 'checkout', '-r', 'revision',
'svn+ssh://user@nocommon/dist/rpms/foo/EL3', 'rpms/foo/EL3']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile,
self.uploadpath, cwd=self.tempdir, logerror=1,
append=False, env=None)
'svn+ssh://user@nocommon/dist/rpms/foo/EL3', 'rpms/foo/EL3']
call1 = mock.call(self.session, cmd[0], cmd, self.logfile, self.uploadpath,
cwd=self.tempdir, logerror=1, append=False, env=None)
self.log_output.assert_has_calls([call1])
@mock.patch('subprocess.Popen')
@ -609,11 +591,10 @@ class TestSCMCheckouts(unittest.TestCase):
scm = SCM(url)
scm.assert_allowed(self.config)
scm.checkout(self.tempdir, session=self.session,
uploadpath=self.uploadpath, logfile=self.logfile)
uploadpath=self.uploadpath, logfile=self.logfile)
source = scm.get_source()
self.assertEqual(source, {'url': url,
'source': 'git://default/koji.git#hash'})
self.assertEqual(source, {'url': url, 'source': 'git://default/koji.git#hash'})
popen.return_value.wait.return_value = 1
with self.assertRaises(koji.GenericError) as cm: