Fix tests in order to run with PostgreSQL

Most of the issues are caused by the use of SQLAlchemy database session. Some
inline comments describe the issues in detail.

Signed-off-by: Chenxiong Qi <cqi@redhat.com>
This commit is contained in:
Chenxiong Qi
2019-06-27 12:12:50 +08:00
parent 302c76b90f
commit e49f69f7b5
18 changed files with 758 additions and 634 deletions

View File

@@ -39,7 +39,7 @@ from module_build_service.utils.general import mmd_to_str
import pytest
from mock import patch, MagicMock
from tests import conf, init_data, reuse_component_init_data, clean_database
from tests import conf, init_data, reuse_component_init_data, clean_database, make_module
from module_build_service.builder.KojiModuleBuilder import KojiModuleBuilder
@@ -853,14 +853,14 @@ class TestGetDistTagSRPM:
with open(self.expected_srpm_file, "w") as f:
f.write("")
module_nsvc = dict(
self.module_nsvc = dict(
name="testmodule",
stream="master",
version="1",
context=module_build_service.models.DEFAULT_MODULE_CONTEXT,
)
xmd = {
self.xmd = {
"mbs": {
"buildrequires": {
"modulea": {
@@ -872,14 +872,9 @@ class TestGetDistTagSRPM:
"ursine_rpms": ["foo-0:1.0-1.fc28", "bar-0:2.0-1.fc28"],
},
},
"koji_tag": "module-{name}-{stream}-{version}-{context}".format(**module_nsvc),
"koji_tag": "module-{name}-{stream}-{version}-{context}".format(**self.module_nsvc),
}
}
from tests import make_module
self.module_build = make_module(
"{name}:{stream}:{version}:{context}".format(**module_nsvc), xmd=xmd
)
def teardown_method(self):
shutil.rmtree(self.tmp_srpm_build_dir)
@@ -887,24 +882,29 @@ class TestGetDistTagSRPM:
@patch("tempfile.mkdtemp")
@patch("module_build_service.builder.KojiModuleBuilder.execute_cmd")
def _build_srpm(self, execute_cmd, mkdtemp):
mkdtemp.return_value = self.tmp_srpm_build_dir
return KojiModuleBuilder.get_disttag_srpm("disttag", self.module_build)
def _build_srpm(self, db_session, execute_cmd, mkdtemp):
module_build = make_module(
db_session,
"{name}:{stream}:{version}:{context}".format(**self.module_nsvc),
xmd=self.xmd)
def test_return_srpm_file(self):
srpm_file = self._build_srpm()
mkdtemp.return_value = self.tmp_srpm_build_dir
return KojiModuleBuilder.get_disttag_srpm("disttag", module_build)
def test_return_srpm_file(self, db_session):
srpm_file = self._build_srpm(db_session)
assert self.expected_srpm_file == srpm_file
def test_filtered_rpms_are_added(self):
self._build_srpm()
def test_filtered_rpms_are_added(self, db_session):
self._build_srpm(db_session)
with open(self.spec_file, "r") as f:
content = f.read()
for nevr in ["baz-devel-0:0.1-6.fc28", "baz-doc-0:0.1-6.fc28"]:
assert KojiModuleBuilder.format_conflicts_line(nevr) + "\n" in content
def test_ursine_rpms_are_added(self):
self._build_srpm()
def test_ursine_rpms_are_added(self, db_session):
self._build_srpm(db_session)
with open(self.spec_file, "r") as f:
content = f.read()

View File

@@ -7,7 +7,7 @@ from textwrap import dedent
import kobo.rpmlib
from module_build_service import conf, db
from module_build_service import conf
from module_build_service.models import ModuleBuild, ComponentBuild, make_session
from module_build_service.builder.MockModuleBuilder import MockModuleBuilder
from module_build_service.utils import import_fake_base_module, load_mmd_file, mmd_to_str
@@ -24,31 +24,6 @@ class TestMockModuleBuilder:
shutil.rmtree(self.resultdir)
def _create_module_with_filters(self, session, batch, state):
comp_builds = [
{
"module_id": 2,
"package": "ed",
"format": "rpms",
"scmurl": (
"https://src.fedoraproject.org/rpms/ed"
"?#01bf8330812fea798671925cc537f2f29b0bd216"
),
"batch": 2,
"ref": "01bf8330812fea798671925cc537f2f29b0bd216",
},
{
"module_id": 2,
"package": "mksh",
"format": "rpms",
"scmurl": (
"https://src.fedoraproject.org/rpms/mksh"
"?#f70fd11ddf96bce0e2c64309706c29156b39141d"
),
"batch": 3,
"ref": "f70fd11ddf96bce0e2c64309706c29156b39141d",
},
]
base_dir = os.path.abspath(os.path.dirname(__file__))
mmd = load_mmd_file(
os.path.join(base_dir, "..", "staged_data", "testmodule-with-filters.yaml"))
@@ -102,11 +77,37 @@ class TestMockModuleBuilder:
module.koji_tag = "module-mbs-testmodule-test-20171027111452"
module.batch = batch
session.add(module)
session.commit()
comp_builds = [
{
"module_id": module.id,
"state": state,
"package": "ed",
"format": "rpms",
"scmurl": (
"https://src.fedoraproject.org/rpms/ed"
"?#01bf8330812fea798671925cc537f2f29b0bd216"
),
"batch": 2,
"ref": "01bf8330812fea798671925cc537f2f29b0bd216",
},
{
"module_id": module.id,
"state": state,
"package": "mksh",
"format": "rpms",
"scmurl": (
"https://src.fedoraproject.org/rpms/mksh"
"?#f70fd11ddf96bce0e2c64309706c29156b39141d"
),
"batch": 3,
"ref": "f70fd11ddf96bce0e2c64309706c29156b39141d",
},
]
for build in comp_builds:
cb = ComponentBuild(**dict(build, format="rpms", state=state))
session.add(cb)
session.commit()
session.add(ComponentBuild(**build))
session.commit()
return module
@@ -186,9 +187,6 @@ class TestMockModuleBuilderAddRepos:
def setup_method(self, test_method):
clean_database(add_platform_module=False)
import_fake_base_module("platform:f29:1:000000")
self.platform = ModuleBuild.get_last_build_in_stream(db.session, "platform", "f29")
self.foo = make_module("foo:1:1:1", {"platform": ["f29"]}, {"platform": ["f29"]})
self.app = make_module("app:1:1:1", {"platform": ["f29"]}, {"platform": ["f29"]})
@mock.patch("module_build_service.conf.system", new="mock")
@mock.patch(
@@ -205,19 +203,25 @@ class TestMockModuleBuilderAddRepos:
"module_build_service.builder.MockModuleBuilder.MockModuleBuilder._write_mock_config"
)
def test_buildroot_add_repos(
self, write_config, load_config, patched_open, base_module_repofiles
self, write_config, load_config, patched_open, base_module_repofiles, db_session
):
platform = ModuleBuild.get_last_build_in_stream(db_session, "platform", "f29")
foo = make_module(
db_session, "foo:1:1:1", {"platform": ["f29"]}, {"platform": ["f29"]})
app = make_module(
db_session, "app:1:1:1", {"platform": ["f29"]}, {"platform": ["f29"]})
patched_open.side_effect = [
mock.mock_open(read_data="[fake]\nrepofile 1\n").return_value,
mock.mock_open(read_data="[fake]\nrepofile 2\n").return_value,
mock.mock_open(read_data="[fake]\nrepofile 3\n").return_value,
]
builder = MockModuleBuilder("user", self.app, conf, "module-app", [])
builder = MockModuleBuilder("user", app, conf, "module-app", [])
dependencies = {
"repofile://": [self.platform.mmd()],
"repofile:///etc/yum.repos.d/foo.repo": [self.foo.mmd(), self.app.mmd()],
"repofile://": [platform.mmd()],
"repofile:///etc/yum.repos.d/foo.repo": [foo.mmd(), app.mmd()],
}
builder.buildroot_add_repos(dependencies)