def test_files_not_scanned_twice(default_rules_collection) -> None: checked_files: Set[Lintable] = set() filename = os.path.abspath('examples/playbooks/common-include-1.yml') runner = Runner( filename, rules=default_rules_collection, verbosity=0, checked_files=checked_files, ) run1 = runner.run() assert len(runner.checked_files) == 2 assert len(run1) == 1 filename = os.path.abspath('examples/playbooks/common-include-2.yml') runner = Runner( filename, rules=default_rules_collection, verbosity=0, checked_files=checked_files, ) run2 = runner.run() assert len(runner.checked_files) == 3 # this second run should return 0 because the included filed was already # processed and added to checked_files, which acts like a bypass list. assert len(run2) == 0
def test_file(self): collection = RulesCollection() collection.register(EmptyPassword0()) file_name = 'testResources/ansible-smell/adminbydefault.yml' good_runner = Runner(playbook=file_name, rules=collection) print(good_runner.run()) print(len(good_runner.run())) assert 0 == len(good_runner.run())
def test_file(self): collection = RulesCollection() collection.register(HardCodePassword()) file_name = 'testResources/ansible-smell/hardcodepassword.yml' good_runner = Runner(playbook=file_name, rules=collection) print(good_runner.run()) print(type(good_runner.run())) print(len(good_runner.run())) assert 0 == len(good_runner.run())
def test_file(self): collection = RulesCollection() collection.register(InvalidIPaddressbinding()) file_name = 'testResources/ansible-smell/invalidIPaddressbinding.yml' good_runner = Runner(playbook=file_name, rules=collection) result = good_runner.run() print(result) print(type(result)) print(len(result)) assert 0 == len(good_runner.run())
def test_cases_that_do_not_report(runner: Runner, caplog: LogCaptureFixture) -> None: runner.run() noexist_message_count = 0 for record in caplog.records: if "Couldn't open" in str(record): noexist_message_count += 1 assert noexist_message_count == 0
def test_files_not_scanned_twice(default_rules_collection): checked_files = set() filename = os.path.abspath('test/common-include-1.yml') runner = Runner(default_rules_collection, filename, [], [], [], 0, checked_files) run1 = runner.run() filename = os.path.abspath('test/common-include-2.yml') runner = Runner(default_rules_collection, filename, [], [], [], 0, checked_files) run2 = runner.run() assert ((len(run1) + len(run2)) == 1)
def test_runner_unicode_format(default_rules_collection, formatter_cls, format_kwargs): formatter = formatter_cls(os.getcwd(), True) runner = Runner(default_rules_collection, 'test/unicode.yml', [], [], []) matches = runner.run() formatter.format(matches[0], **format_kwargs)
def test_roles_local_content_failure_complete(default_rules_collection): """Role with local content that is not found.""" playbook_path = 'test/local-content/test-roles-failed-complete/test.yml' runner = Runner(default_rules_collection, playbook_path, [], [], []) x = runner.run() assert len(x) == 1 assert "couldn't resolve module" in x[0].message
def test_negative_with_tag(self) -> None: with_tag = 'trailing-spaces' bad_runner = Runner(self.file, rules=self.collection, tags=frozenset([with_tag])) errs = bad_runner.run() self.assertGreater(len(errs), 0)
def test_negative_with_id(self) -> None: with_id = 'yaml' bad_runner = Runner(self.file, rules=self.collection, tags=frozenset([with_id])) errs = bad_runner.run() self.assertGreater(len(errs), 0)
def test_file(self): collection = RulesCollection() collection.register(HardCodedSecrets()) file_name = 'testResources/ansible-smell/create.yml' good_runner = Runner(rules=collection, playbook=file_name) # print(good_runner.run()) assert 1 == len(good_runner.run())
def test_positive_skip_id(self) -> None: skip_id = 'YAML' good_runner = Runner( rules=self.collection, lintable=self.file, skip_list=frozenset([skip_id])) self.assertEqual([], good_runner.run())
def test_import_tasks_with_malformed_import(runner: Runner) -> None: results = runner.run() passed = False for result in results: if result.rule.id == 'syntax-check': passed = True assert passed, results
def test_negative_with_tag(self) -> None: with_tag = 'formatting' bad_runner = Runner(rules=self.collection, lintable=self.file, tags=frozenset([with_tag])) errs = bad_runner.run() self.assertGreater(len(errs), 0)
def test_positive_skip_tag(self) -> None: skip_tag = 'formatting' good_runner = Runner( rules=self.collection, lintable=self.file, skip_list=frozenset([skip_tag])) self.assertEqual([], good_runner.run())
def test_file(self): collection = RulesCollection() collection.register(AdminByDefault()) file_name = 'testResources/ansible-smell/adminbydefault.yml' good_runner = Runner(playbook=file_name, rules=collection) # print(good_runner.run()) assert 3 == len(good_runner.run())
def test_roles_local_content(default_rules_collection): """Assures local content in roles is found.""" playbook_path = 'test/local-content/test-roles-success/test.yml' runner = Runner(default_rules_collection, playbook_path, [], [], []) results = runner.run() assert len(runner.playbooks) == 4 assert len(results) == 0
def test_role_name(test_rules_collection, playbook_path, messages): """Lint a playbook and compare the expected messages with the actual messages.""" runner = Runner(playbook_path, rules=test_rules_collection) results = runner.run() assert len(results) == len(messages) results_text = str(results) for message in messages: assert message in results_text
def test_roles_local_content_failure(default_rules_collection): """Assures local content in roles is found, even if Ansible itself has trouble.""" playbook_path = 'test/local-content/test-roles-failed/test.yml' runner = Runner(default_rules_collection, playbook_path, [], [], []) results = runner.run() assert len(runner.playbooks) == 4 assert len(results) == 0
def test_runner(default_rules_collection, playbook, exclude, length) -> None: runner = Runner(playbook, rules=default_rules_collection, exclude_paths=exclude) matches = runner.run() assert len(matches) == length
def test_local_collection(default_rules_collection): """Assures local collections are found.""" playbook_path = 'test/local-content/test-collection.yml' runner = Runner(default_rules_collection, playbook_path, [], [], []) results = runner.run() assert len(runner.lintables) == 1 assert len(results) == 0
def test_file(self): collection = RulesCollection() collection.register(DepreciatedStatementUsage()) file_name = 'testResources/ansible-smell/adminbydefault.yml' good_runner = Runner(playbook=file_name, rules=collection) print(good_runner.run())
def test_included_tasks(default_rules_collection, filename, file_count, match_count): """Check if number of loaded files is correct.""" lintable = Lintable(filename) runner = Runner(default_rules_collection, lintable, [], [], []) result = runner.run() assert len(runner.playbooks) == file_count assert len(result) == match_count
def test_files_not_scanned_twice(default_rules_collection) -> None: checked_files: Set[str] = set() filename = os.path.abspath('test/common-include-1.yml') runner = Runner(rules=default_rules_collection, lintable=filename, verbosity=0, checked_files=checked_files) run1 = runner.run() filename = os.path.abspath('test/common-include-2.yml') runner = Runner(rules=default_rules_collection, lintable=filename, verbosity=0, checked_files=checked_files) run2 = runner.run() assert (len(run1) + len(run2)) == 3
def test_runner_unicode_format(default_rules_collection, formatter_cls) -> None: formatter = formatter_cls(os.getcwd(), display_relative_path=True) runner = Runner( rules=default_rules_collection, lintable=Lintable('test/unicode.yml', "playbook")) matches = runner.run() formatter.format(matches[0])
def test_runner_exclude_paths(default_rules_collection) -> None: """Test that exclude paths do work.""" runner = Runner( 'examples/playbooks/example.yml', rules=default_rules_collection, exclude_paths=['examples/'], ) matches = runner.run() assert len(matches) == 0
def test_included_tasks( default_rules_collection: RulesCollection, filename: str, file_count: int, match_count: int, ) -> None: """Check if number of loaded files is correct.""" lintable = Lintable(filename) runner = Runner(lintable, rules=default_rules_collection) result = runner.run() assert len(runner.lintables) == file_count assert len(result) == match_count
def test_runner_unicode_format( default_rules_collection: RulesCollection, formatter_cls: Type[formatters.BaseFormatter[Any]], ) -> None: formatter = formatter_cls(os.getcwd(), display_relative_path=True) runner = Runner( Lintable('examples/playbooks/unicode.yml', "playbook"), rules=default_rules_collection, ) matches = runner.run() formatter.format(matches[0])
def test_task_hook_import_playbook(default_rules_collection): """Assures import_playbook includes are recognized.""" playbook_path = 'test/playbook-import/playbook_parent.yml' runner = Runner(default_rules_collection, playbook_path, [], [], []) results = runner.run() results_text = str(results) assert len(runner.playbooks) == 2 assert len(results) == 2 # Assures we detected the issues from imported playbook assert 'Commands should not change things' in results_text assert '502' in results_text assert 'All tasks should be named' in results_text
def test_runner( default_rules_collection: RulesCollection, playbook: str, exclude: List[str], length: int, ) -> None: runner = Runner(playbook, rules=default_rules_collection, exclude_paths=exclude) matches = runner.run() assert len(matches) == length