def test_load_config_from_file_negative(self): # bad config file load foo_path = self.get_sample_path("foo") with self.assertRaisesRegexp(LintConfigError, "Invalid file path: {0}".format(foo_path)): LintConfig.load_from_file(foo_path) # error during file parsing path = self.get_sample_path("config/no-sections") expected_error_msg = "File contains no section headers." with self.assertRaisesRegexp(LintConfigError, expected_error_msg): LintConfig.load_from_file(path) # non-existing rule path = self.get_sample_path("config/nonexisting-rule") expected_error_msg = "No such rule 'foobar'" with self.assertRaisesRegexp(LintConfigError, expected_error_msg): LintConfig.load_from_file(path) # non-existing option path = self.get_sample_path("config/nonexisting-option") expected_error_msg = "Rule 'title-max-length' has no option 'foobar'" with self.assertRaisesRegexp(LintConfigError, expected_error_msg): LintConfig.load_from_file(path) # invalid option value path = self.get_sample_path("config/invalid-option-value") expected_error_msg = "'foo' is not a valid value for option 'title-max-length.line-length'. " + \ "Option 'line-length' must be a positive integer \(current value: 'foo'\)." with self.assertRaisesRegexp(LintConfigError, expected_error_msg): LintConfig.load_from_file(path)
def test_load_config_from_file_negative(self): # bad config file load foo_path = self.get_sample_path("foo") with self.assertRaisesRegexp( LintConfigError, "Invalid file path: {0}".format(foo_path)): LintConfig.load_from_file(foo_path) # error during file parsing path = self.get_sample_path("config/no-sections") expected_error_msg = "File contains no section headers." with self.assertRaisesRegexp(LintConfigError, expected_error_msg): LintConfig.load_from_file(path) # non-existing rule path = self.get_sample_path("config/nonexisting-rule") expected_error_msg = "No such rule 'foobar'" with self.assertRaisesRegexp(LintConfigError, expected_error_msg): LintConfig.load_from_file(path) # non-existing option path = self.get_sample_path("config/nonexisting-option") expected_error_msg = "Rule 'title-max-length' has no option 'foobar'" with self.assertRaisesRegexp(LintConfigError, expected_error_msg): LintConfig.load_from_file(path) # invalid option value path = self.get_sample_path("config/invalid-option-value") expected_error_msg = "'foo' is not a valid value for option 'title-max-length.line-length'. " + \ "Option 'line-length' must be a positive integer \(current value: 'foo'\)." with self.assertRaisesRegexp(LintConfigError, expected_error_msg): LintConfig.load_from_file(path)
def load_config_from_path(ctx, config_path=None): """ Tries loading the config from the given path. If no path is specified, the default config path is tried, and if no file exists at the that location, None is returned. """ config = None try: if config_path: config = LintConfig.load_from_file(config_path) elif os.path.exists(DEFAULT_CONFIG_FILE): config = LintConfig.load_from_file(DEFAULT_CONFIG_FILE) except LintConfigError as e: click.echo("Error during config file parsing: {0}".format(str(e))) ctx.exit(CONFIG_ERROR_CODE) return config
def test_load_config_from_file(self): # regular config file load, no problems config = LintConfig.load_from_file(self.get_sample_path("config/gitlintconfig")) # Do some assertions on the config self.assertEqual(config.verbosity, 1) self.assertEqual(config.get_rule_option('title-max-length', 'line-length'), 20) self.assertEqual(config.get_rule_option('body-max-line-length', 'line-length'), 30) self.assertIsNone(config.get_rule('title-trailing-whitespace'))
def test_load_config_from_file(self): # regular config file load, no problems config = LintConfig.load_from_file( self.get_sample_path("config/gitlintconfig")) # Do some assertions on the config self.assertEqual(config.verbosity, 1) self.assertEqual( config.get_rule_option('title-max-length', 'line-length'), 20) self.assertEqual( config.get_rule_option('body-max-line-length', 'line-length'), 30) self.assertIsNone(config.get_rule('title-trailing-whitespace'))
def get_lint_config(config_path=None): """ Tries loading the config from the given path. If no path is specified, the default config path is tried, and if that is not specified, we the default config is returned. """ # config path specified config = None try: if config_path: config = LintConfig.load_from_file(config_path) elif os.path.exists(DEFAULT_CONFIG_FILE): config = LintConfig.load_from_file(DEFAULT_CONFIG_FILE) except LintConfigError as e: click.echo("Error during config file parsing: {0}".format(e.message)) exit(CONFIG_ERROR_CODE) # return 10000 on config error # no config file if config: click.echo("Using config from {0}".format(config.config_path)) else: config = LintConfig() return config
def test_load_config_from_file(self): # regular config file load, no problems config = LintConfig.load_from_file(self.get_sample_path("config/gitlintconfig")) # Do some assertions on the config self.assertEqual(config.verbosity, 1) self.assertFalse(config.ignore_merge_commits) # ignored rules expected_ignored_rules = set([rules.BodyTrailingWhitespace, rules.TitleTrailingWhitespace]) active_rule_classes = set(type(rule) for rule in config.rules) self.assertSetEqual(set(config.default_rule_classes) - expected_ignored_rules, active_rule_classes) self.assertEqual(config.get_rule_option('title-max-length', 'line-length'), 20) self.assertEqual(config.get_rule_option('body-max-line-length', 'line-length'), 30) self.assertIsNone(config.get_rule('title-trailing-whitespace'))
def test_load_config_from_file(self): # regular config file load, no problems config = LintConfig.load_from_file(self.get_sample_path("config/gitlintconfig")) # Do some assertions on the config self.assertEqual(config.verbosity, 1) self.assertTrue(config.debug) self.assertFalse(config.ignore_merge_commits) # ignored rules expected_ignored_rules = set([rules.BodyTrailingWhitespace, rules.TitleTrailingWhitespace]) active_rule_classes = set(type(rule) for rule in config.rules) self.assertSetEqual(set(config.default_rule_classes) - expected_ignored_rules, active_rule_classes) self.assertEqual(config.get_rule_option('title-max-length', 'line-length'), 20) self.assertEqual(config.get_rule_option('body-max-line-length', 'line-length'), 30) self.assertIsNone(config.get_rule('title-trailing-whitespace'))