コード例 #1
0
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
コード例 #2
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())
コード例 #3
0
 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())
コード例 #4
0
 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())
コード例 #5
0
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
コード例 #6
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)
コード例 #7
0
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)
コード例 #8
0
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
コード例 #9
0
 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)
コード例 #10
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)
コード例 #11
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())
コード例 #12
0
 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())
コード例 #13
0
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
コード例 #14
0
 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)
コード例 #15
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())
コード例 #16
0
 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())
コード例 #17
0
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
コード例 #18
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
コード例 #19
0
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
コード例 #20
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
コード例 #21
0
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
コード例 #22
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())
コード例 #23
0
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
コード例 #24
0
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
コード例 #25
0
ファイル: TestRunner.py プロジェクト: xoxys/ansible-lint
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])
コード例 #26
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
コード例 #27
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
コード例 #28
0
ファイル: TestRunner.py プロジェクト: awcrosby/ansible-lint
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])
コード例 #29
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
コード例 #30
0
ファイル: TestRunner.py プロジェクト: awcrosby/ansible-lint
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