def test_parse_build_results_files(self): """ Test parse_build_results with a test log indicating files are missing """ def mock_util_call(cmd): del cmd build.config.setup_patterns() call_backup = build.util.call build.util.call = mock_util_call fm = files.FileManager() open_name = 'build.util.open_auto' content = 'line 1\n' \ 'Installed (but unpackaged) file(s) found:\n' \ '/usr/testdir/file\n' \ '/usr/testdir/file1\n' \ '/usr/testdir/file2\n' \ 'RPM build errors\n' \ 'errors here\n' m_open = mock_open(read_data=content) with patch(open_name, m_open, create=True): build.parse_build_results('testname', 0, fm) build.util.call = call_backup self.assertEqual( fm.files, ['/usr/testdir/file', '/usr/testdir/file1', '/usr/testdir/file2']) # one for each file added self.assertEqual(build.must_restart, 3)
def test_parse_build_results_failed_pats(self): """ Test parse_build_results with a test log indicating failure due to a missing testpkg (failed pat error). The specific error is a python ImportError. """ def mock_util_call(cmd): del cmd build.config.setup_patterns() call_backup = build.util.call build.util.call = mock_util_call fm = files.FileManager() open_name = 'build.util.open_auto' content = 'line 1\nImportError: No module named testpkg\nexiting' m_open = mock_open(read_data=content) with patch(open_name, m_open, create=True): build.parse_build_results('testname', 0, fm) build.util.call = call_backup self.assertIn('testpkg-python', build.buildreq.buildreqs) self.assertEqual(build.must_restart, 1)
def test_parse_build_results_pkgconfig(self): """ Test parse_build_results with a test log indicating failure due to a missing qmake package (pkgconfig error) """ def mock_util_call(cmd): del cmd build.config.setup_patterns() build.config.config_opts['32bit'] = True call_backup = build.util.call build.util.call = mock_util_call fm = files.FileManager() open_name = 'build.util.open_auto' content = 'line 1\nwhich: no qmake\nexiting' m_open = mock_open(read_data=content) with patch(open_name, m_open, create=True): build.parse_build_results('testname', 0, fm) build.util.call = call_backup self.assertIn('pkgconfig(Qt)', build.buildreq.buildreqs) self.assertIn('pkgconfig(32Qt)', build.buildreq.buildreqs) self.assertEqual(build.must_restart, 1)
def test_parse_build_results_banned_files(self): """ Test parse_build_results with a test log indicating banned files are missing """ def mock_util_call(cmd): del cmd conf = config.Config() conf.setup_patterns() reqs = buildreq.Requirements("") tcontent = tarball.Content("", "", "", [], conf) call_backup = build.util.call build.util.call = mock_util_call fm = files.FileManager(conf) open_name = 'build.util.open_auto' content = 'line 1\n' \ 'Installed (but unpackaged) file(s) found:\n' \ '/opt/file\n' \ '/usr/etc/file\n' \ '/usr/local/file\n' \ '/usr/src/file\n' \ '/var/file\n' \ 'RPM build errors\n' \ 'errors here\n' m_open = mock_open(read_data=content) with patch(open_name, m_open, create=True): build.parse_build_results('testname', 0, fm, conf, reqs, tcontent) build.util.call = call_backup self.assertEqual(fm.has_banned, True) # check no files were added self.assertEqual(build.must_restart, 0)
def test_parse_build_results_failed_pats(self): """ Test parse_build_results with a test log indicating failure due to a missing package. """ conf = config.Config() conf.setup_patterns() reqs = buildreq.Requirements("") tcontent = tarball.Content("", "", "", [], conf) call_backup = build.util.call open_auto_backup = build.util.open_auto build.util.call = MagicMock(return_value=None) fm = files.FileManager(conf) with open('tests/builderrors', 'r') as f: builderrors = f.readlines() for error in builderrors: if not error.startswith('#'): input, output = error.strip('\n').split('|') reqs.buildreqs = set() build.util.open_auto = mock_open(read_data=input) build.parse_build_results('testname', 0, fm, conf, reqs, tcontent) self.assertIn(output, reqs.buildreqs) self.assertGreater(build.must_restart, 0) # Restoring functions build.util.call = call_backup build.util.open_auto = open_auto_backup
def test_parse_build_results_simple_pats(self): """ Test parse_build_results with a test log indicating failure due to a missing httpd-dev package (simple pat error) """ def mock_util_call(cmd): del cmd conf = config.Config() conf.setup_patterns() reqs = buildreq.Requirements("") tcontent = tarball.Content("", "", "", [], conf) call_backup = build.util.call build.util.call = mock_util_call fm = files.FileManager(conf) open_name = 'build.util.open_auto' content = 'line 1\nchecking for Apache test module support\nexiting' m_open = mock_open(read_data=content) with patch(open_name, m_open, create=True): build.parse_build_results('testname', 0, fm, conf, reqs, tcontent) build.util.call = call_backup self.assertIn('httpd-dev', reqs.buildreqs) self.assertEqual(build.must_restart, 1)