diff options
Diffstat (limited to 'molecule/default/tests')
| -rw-r--r-- | molecule/default/tests/test_lineinfile_strategy.py | 38 | ||||
| -rw-r--r-- | molecule/default/tests/test_yaml_strategy.py | 51 |
2 files changed, 89 insertions, 0 deletions
diff --git a/molecule/default/tests/test_lineinfile_strategy.py b/molecule/default/tests/test_lineinfile_strategy.py index b75a656..770459e 100644 --- a/molecule/default/tests/test_lineinfile_strategy.py +++ b/molecule/default/tests/test_lineinfile_strategy.py @@ -92,3 +92,41 @@ def test_lineinfile_hooks_still_run(host): assert host.file("/opt/hook1").exists assert host.file("/opt/hook2").content_string == "hello\nhello\nhello\nhello\n" + + +def test_lineinfile_exporter_defaults_overrides_and_duplicates(host): + assert read_yaml_file(host, "/opt/lineinfile_defaults.yml") == [ + "inherited-default", + "appended-default", + ] + assert read_yaml_file(host, "/opt/lineinfile_no_id.yml") == ["no-id"] + assert read_yaml_file(host, "/opt/lineinfile_override.yml") == ["item-override"] + assert read_yaml_file(host, "/opt/lineinfile-prefix/default-prefix.yml") == [ + "prefixed-default" + ] + + +def test_lineinfile_skip_default_exporters(host): + assert read_file(host, "/opt/lineinfile_skipped.yml").content_string == "" + + +def test_handler_run_once_and_per_host_modes(host): + for application in ["application", "application2", "application3", "application4"]: + assert host.file(f"/tmp/command-handler-{application}").exists + + assert host.file("/tmp/shell-handler-run-once").exists + + +def test_disabled_handlers_do_not_run(host): + assert not host.file("/tmp/disabled-command-handler").exists + assert not host.file("/tmp/disabled-shell-handler").exists + + +def test_future_lineinfile_removal_fixture_is_untouched(host): + assert read_yaml_file(host, "/opt/lineinfile_state_removal.yml") == [ + { + "labels": {"job": "shared"}, + "targets": ["keep:9100", "remove:9100"], + }, + {"labels": {"job": "remove_last"}, "targets": ["remove:9200"]}, + ] diff --git a/molecule/default/tests/test_yaml_strategy.py b/molecule/default/tests/test_yaml_strategy.py index 7ba834e..c3d0dd9 100644 --- a/molecule/default/tests/test_yaml_strategy.py +++ b/molecule/default/tests/test_yaml_strategy.py @@ -92,6 +92,12 @@ def test_yaml_output_remains_parseable_after_all_operations(host): "/opt/yaml_branch_matrix.yml", "/opt/yaml_missing_labeled.yml", "/opt/yaml_missing_unlabeled.yml", + "/opt/yaml_defaults.yml", + "/opt/yaml_no_id.yml", + "/opt/yaml_override.yml", + "/opt/yaml_null.yml", + "/opt/yaml-prefix/default-prefix.yml", + "/opt/yaml_state_removal.yml", ]: assert read_yaml_file(host, path) is not None @@ -154,3 +160,48 @@ def test_yaml_branch_matrix_creates_missing_file_groups_for_labeled_and_unlabele assert read_yaml_file(host, "/opt/yaml_missing_unlabeled.yml") == [ {"targets": ["application4:9601"]} ] + + +def test_yaml_exporter_defaults_merge_labels_and_deduplicate(host): + groups = read_yaml_file(host, "/opt/yaml_defaults.yml") + + assert get_group_by_labels( + groups, {"job": "inherited", "environment": "staging"} + )["targets"] == ["application:9700"] + assert get_group_by_labels(groups, {"job": "default"})["targets"] == [ + "appended-default:9701" + ] + + +def test_yaml_exporter_without_id_and_item_overrides(host): + assert read_yaml_file(host, "/opt/yaml_no_id.yml") == [ + {"labels": {"job": "no-id"}, "targets": ["no-id:9700"]} + ] + assert read_yaml_file(host, "/opt/yaml_override.yml") == [ + {"labels": {"job": "override"}, "targets": ["item-override:9700"]} + ] + assert read_yaml_file(host, "/opt/yaml-prefix/default-prefix.yml") == [ + {"labels": {"job": "prefixed"}, "targets": ["prefixed-default:9702"]} + ] + + +def test_yaml_null_document_is_initialized(host): + assert read_yaml_file(host, "/opt/yaml_null.yml") == [ + {"targets": ["from-null:9700"]} + ] + + +def test_yaml_skip_default_exporters(host): + target = host.file("/opt/yaml_skipped.yml") + assert target.exists + assert target.content_string == "" + + +def test_future_yaml_removal_fixture_is_untouched(host): + assert read_yaml_file(host, "/opt/yaml_state_removal.yml") == [ + { + "labels": {"job": "shared"}, + "targets": ["keep:9100", "remove:9100"], + }, + {"labels": {"job": "remove_last"}, "targets": ["remove:9200"]}, + ] |