diff --git a/ansibleplaybookgrapher/parser.py b/ansibleplaybookgrapher/parser.py index 6a8779b5..42921f71 100644 --- a/ansibleplaybookgrapher/parser.py +++ b/ansibleplaybookgrapher/parser.py @@ -353,6 +353,12 @@ def _include_tasks_in_blocks( # See :func:`~ansible.playbook.included_file.IncludedFile.process_include_results` from line 155 display.v(f"An 'include_role' found: '{task_or_block.get_name()}'") + if not task_or_block.evaluate_tags( + only_tags=self.tags, skip_tags=self.skip_tags, all_vars=task_vars + ): + display.vv(f"The include_role '{task_or_block.get_name()}' is skipped due to the tags.") + continue # Go to the next task + # Here we are using the role name instead of the task name to keep the same behavior as a # traditional role if self.group_roles_by_name: diff --git a/tests/fixtures/play-hiding.yml b/tests/fixtures/play-hiding.yml index eaa3dc5f..66a07b4e 100644 --- a/tests/fixtures/play-hiding.yml +++ b/tests/fixtures/play-hiding.yml @@ -15,8 +15,6 @@ - name: Include role include_role: name: fake_role - apply: - tags: include-role - hosts: host3 # This should not be displayed when --hide-empty-plays is set diff --git a/tests/test_graphviz_renderer.py b/tests/test_graphviz_renderer.py index 8914c0ac..9594d35e 100644 --- a/tests/test_graphviz_renderer.py +++ b/tests/test_graphviz_renderer.py @@ -561,7 +561,7 @@ def test_hiding_plays(request): svg_path=svg_path, playbook_paths=playbook_paths, plays_number=2, - roles_number=1, + roles_number=2, tasks_number=1, ) @@ -610,6 +610,30 @@ def test_hiding_plays_without_roles(request): """ Test hiding plays with the flag --hide-plays-without-roles + :param request: + :return: + """ + svg_path, playbook_paths = run_grapher( + ["play-hiding.yml"], + output_filename=request.node.name, + additional_args=[ + "--hide-plays-without-roles", + ], + ) + + _common_tests( + svg_path=svg_path, + playbook_paths=playbook_paths, + plays_number=2, + roles_number=2, + tasks_number=1, + ) + + +def test_hiding_plays_without_roles_with_tags_filtering(request): + """ + Test hiding plays with the flag --hide-plays-without-roles + Also apply some tags filter :param request: :return: @@ -620,7 +644,7 @@ def test_hiding_plays_without_roles(request): additional_args=[ "--hide-plays-without-roles", "--tags", - "play1,include-role", + "play1", "--include-role-tasks", ], ) @@ -628,7 +652,7 @@ def test_hiding_plays_without_roles(request): _common_tests( svg_path=svg_path, playbook_paths=playbook_paths, - plays_number=2, - roles_number=2, - tasks_number=8, + plays_number=1, + roles_number=1, + tasks_number=5, )