def test_cache(self): def get_mtime(pattern): pattern = os.path.join(ReviewDirs.root, pattern) path = glob(pattern)[0] return os.stat(path).st_mtime self.init_test(['fedora-review','-b','818805']) if os.path.exists('818805-openerp-client'): shutil.rmtree('818805-openerp-client') bug = BugzillaBug(Settings.bug) bug.find_urls() bug.download_files() srpm_org_time = get_mtime('srpm/python-test-1.0*.src.rpm') spec = SpecFile(bug.spec_file) sources = Sources(spec) upstream_org_time = get_mtime('upstream/python-test*.gz') del bug self.init_test(['fedora-review','-cb','818805']) bug = BugzillaBug(Settings.bug) bug.find_urls() bug.download_files() srpm_new_time = get_mtime('srpm/python-test-1.0*.src.rpm') spec = SpecFile(bug.spec_file) sources = Sources(spec) upstream_new_time = get_mtime('upstream/python-test*.gz') self.assertEqual(upstream_org_time, upstream_new_time, 'upstream') self.assertEqual(srpm_org_time, srpm_new_time, 'srpm')
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 __download_sources(self): sources = self.checks.spec.get_sources('Source') self.sources = Sources(self.checks.spec) self.sources.extract_all() return True
class ReviewHelper(object): def __init__(self): self.bug = None self.checks = None self.log = Settings.get_logger() self.verbose = False self.outfile = None self.prebuilt = False def __download_sources(self): sources = self.checks.spec.get_sources('Source') self.sources = Sources(self.checks.spec) self.sources.extract_all() return True 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 __list_checks(self): """ List all the checks available. """ ChecksLister().list() def __print_version(self): print('fedora-review version ' + __version__ + ' ' + build_full) def __run_checks(self, spec, srpm): self.checks = Checks(spec, srpm) if Settings.no_report: self.outfile = '/dev/null' else: self.outfile = ReviewDirs.report_path(self.checks.spec.name) with open(self.outfile, "w") as output: if Settings.nobuild: self.checks.srpm.is_build = True self.log.info('Running checks and generate report\n') self.checks.run_checks(output=output, writedown=not Settings.no_report) output.close() if not os.path.exists('BUILD'): os.symlink(Mock.get_builddir('BUILD'), 'BUILD') if not Settings.no_report: print "Review in: " + self.outfile def run(self): self.log.debug("Command line: " + ' '.join(sys.argv)) try: Settings.init() make_report = True if Settings.list_checks: self.__list_checks() make_report = False elif Settings.version: self.__print_version() make_report = False elif Settings.url: self.log.info("Processing bug on url: " + Settings.url) self.bug = UrlBug(Settings.url) elif Settings.bug: self.log.info("Processing bugzilla bug: " + Settings.bug) self.bug = BugzillaBug(Settings.bug, user=Settings.user) elif Settings.name: self.log.info("Processing local files: " + Settings.name) self.bug = NameBug(Settings.name) if make_report: self.__do_report() return 0 except BugException as err: print str(err) return 2 except HandledError as err: print str(err) return 2 except SettingsError as err: self.log.error("Incompatible settings: " + str(err)) return 2 except ReviewDirExistsError as err: print("The directory %s is in the way, please remove." % err.value) return 4 except CleanExitError as err: self.log.debug('Processing CleanExit') return 2 except: self.log.debug("Exception down the road...", exc_info=True) self.log.error("Exception down the road...") return 1 return 0
class ReviewHelper(object): def __init__(self): self.bug = None self.checks = None self.log = Settings.get_logger() self.verbose = False self.outfile = None self.prebuilt = False def __download_sources(self): sources = self.checks.spec.get_sources('Source') self.sources = Sources(self.checks.spec) self.sources.extract_all() return True 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 __list_checks(self): """ List all the checks available. """ ChecksLister().list() def __print_version(self): print('fedora-review version ' + __version__ + ' ' + build_full) def __run_checks(self, spec, srpm): self.checks = Checks(spec, srpm ) if Settings.no_report: self.outfile = '/dev/null' else: self.outfile = ReviewDirs.report_path(self.checks.spec.name) with open(self.outfile,"w") as output: if Settings.nobuild: self.checks.srpm.is_build = True self.log.info('Running checks and generate report\n') self.checks.run_checks(output=output, writedown=not Settings.no_report) output.close() if not os.path.exists('BUILD'): os.symlink(Mock.get_builddir('BUILD'), 'BUILD') if not Settings.no_report: print "Review in: " + self.outfile def run(self): self.log.debug( "Command line: " + ' '.join(sys.argv)) try: Settings.init() make_report = True if Settings.list_checks: self.__list_checks() make_report = False elif Settings.version: self.__print_version() make_report = False elif Settings.url: self.log.info("Processing bug on url: " + Settings.url ) self.bug = UrlBug(Settings.url) elif Settings.bug: self.log.info("Processing bugzilla bug: " + Settings.bug ) self.bug = BugzillaBug(Settings.bug, user=Settings.user) elif Settings.name: self.log.info("Processing local files: " + Settings.name ) self.bug = NameBug(Settings.name) if make_report: self.__do_report() return 0 except BugException as err: print str(err) return 2 except HandledError as err: print str(err) return 2 except SettingsError as err: self.log.error("Incompatible settings: " + str(err)) return 2 except ReviewDirExistsError as err: print("The directory %s is in the way, please remove." % err.value) return 4 except CleanExitError as err: self.log.debug('Processing CleanExit') return 2 except: self.log.debug("Exception down the road...", exc_info=True) self.log.error("Exception down the road...") return 1 return 0