class TestModeQuotationRule(unittest.TestCase): collection = RulesCollection() def setUp(self): self.collection.register(FileModeQuotationRule()) self.runner = RunFromText(self.collection) def test_statement_positive(self): results = self.runner.run_state(GOOD_MODE_QUOTATION_LINE) self.assertEqual(0, len(results)) def test_statement_negative(self): results = self.runner.run_state(BAD_MODE_QUOTATION_LINE) self.assertEqual(3, len(results)) def test_missing_quotes(self): results = self.runner.run_state(MODE_MISSING_QUOTATION_LINE) self.assertEqual(3, len(results)) def test_network_mode(self): """ Ensure the mode argument in the network.managed state gets ignored. See related GitHub issue: https://github.com/warpnet/salt-lint/issues/255 """ results = self.runner.run_state(NETWORK_MANAGED_MODE) self.assertEqual(0, len(results))
class TestJinjaVariableHasSpaces(unittest.TestCase): collection = RulesCollection() def setUp(self): self.collection.register(JinjaVariableHasSpacesRule()) self.runner = RunFromText(self.collection) def test_statement_positive(self): results = self.runner.run_state(GOOD_VARIABLE_LINE) self.assertEqual(0, len(results)) def test_statement_jinja_raw_positive(self): """Check if Jinja looking variables between raw-blocks are ignored.""" results = self.runner.run_state(GOOD_VARIABLE_LINE_RAW) self.assertEqual(0, len(results)) def test_statement_jinja_raw_negative(self): """Check if Jinja looking variables between raw-blocks are ignored.""" results = self.runner.run_state(BAD_VARIABLE_LINE_RAW) # Check if the correct number of matches are found self.assertEqual(1, len(results)) # Check if the match occurred on the correct line self.assertEqual(results[0].linenumber, 5) def test_statement_negative(self): results = self.runner.run_state(BAD_VARIABLE_LINE) self.assertEqual(1, len(results)) def test_double_quoted_integer(self): results = self.runner.run_state(DOUBLE_QUOTED_INTEGER_IS_VALID) self.assertEqual(0, len(results)) def test_double_quoted_integer_trailing_space_invalid(self): results = self.runner.run_state(DOUBLE_QUOTED_INTEGER_TRAILING_SPACE_IS_INVALID) self.assertEqual(1, len(results)) def test_double_quoted_integer_leading_space_invalid(self): results = self.runner.run_state(DOUBLE_QUOTED_INTEGER_LEADING_SPACE_IS_INVALID) self.assertEqual(1, len(results)) def test_variable_bad_ends_with_integer(self): results = self.runner.run_state(BAD_VARIABLE_ENDING_IN_INTEGER) self.assertEqual(1, len(results)) def test_variable_bad_ends_with_integer_right(self): results = self.runner.run_state(BAD_VARIABLE_ENDING_IN_INTEGER_RIGHT) self.assertEqual(1, len(results)) def test_nested_literal_braces(self): """ Check if Jinja variables inside nested literal braces are identified correctly. See related GitHub issue: https://github.com/warpnet/salt-lint/issues/257 """ results = self.runner.run_state(NESTED_LITERAL_BRACES) self.assertEqual(0, len(results))
class TestTypoOnchangesRule(unittest.TestCase): collection = RulesCollection() def setUp(self): self.collection.register(TypoOnchangesRule()) self.runner = RunFromText(self.collection) def test_statement_positive(self): results = self.runner.run_state(GOOD_ONCHANGES_LINE) self.assertEqual(0, len(results)) def test_statement_negative(self): results = self.runner.run_state(BAD_ONCHANGES_LINE) self.assertEqual(3, len(results))
class TestJinjaPillarGrainsGetFormatRule(unittest.TestCase): collection = RulesCollection() def setUp(self): self.collection.register(JinjaPillarGrainsGetFormatRule()) self.runner = RunFromText(self.collection) def test_statement_positive(self): results = self.runner.run_state(GOOD_STATEMENT_LINE) self.assertEqual(0, len(results)) def test_statement_negative(self): results = self.runner.run_state(BAD_STATEMENT_LINE) self.assertEqual(2, len(results))
class TestLineTooLongRule(unittest.TestCase): collection = RulesCollection() def setUp(self): self.collection.register(JinjaVariableHasSpacesRule()) self.runner = RunFromText(self.collection) def test_statement_positive(self): results = self.runner.run_state(GOOD_VARIABLE_LINE) self.assertEqual(0, len(results)) def test_statement_negative(self): results = self.runner.run_state(BAD_VARIABLE_LINE) self.assertEqual(1, len(results))
class TestModeQuotationRule(unittest.TestCase): collection = RulesCollection() def setUp(self): self.collection.register(FileModeQuotationRule()) self.runner = RunFromText(self.collection) def test_statement_positive(self): results = self.runner.run_state(GOOD_MODE_QUOTATION_LINE) self.assertEqual(0, len(results)) def test_statement_negative(self): results = self.runner.run_state(BAD_MODE_QUOTATION_LINE) self.assertEqual(3, len(results))
class TestJinjaCommentHasSpaces(unittest.TestCase): collection = RulesCollection() def setUp(self): self.collection.register(JinjaCommentHasSpacesRule()) self.runner = RunFromText(self.collection) def test_comment_positive(self): results = self.runner.run_state(GOOD_COMMENT_LINE) self.assertEqual(0, len(results)) def test_comment_negative(self): results = self.runner.run_state(BAD_COMMENT_LINE) self.assertEqual(1, len(results))
class TestNoIrregularSpacesRule(unittest.TestCase): collection = RulesCollection() collection.register(NoIrregularSpacesRule()) def setUp(self): self.runner = RunFromText(self.collection) def test_with_irregular_spaces(self): for irregular in NoIrregularSpacesRule.irregular_spaces: results = self.runner.run_state(unicode(LINE).format(space=irregular)) self.assertEqual(1, len(results)) def test_without_irregular_spaces(self): results = self.runner.run_state(LINE.format(space=" ")) self.assertEqual(0, len(results))
def test_statement_negative(self): runner = RunFromText(self.collection) results = runner.run_state(BAD_QUIET_STATE) self.assertEqual(2, len(results)) # Check line numbers of the results self.assertEqual(9, results[0].linenumber) self.assertEqual(14, results[1].linenumber)
class TestNoTabsRule(unittest.TestCase): collection = RulesCollection() collection.register(NoTabsRule()) def setUp(self): self.runner = RunFromText(self.collection) def test_with_tabs(self): results = self.runner.run_state(LINE_WITH_TABS) self.assertEqual(2, len(results)) def test_with_spaces(self): results = self.runner.run_state(LINE_WITH_SPACES) self.assertEqual(0, len(results)) def test_mixed_tab_space(self): results = self.runner.run_state(LINE_MIXED_TAB_SPACE) self.assertEqual(1, len(results))
class TestLineTooLongRule(unittest.TestCase): collection = RulesCollection() collection.register(LineTooLongRule()) def setUp(self): self.runner = RunFromText(self.collection) def test_long_line(self): results = self.runner.run_state(LONG_LINE) self.assertEqual(1, len(results))
class TestTrailingWhitespaceRule(unittest.TestCase): collection = RulesCollection() collection.register(TrailingWhitespaceRule()) def setUp(self): self.runner = RunFromText(self.collection) def test_trailing_whitespace(self): results = self.runner.run_state(LINE_AND_WHITESPACE) print(results) self.assertEqual(1, len(results))
class TestJinjaVariableHasSpaces(unittest.TestCase): collection = RulesCollection() def setUp(self): self.collection.register(JinjaVariableHasSpacesRule()) self.runner = RunFromText(self.collection) def test_statement_positive(self): results = self.runner.run_state(GOOD_VARIABLE_LINE) self.assertEqual(0, len(results)) def test_statement_negative(self): results = self.runner.run_state(BAD_VARIABLE_LINE) self.assertEqual(1, len(results)) def test_double_quoted_integer(self): results = self.runner.run_state(DOUBLE_QUOTED_INTEGER_IS_VALID) self.assertEqual(0, len(results)) def test_double_quoted_integer_trailing_space_invalid(self): results = self.runner.run_state( DOUBLE_QUOTED_INTEGER_TRAILING_SPACE_IS_INVALID) self.assertEqual(1, len(results)) def test_double_quoted_integer_leading_space_invalid(self): results = self.runner.run_state( DOUBLE_QUOTED_INTEGER_LEADING_SPACE_IS_INVALID) self.assertEqual(1, len(results)) def test_variable_bad_ends_with_integer(self): results = self.runner.run_state(BAD_VARIABLE_ENDING_IN_INTEGER) self.assertEqual(1, len(results)) def test_variable_bad_ends_with_integer_right(self): results = self.runner.run_state(BAD_VARIABLE_ENDING_IN_INTEGER_RIGHT) self.assertEqual(1, len(results))
def test_skip_rule(self): runner = RunFromText(self.collection) results = runner.run_state(LINE_SKIP) self.assertEqual(0, len(results))
def test_statement_negative(self): runner = RunFromText(self.collection) results = runner.run_state(BAD_CMD_STATE) self.assertEqual(1, len(results))
def test_statement_positive(self): runner = RunFromText(self.collection) results = runner.run_state(GOOD_CMD_STATE) self.assertEqual(0, len(results))
def test_statement_negative(self): runner = RunFromText(self.collection) results = runner.run_state(BAD_NUMBER_LINE) self.assertEqual(2, len(results))
def test_statement_negative(self): runner = RunFromText(self.collection) results = runner.run_state(BAD_MODE_LEADING_ZERO_LINE) self.assertEqual(3, len(results))
def test_skip_multiple_rules(self): runner = RunFromText(self.collection) results = runner.run_state(LINE_SKIP_MULTIPLE) self.assertEqual(0, len(results))