From 722e220ea29409b8abf1edf43026558416bab0ad Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Thu, 15 Feb 2024 07:18:35 +0100 Subject: [PATCH] Fix check for output format (#151) * Fix output-format condition. * Add successful test. * Reformat. --- .../fragments/151-generate-output-format.yml | 2 ++ src/antsibull_changelog/cli.py | 2 +- .../test_changelog_basic_collection.py | 31 +++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/151-generate-output-format.yml diff --git a/changelogs/fragments/151-generate-output-format.yml b/changelogs/fragments/151-generate-output-format.yml new file mode 100644 index 0000000..06a9bb3 --- /dev/null +++ b/changelogs/fragments/151-generate-output-format.yml @@ -0,0 +1,2 @@ +bugfixes: + - "When multiple output formats are defined and ``antsibull-changelog generate`` is used with both ``--output`` and ``--output-format``, an error was displayed that ``--output-format`` must be specified (https://github.com/ansible-community/antsibull-changelog/issues/149, https://github.com/ansible-community/antsibull-changelog/pull/151)." diff --git a/src/antsibull_changelog/cli.py b/src/antsibull_changelog/cli.py index 30e115d..64e8cf3 100644 --- a/src/antsibull_changelog/cli.py +++ b/src/antsibull_changelog/cli.py @@ -750,7 +750,7 @@ def command_generate(args: Any) -> int: # pylint: disable=too-many-locals version=changes.latest_version, force_reload=args.reload_plugins, ) - if output and len(config.output_formats) > 1: + if output and len(config.output_formats) > 1 and not output_format: print( "When an explicit output path is specified and more than one output format" " is configured, you need to explicitly specify an output format" diff --git a/tests/functional/test_changelog_basic_collection.py b/tests/functional/test_changelog_basic_collection.py index 750392b..05bed45 100644 --- a/tests/functional/test_changelog_basic_collection.py +++ b/tests/functional/test_changelog_basic_collection.py @@ -143,6 +143,37 @@ def test_changelog_release_empty( # pylint: disable=redefined-outer-name ) assert collection_changelog.diff().unchanged + assert ( + collection_changelog.run_tool( + "generate", + ["-v", "--refresh", "--output", "extract.md", "--output-format", "md"], + ) + == 0 + ) + + diff = collection_changelog.diff() + assert diff.added_dirs == [] + assert diff.added_files == ["extract.md"] + assert diff.removed_dirs == [] + assert diff.removed_files == [] + assert diff.changed_files == [] + assert diff.file_contents["extract.md"].decode("utf-8") == ( + r"""# Ansible Release Notes + +**Topics** +- v1\.0\.0 + - Release Summary + + +## v1\.0\.0 + + +### Release Summary + +This is the first proper release\. +""" + ) + assert ( collection_changelog.run_tool( "release", ["-v", "--codename", "primetime", "--date", "2020-01-03"]