def test_releases_to_dates(self): releases = sorted(utils.releases().items(), key=lambda v: v[0]) good = releases[0] bad = releases[-1] self.do_cli(['--good-release=%s' % good[0], '--bad-release=%s' % bad[0]]) self.runner.bisect_nightlies.\ assert_called_with(utils.parse_date(good[1]), utils.parse_date(bad[1]))
def test_releases_to_dates(self): releases = sorted(utils.releases().items(), key=lambda v: v[0]) good = releases[0] bad = releases[-1] self.do_cli( ['--good-release=%s' % good[0], '--bad-release=%s' % bad[0]]) self.runner.bisect_nightlies.\ assert_called_with(utils.parse_date(good[1]), utils.parse_date(bad[1]))
def __init__(self, fetch_config, options, last_good_revision=None, first_bad_revision=None): self.last_good_revision = last_good_revision self.first_bad_revision = first_bad_revision self.fetch_config = fetch_config self.options = options self.launcher_kwargs = dict( addons=options.addons, profile=options.profile, cmdargs=options.cmdargs, ) self.nightly_data = NightlyBuildData(parse_date(options.good_date), parse_date(options.bad_date), fetch_config) self._logger = get_default_logger('Bisector')
def bisect_nightlies(runner, logger): default_bad_date = str(datetime.date.today()) default_good_date = "2009-01-01" fetch_config = runner.fetch_config options = runner.options # TODO: currently every fetch_config is nightly aware. Shoud we test # for this to be sure here ? fetch_config.set_nightly_repo(options.repo) if not options.bad_release and not options.bad_date: options.bad_date = default_bad_date logger.info("No 'bad' date specified, using %s" % options.bad_date) elif options.bad_release and options.bad_date: raise MozRegressionError("Options '--bad_release' and '--bad_date'" " are incompatible.") elif options.bad_release: options.bad_date = date_of_release(options.bad_release) logger.info("Using 'bad' date %s for release %s" % (options.bad_date, options.bad_release)) if not options.good_release and not options.good_date: options.good_date = default_good_date logger.info("No 'good' date specified, using %s" % options.good_date) elif options.good_release and options.good_date: raise MozRegressionError("Options '--good_release' and '--good_date'" " are incompatible.") elif options.good_release: options.good_date = date_of_release(options.good_release) logger.info("Using 'good' date %s for release %s" % (options.good_date, options.good_release)) good_date = parse_date(options.good_date) bad_date = parse_date(options.bad_date) if good_date > bad_date and not options.find_fix: raise MozRegressionError(("Good date %s is later than bad date %s." " Maybe you wanted to use the --find-fix" " flag ?") % (good_date, bad_date)) elif good_date < bad_date and options.find_fix: raise MozRegressionError(("Bad date %s is later than good date %s." " You should not use the --find-fix flag" " in this case...") % (bad_date, good_date)) return runner.bisect_nightlies(good_date, bad_date)
def test_valid_date(self): date = utils.parse_date("2014-07-05") self.assertEquals(date, datetime.date(2014, 7, 5))