This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 1d038528e87 Allow skipping the git fetch when preparing provider
distributions (#71304)
1d038528e87 is described below
commit 1d038528e871935781022adbfd2e2edd9169014f
Author: Jarek Potiuk <[email protected]>
AuthorDate: Wed Aug 19 16:10:39 2026 +0200
Allow skipping the git fetch when preparing provider distributions (#71304)
Building a wave in batches re-fetches the full history and every tag from
apache/airflow on each invocation. That is slow, and on an unreliable
network it is the step most likely to fail and take a whole batch of
providers down with it - even though the tags fetched moments earlier are
still current. `classify-provider-changes` and
`prepare-provider-documentation` already offer this escape hatch; the
tag check itself stays on.
---
...e-management_prepare-provider-distributions.svg | 50 ++++++++++++++--------
...e-management_prepare-provider-distributions.txt | 2 +-
.../commands/release_management_commands.py | 11 ++++-
.../commands/release_management_commands_config.py | 1 +
.../tests/test_release_management_commands.py | 47 ++++++++++++++++++++
5 files changed, 92 insertions(+), 19 deletions(-)
diff --git
a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
index 27a1d92de9a..eda0dd2e315 100644
---
a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
+++
b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1123.6"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1221.1999999999998"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath
id="breeze-release-management-prepare-provider-distributions-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1072.6" />
+ <rect x="0" y="0" width="1463.0" height="1170.1999999999998" />
</clipPath>
<clipPath
id="breeze-release-management-prepare-provider-distributions-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -174,9 +174,21 @@
<clipPath
id="breeze-release-management-prepare-provider-distributions-line-42">
<rect x="0" y="1026.3" width="1464" height="24.65"/>
</clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-distributions-line-43">
+ <rect x="0" y="1050.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-distributions-line-44">
+ <rect x="0" y="1075.1" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-distributions-line-45">
+ <rect x="0" y="1099.5" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath
id="breeze-release-management-prepare-provider-distributions-line-46">
+ <rect x="0" y="1123.9" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1121.6" rx="8"/><text
class="breeze-release-management-prepare-provider-distributions-title"
fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: release-management prepare-provider-distributions</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1219.2" rx="8"/><text
class="breeze-release-management-prepare-provider-distributions-title"
fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: release-management prepare-provider-distributions</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -216,20 +228,24 @@
</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="678.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-27)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="678.8" textLength="378.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-27)">--distributions-list-file      </text><text
class="breeze-rel [...]
</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="703.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-28)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="703.2" textLength="378.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-28)">--skip-deleting-generated-files</text><text
class="breeze-release-management-prepare-provid [...]
</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="727.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-29)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="727.6" textLength="963.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-29)">debugging and developing changes to the build process.&
[...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="752" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-30)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="752" textLength="378.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-30)">--skip-tag-check             &
[...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="776.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-31)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="776.4" textLength="378.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-31)">--version-suffix            
[...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="800.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="800.8" textLength="963.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">.post1, .post2 etc.). Note the `.` is need in 
[...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="825.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-33)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="825.2" textLength="353.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-33)">followed with +local_version </text><text
class="breeze-release-management- [...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="849.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-34)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="849.6" textLength="378.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-34)">--distributions-list           </tex
[...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="874" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-35)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="874" textLength="963.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-35)">documentation building, and document publishing. It is an&#
[...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="898.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-36)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="898.4" textLength="963.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-36)">adding individual packages as arguments to every comman
[...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="922.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-37)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="922.8" textLength="366"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-37)">packages passed as arguments. </text><text
class="breeze-release-managem [...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="947.2" textLength="1464"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="1464"
y="947.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provid [...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="971.6" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-39)">╭─</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="24.4"
y="971.6" textLength="195.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-39)"> Common options </text><text
class="breeze-release-management-prepare-provi [...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="996" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-40)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="996" textLength="109.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-40)">--dry-run</text><text
class="breeze-release-management-prepare-provider-distributions-r5" x="15 [...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="1020.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-41)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="1020.4" textLength="109.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-41)">--verbose</text><text
class="breeze-release-management-prepare-provider-distributions-r5" [...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="1044.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-42)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="1044.8" textLength="109.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-42)">--help   </text><text
class="breeze-release-management-prepare-provider-di [...]
-</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="1069.2" textLength="1464"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-43)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="1464"
y="1069.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-prov [...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="752" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-30)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="752" textLength="378.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-30)">--skip-git-fetch             &
[...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="776.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-31)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="776.4" textLength="963.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-31)">tags against the state already in the local reposi
[...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="800.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="800.8" textLength="963.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-32)">several batches in a row - the fetch pulls th
[...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="825.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-33)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="825.2" textLength="963.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-33)">is slow and flaky on an unreliable network.  
[...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="849.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-34)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="849.6" textLength="378.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-34)">--skip-tag-check            
[...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="874" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-35)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="874" textLength="378.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-35)">--version-suffix             &
[...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="898.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-36)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="898.4" textLength="963.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-36)">.post1, .post2 etc.). Note the `.` is need in 
[...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="922.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-37)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="922.8" textLength="353.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-37)">followed with +local_version </text><text
class="breeze-release-management- [...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="947.2" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-38)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="947.2" textLength="378.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-38)">--distributions-list           </tex
[...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="971.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-39)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="971.6" textLength="963.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-39)">documentation building, and document publishing. It is 
[...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="996" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-40)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="996" textLength="963.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-40)">adding individual packages as arguments to every command.&#
[...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="1020.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-41)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="475.8"
y="1020.4" textLength="366"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-41)">packages passed as arguments. </text><text
class="breeze-release-manag [...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="1044.8" textLength="1464"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-42)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="1464"
y="1044.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-prov [...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="1069.2" textLength="24.4"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-43)">╭─</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="24.4"
y="1069.2" textLength="195.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-43)"> Common options </text><text
class="breeze-release-management-prepare-pro [...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="1093.6" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-44)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="1093.6" textLength="109.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-44)">--dry-run</text><text
class="breeze-release-management-prepare-provider-distributions-r5" [...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="1118" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-45)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="1118" textLength="109.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-45)">--verbose</text><text
class="breeze-release-management-prepare-provider-distributions-r5" x=" [...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="1142.4" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-46)">│</text><text
class="breeze-release-management-prepare-provider-distributions-r4" x="24.4"
y="1142.4" textLength="109.8"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-46)">--help   </text><text
class="breeze-release-management-prepare-provider-di [...]
+</text><text
class="breeze-release-management-prepare-provider-distributions-r6" x="0"
y="1166.8" textLength="1464"
clip-path="url(#breeze-release-management-prepare-provider-distributions-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-release-management-prepare-provider-distributions-r1" x="1464"
y="1166.8" textLength="12.2"
clip-path="url(#breeze-release-management-prepare-prov [...]
</text>
</g>
</g>
diff --git
a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
index f054c03806e..f462d0ecff8 100644
---
a/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
+++
b/dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
@@ -1 +1 @@
-a27c1726f5902e5fdb501ecdee226476
+4b8e22ad991a4fed63956c9563f2fb30
diff --git
a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index 311f5d886eb..cd97b725104 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -1253,6 +1253,14 @@ def _build_provider_distributions(
is_flag=True,
help="Skip checking if the tag already exists in the remote repository",
)
[email protected](
+ "--skip-git-fetch",
+ default=False,
+ is_flag=True,
+ help="Skip recreating and fetching the 'apache-https-for-providers'
remote, and check tags against "
+ "the state already in the local repository. Useful when building several
batches in a row - the "
+ "fetch pulls the full history and all tags, which is slow and flaky on an
unreliable network.",
+)
@click.option(
"--skip-deleting-generated-files",
default=False,
@@ -1291,6 +1299,7 @@ def prepare_provider_distributions(
distributions_list_file: IO | None,
provider_distributions: tuple[str, ...],
skip_deleting_generated_files: bool,
+ skip_git_fetch: bool,
skip_tag_check: bool,
version_suffix: str,
):
@@ -1325,7 +1334,7 @@ def prepare_provider_distributions(
include_removed=include_removed_providers,
include_not_ready=include_not_ready_providers,
)
- if not skip_tag_check and not is_local_package_version(version_suffix):
+ if not skip_tag_check and not is_local_package_version(version_suffix) and
not skip_git_fetch:
run_command(["git", "remote", "rm", "apache-https-for-providers"],
check=False, stderr=DEVNULL)
make_sure_remote_apache_exists_and_fetch(github_repository=github_repository)
success_packages = []
diff --git
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
index ac59513cdfb..fdca9db46e6 100644
---
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
+++
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
@@ -253,6 +253,7 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str
| list[str]]]] = {
"--distribution-format",
"--distributions-list-file",
"--skip-deleting-generated-files",
+ "--skip-git-fetch",
"--skip-tag-check",
"--version-suffix",
"--distributions-list",
diff --git a/dev/breeze/tests/test_release_management_commands.py
b/dev/breeze/tests/test_release_management_commands.py
index 0e0d3d64843..2be5223e302 100644
--- a/dev/breeze/tests/test_release_management_commands.py
+++ b/dev/breeze/tests/test_release_management_commands.py
@@ -333,3 +333,50 @@ def
test_get_package_version_possibly_from_stable_txt_for_ts_sdk(
)
def test_issue_match_in_body(body: str, expected: list[int]):
assert [int(m.group(1)) for m in ISSUE_MATCH_IN_BODY.finditer(body)] ==
expected
+
+
[email protected](
+ ("skip_git_fetch", "expected_fetches"),
+ [
+ pytest.param(False, 1, id="fetch-by-default"),
+ pytest.param(True, 0, id="skipped-when-requested"),
+ ],
+)
+def test_prepare_provider_distributions_skip_git_fetch(
+ monkeypatch, tmp_path, skip_git_fetch, expected_fetches
+):
+ fetches = []
+ monkeypatch.setattr(
+ release_management_commands,
+ "make_sure_remote_apache_exists_and_fetch",
+ lambda **kwargs: fetches.append(kwargs),
+ )
+ for name in (
+ "perform_environment_checks",
+ "check_flit_worktree_compatibility",
+ "fix_ownership_using_docker",
+ "cleanup_python_generated_files",
+ "run_command",
+ ):
+ monkeypatch.setattr(release_management_commands, name, lambda *args,
**kwargs: None)
+ monkeypatch.setattr(release_management_commands, "AIRFLOW_ROOT_PATH",
tmp_path)
+ monkeypatch.setattr(release_management_commands,
"get_packages_list_to_act_on", lambda **kwargs: [])
+
+ with pytest.raises(SystemExit) as exc_info:
+ release_management_commands.prepare_provider_distributions.callback(
+ clean_dist=False,
+ distributions_list="",
+ github_repository="apache/airflow",
+ include_not_ready_providers=False,
+ include_removed_providers=False,
+ distribution_format="wheel",
+ distributions_list_file=None,
+ provider_distributions=(),
+ skip_deleting_generated_files=False,
+ skip_git_fetch=skip_git_fetch,
+ skip_tag_check=False,
+ version_suffix="",
+ )
+
+ assert exc_info.value.code == 0
+ assert len(fetches) == expected_fetches