def init_test(self, cd, argv=[], wd=None, buildroot=None, options=None): # Initiate a test which runs in directory cd # kwargs: # argv: fed to sys.argv and eventually to Settings # fedora-review is prepended and mock_root appended. # wd: review directory, cleared. # options: mock-options os.chdir(cd) if wd: if os.path.exists(wd): shutil.rmtree(wd) ReviewDirs.reset(cd) ReviewDirs.workdir_setup(os.getcwd(), True) args = argv args.insert(0, 'fedora-review') br = buildroot if buildroot else self.BUILDROOT args.append("--mock-config=" + br) opts = [] if NO_NET: opts.append('--offline') if options: opts.append(options) if opts: argv.append('--mock-options=' + ' '.join(opts)) sys.argv = argv Settings.init(True) Mock.reset()
def init_test(self, cd, argv=None, wd=None, buildroot=None, options=None): ''' Initiate a test which runs in directory cd kwargs: argv: fed to sys.argv and eventually to Settings fedora-review is prepended and mock_root appended. wd: review directory, cleared. options: mock-options''' cd = os.path.abspath(cd) os.chdir(cd) if not wd: wd = os.getcwd() ReviewDirs.workdir_setup(wd, 'testing') if not argv: argv = [] args = argv args.insert(0, 'fedora-review') br = buildroot if buildroot else self.BUILDROOT args.append("--mock-config=" + br) opts = [] if NO_NET: opts.append('--offline') if options: opts.append(options) if opts: argv.append('--mock-options=' + ' '.join(opts)) sys.argv = argv Settings.init(True) Mock.clear_builddir() Mock.reset()
def test_source_file(self): """ Test the SourceFile class """ if os.path.exists('python-test'): shutil.rmtree('python-test') sys.argv = ['fedora-review', '-n', 'python-test'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) bug = NameBug('python-test') bug.find_urls() bug.download_files() spec = SpecFile(bug.spec_file) sources = Sources(spec) source = Source(sources, 'Source0', TEST_SRC) # check that source exists and source.filename point to the right location expected = os.path.abspath('./upstream/python-test-1.0.tar.gz') self.assertEqual(source.filename, expected) self.assertEqual(source.is_archive(), True) self.assertTrue(os.path.exists(source.filename)) self.assertEqual( source.check_source_checksum(), "7ef644ee4eafa62cfa773cad4056cdcea592e27dacd5ae" "b4e8b11f51f5bf60d3") os.chdir(self.startdir)
def init_test(self, argv= ['fedora-review'], d=None): os.chdir(startdir) if d: os.chdir(d) if os.path.exists('python-test'): shutil.rmtree('python-test') ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) sys.argv = argv Settings.init(True)
def init_test(self, argv=["fedora-review"], d=None): os.chdir(startdir) if d: os.chdir(d) if os.path.exists("python-test"): shutil.rmtree("python-test") ReviewDirs.reset() ReviewDirs.workdir_setup(".", True) sys.argv = argv Settings.init(True)
def test_spec_file(self): ''' Test the SpecFile class''' ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) dest = Mock.get_builddir('SOURCES') if not os.path.exists(dest): os.makedirs(dest) self.helpers._get_file(TEST_SPEC, Mock.get_builddir('SOURCES')) spec = SpecFile(self.spec_file) # Test misc rpm values (Macro resolved) self.assertEqual(spec.name, 'python-test') self.assertEqual(spec.version, '1.0') # resolve the dist-tag dist = self.helpers._run_cmd('rpm --eval %dist')[:-1] self.assertEqual(spec.release, '1' + dist) # test misc rpm values (without macro resolve) self.assertEqual(spec.find_tag('Release'), ['1%{?dist}']) self.assertEqual(spec.find_tag('License'), ['GPLv2+']) self.assertEqual(spec.find_tag('Group'), ['Development/Languages']) # Test rpm value not there self.assertEqual(spec.find_tag('PreReq'), []) # Test get sections expected = {'%clean': ['rm -rf $RPM_BUILD_ROOT']} self.assertEqual(spec.get_section('%clean'), expected) expected = {'%build': ['%{__python} setup.py build']} self.assertEqual(spec.get_section('%build'), expected) expected = { '%install': [ 'rm -rf $RPM_BUILD_ROOT', '%{__python} setup.py install -O1 --skip-build' ' --root $RPM_BUILD_ROOT' ] } self.assertEqual(spec.get_section('%install'), expected) expected = { '%files': ['%defattr(-,root,root,-)', '%doc COPYING', '%{python_sitelib}/*'] } self.assertEqual(spec.get_section('%files'), expected) # Test get_sources (return the Source/Patch lines with macros resolved) expected = { 'Source0': 'http://timlau.fedorapeople.org/' 'files/test/review-test/python-test-1.0.tar.gz' } self.assertEqual(spec.get_sources(), expected) # Test find regex = re.compile(r'^Release\s*:\s*(.*)') res = spec.find(regex) if res: self.assertEqual(res.groups(), ('1%{?dist}', )) else: self.assertTrue(False) os.chdir(self.startdir)
def test_bad_specfile(self): os.chdir('bad-spec') if os.path.exists('python-test'): shutil.rmtree('python-test') sys.argv = ['fedora-review','-pn','python-test'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) bug = NameBug('python-test') check = self.run_single_check(bug,'CheckSpecAsInSRPM') self.assertEqual(check.state, 'fail') self.assertTrue('#TestTag' in check.attachments[0].text) os.chdir(self.startdir)
def test_bad_specfile(self): os.chdir('bad-spec') if os.path.exists('python-test'): shutil.rmtree('python-test') sys.argv = ['fedora-review', '-pn', 'python-test'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) bug = NameBug('python-test') check = self.run_single_check(bug, 'CheckSpecAsInSRPM') self.assertEqual(check.state, 'fail') self.assertTrue('#TestTag' in check.attachments[0].text) os.chdir(self.startdir)
def test_review_dir(self): ''' Test ReviewDir setup functions. ''' self.init_test('.', argv=['-n', 'python-test', '--no-build']) from FedoraReview.review_dirs import _ReviewDirs os.chdir('review_dir') check_output('rm -rf testdirs; mkdir testdirs', shell=True) ReviewDirs.workdir_setup('testdirs', 'testing') check_output(['touch', 'results/dummy.rpm']) os.chdir('..') rd = _ReviewDirs() rd.workdir_setup('testdirs') self.assertEqual(len(glob.glob('*')), 7) self.assertEqual(os.path.basename(os.getcwd()), 'testdirs') self.assertTrue(os.path.exists('results/dummy.rpm')) self.assertEqual(glob.glob('BUILD/*'), ['BUILD/pkg-1.0'])
def test_bugzilla_bug(self): sys.argv = ['fedora-review', '-b', '817268'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) bug = BugzillaBug('817268') bug.find_urls() expected ='http://dl.dropbox.com/u/17870887/python-faces-0.11.7-2' \ '/python-faces-0.11.7-2.fc16.src.rpm' self.assertEqual(expected, bug.srpm_url) expected = 'http://dl.dropbox.com/u/17870887/python-faces-0.11.7-2/' \ 'python-faces.spec' self.assertEqual(expected, bug.spec_url) self.assertEqual(None, bug.spec_file) self.assertEqual(None, bug.srpm_file) os.chdir(self.startdir)
def test_bugzilla_bug(self): sys.argv = ['fedora-review','-b','817268'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) bug = BugzillaBug('817268') bug.find_urls() expected ='http://dl.dropbox.com/u/17870887/python-faces-0.11.7-2' \ '/python-faces-0.11.7-2.fc16.src.rpm' self.assertEqual(expected, bug.srpm_url) expected = 'http://dl.dropbox.com/u/17870887/python-faces-0.11.7-2/' \ 'python-faces.spec' self.assertEqual(expected, bug.spec_url) self.assertEqual(None, bug.spec_file) self.assertEqual(None, bug.srpm_file) os.chdir(self.startdir)
def setUp(self): self.startdir = os.getcwd() sys.argv = ['test-checks','-b','1234'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) if not os.path.exists(TEST_WORK_DIR): os.makedirs(TEST_WORK_DIR) self.checks = None self.srpm = TEST_WORK_DIR + os.path.basename(TEST_SRPM) self.spec = TEST_WORK_DIR + os.path.basename(TEST_SPEC) self.source = TEST_WORK_DIR + os.path.basename(TEST_SRC) helper = Helpers() helper._get_file(TEST_SRPM, TEST_WORK_DIR) helper._get_file(TEST_SRC, TEST_WORK_DIR) helper._get_file(TEST_SPEC, TEST_WORK_DIR) del helper
def setUp(self): self.startdir = os.getcwd() sys.argv = ['test-checks', '-b', '1234'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) if not os.path.exists(TEST_WORK_DIR): os.makedirs(TEST_WORK_DIR) self.checks = None self.srpm = TEST_WORK_DIR + os.path.basename(TEST_SRPM) self.spec = TEST_WORK_DIR + os.path.basename(TEST_SPEC) self.source = TEST_WORK_DIR + os.path.basename(TEST_SRC) helper = Helpers() helper._get_file(TEST_SRPM, TEST_WORK_DIR) helper._get_file(TEST_SRC, TEST_WORK_DIR) helper._get_file(TEST_SPEC, TEST_WORK_DIR) del helper
def test_spec_file(self): ''' Test the SpecFile class''' ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) dest = Mock.get_builddir('SOURCES') if not os.path.exists(dest): os.makedirs(dest) self.helpers._get_file(TEST_SPEC, Mock.get_builddir('SOURCES')) spec = SpecFile(self.spec_file) # Test misc rpm values (Macro resolved) self.assertEqual(spec.name,'python-test') self.assertEqual(spec.version,'1.0') # resolve the dist-tag dist = self.helpers._run_cmd('rpm --eval %dist')[:-1] self.assertEqual(spec.release,'1'+dist) # test misc rpm values (without macro resolve) self.assertEqual(spec.find_tag('Release'), ['1%{?dist}']) self.assertEqual(spec.find_tag('License'), ['GPLv2+']) self.assertEqual(spec.find_tag('Group'), ['Development/Languages']) # Test rpm value not there self.assertEqual(spec.find_tag('PreReq'), []) # Test get sections expected = {'%clean': ['rm -rf $RPM_BUILD_ROOT']} self.assertEqual(spec.get_section('%clean'), expected) expected = {'%build': ['%{__python} setup.py build']} self.assertEqual(spec.get_section('%build'), expected) expected = {'%install': ['rm -rf $RPM_BUILD_ROOT', '%{__python} setup.py install -O1 --skip-build' ' --root $RPM_BUILD_ROOT']} self.assertEqual(spec.get_section('%install'),expected) expected = {'%files': ['%defattr(-,root,root,-)', '%doc COPYING', '%{python_sitelib}/*']} self.assertEqual(spec.get_section('%files'),expected) # Test get_sources (return the Source/Patch lines with macros resolved) expected = {'Source0': 'http://timlau.fedorapeople.org/' 'files/test/review-test/python-test-1.0.tar.gz'} self.assertEqual(spec.get_sources(), expected) # Test find regex = re.compile(r'^Release\s*:\s*(.*)') res = spec.find(regex) if res: self.assertEqual(res.groups(), ('1%{?dist}',)) else: self.assertTrue(False) os.chdir(self.startdir)
def __do_report(self): ''' Create a review report''' self.log.info('Getting .spec and .srpm Urls from : ' + self.bug.get_location()) Settings.dump() if not self.bug.find_urls(): raise self.HelperError('Cannot find .spec or .srpm URL(s)') if not ReviewDirs.is_inited: wd = self.bug.get_dirname() ReviewDirs.workdir_setup(wd) if not self.bug.download_files(): raise self.HelperError('Cannot download .spec and .srpm') Settings.name = self.bug.get_name() self.__run_checks(self.bug.spec_file, self.bug.srpm_file)
def __do_report(self): ''' Create a review report''' self.log.info('Getting .spec and .srpm Urls from : ' + self.bug.get_location()) Settings.dump() if not self.bug.find_urls(): self.log.error('Cannot find .spec or .srpm URL(s)') raise HandledError() if not ReviewDirs.is_inited: wd = self.bug.get_dirname() ReviewDirs.workdir_setup(wd) if not self.bug.download_files(): self.log.error('Cannot download .spec and .srpm') raise HandledError() Settings.name = self.bug.get_name() self.__run_checks(self.bug.spec_file, self.bug.srpm_file)
def setUp(self): sys.argv = ['fedora-review','-n','python-test','--prebuilt'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) self.log = Settings.get_logger() self.helpers = Helpers() self.srpm_file = os.path.join(os.path.abspath('.'), os.path.basename(TEST_SRPM)) self.spec_file = os.path.join(Mock.get_builddir('SOURCES'), os.path.basename(TEST_SPEC)) self.source_file = os.path.join(Mock.get_builddir('SOURCES'), os.path.basename(TEST_SRC)) if not os.path.exists(TEST_WORK_DIR): os.makedirs(TEST_WORK_DIR) self.helpers._get_file(TEST_SRPM, TEST_WORK_DIR) self.startdir = os.getcwd() for tree in ['python-test', 'results']: if os.path.exists(tree): shutil.rmtree(tree) Mock.reset()
def setUp(self): sys.argv = ['fedora-review', '-n', 'python-test', '--prebuilt'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) self.log = Settings.get_logger() self.helpers = Helpers() self.srpm_file = os.path.join(os.path.abspath('.'), os.path.basename(TEST_SRPM)) self.spec_file = os.path.join(Mock.get_builddir('SOURCES'), os.path.basename(TEST_SPEC)) self.source_file = os.path.join(Mock.get_builddir('SOURCES'), os.path.basename(TEST_SRC)) if not os.path.exists(TEST_WORK_DIR): os.makedirs(TEST_WORK_DIR) self.helpers._get_file(TEST_SRPM, TEST_WORK_DIR) self.startdir = os.getcwd() for tree in ['python-test', 'results']: if os.path.exists(tree): shutil.rmtree(tree) Mock.reset()
def test_sources(self): if os.path.exists('python-test'): shutil.rmtree('python-test') sys.argv = ['fedora-review', '-n', 'python-test'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) bug = NameBug('python-test') bug.find_urls() bug.download_files() checks = Checks(bug.spec_file, bug.srpm_file) checks.set_single_check('CheckSourceMD5') self.assertEqual(len(checks.checks), 1) check = checks.checks[0] check.run() result = check.get_result() self.log.debug('result : ' + result.result) if result.output_extra: self.log.debug("Result extra text: " + result.output_extra) self.assertEqual(result.result, 'pass') os.chdir(self.startdir)
def test_sources(self): if os.path.exists('python-test'): shutil.rmtree('python-test') sys.argv = ['fedora-review','-n','python-test'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) bug = NameBug('python-test') bug.find_urls() bug.download_files() checks = Checks(bug.spec_file, bug.srpm_file) checks.set_single_check('CheckSourceMD5') self.assertEqual(len(checks.checks), 1) check = checks.checks[0] check.run() result = check.get_result() self.log.debug('result : ' + result.result) if result.output_extra: self.log.debug("Result extra text: " + result.output_extra) self.assertEqual( result.result, 'pass') os.chdir(self.startdir)
def test_srpm_mockbuild(self): """ Test the SRPMFile class """ ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) sys.argv = ['fedora-review', '-b', '817268', '-m', 'fedora-16-i386'] Settings.init(True) self.helpers._get_file(TEST_SRPM, os.path.abspath('.')) srpm = SRPMFile(self.srpm_file) # install the srpm srpm.unpack() self.assertTrue(hasattr(srpm, 'unpacked_src')) src_dir = srpm.unpacked_src src_files = glob.glob(os.path.expanduser(src_dir) + '/*') src_files = [os.path.basename(f) for f in src_files] self.assertTrue('python-test-1.0.tar.gz' in src_files) self.log.info("Starting mock build (patience...)") srpm.mockbuild() self.assertTrue(srpm.is_build) rpms = glob.glob( os.path.join(Mock.resultdir, 'python-test-1.0-1*noarch.rpm')) self.assertEqual(1, len(rpms)) os.chdir(self.startdir)
def test_srpm_mockbuild(self): """ Test the SRPMFile class """ ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) sys.argv = ['fedora-review','-b','817268', '-m', 'fedora-16-i386'] Settings.init(True) self.helpers._get_file(TEST_SRPM, os.path.abspath('.')) srpm = SRPMFile(self.srpm_file) # install the srpm srpm.unpack() self.assertTrue(hasattr(srpm, 'unpacked_src')) src_dir = srpm.unpacked_src src_files = glob.glob(os.path.expanduser(src_dir) + '/*') src_files = [os.path.basename(f) for f in src_files] self.assertTrue('python-test-1.0.tar.gz' in src_files) self.log.info("Starting mock build (patience...)") srpm.mockbuild() self.assertTrue(srpm.is_build) rpms = glob.glob(os.path.join(Mock.resultdir, 'python-test-1.0-1*noarch.rpm')) self.assertEqual(1, len(rpms)) os.chdir(self.startdir)
def test_source_file(self): """ Test the SourceFile class """ if os.path.exists('python-test'): shutil.rmtree('python-test') sys.argv = ['fedora-review','-n','python-test'] Settings.init(True) ReviewDirs.reset() ReviewDirs.workdir_setup('.', True) bug = NameBug('python-test') bug.find_urls() bug.download_files() spec = SpecFile(bug.spec_file) sources = Sources(spec) source = Source(sources, 'Source0', TEST_SRC) # check that source exists and source.filename point to the right location expected = os.path.abspath('./upstream/python-test-1.0.tar.gz') self.assertEqual(source.filename, expected) self.assertEqual(source.is_archive(), True) self.assertTrue(os.path.exists(source.filename)) self.assertEqual(source.check_source_checksum(), "7ef644ee4eafa62cfa773cad4056cdcea592e27dacd5ae" "b4e8b11f51f5bf60d3") os.chdir(self.startdir)
def setUp(self): sys.argv = ['test-bugzilla','-b',TEST_BUG ] Settings.init(TEST_BUG ) ReviewDirs.workdir_setup('.', True) self.bug = BugzillaBug(TEST_BUG)