Beispiel #1
0
    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')
Beispiel #2
0
    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)
Beispiel #3
0
 def __download_sources(self):
     sources = self.checks.spec.get_sources('Source')
     self.sources = Sources(self.checks.spec)
     self.sources.extract_all()
     return True
Beispiel #4
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
 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