fix: molecule-tests matrix runner-index renders as empty for 0

This commit is contained in:
emil
2026-06-22 02:15:06 +00:00
parent 69089f6d2c
commit 8c16703106
3 changed files with 17 additions and 10 deletions
+3 -1
View File
@@ -142,7 +142,9 @@ jobs:
run: | run: |
set -euo pipefail set -euo pipefail
. .venv/bin/activate . .venv/bin/activate
PAIRS=$(python3 scripts/ci/distribute_molecule.py --runner-index ${{ matrix.runner-index }} --max-runners ${{ needs.discover-runners.outputs.runner-count }}) RUNNER_INDEX="${{ matrix.runner-index }}"
MAX_RUNNERS="${{ needs.discover-runners.outputs.runner-count }}"
PAIRS=$(python3 scripts/ci/distribute_molecule.py --runner-index "$RUNNER_INDEX" --max-runners "$MAX_RUNNERS")
echo "Assigned pairs: $PAIRS" echo "Assigned pairs: $PAIRS"
echo "TEST_PAIRS=$PAIRS" >> $GITHUB_ENV echo "TEST_PAIRS=$PAIRS" >> $GITHUB_ENV
- name: Run molecule tests - name: Run molecule tests
+8 -3
View File
@@ -111,9 +111,14 @@ def get_runner_count(api_url: str, token: str, owner: str, repo: str) -> int:
return DEFAULT_MAX_RUNNERS return DEFAULT_MAX_RUNNERS
def generate_indices(count: int) -> list[int]: def generate_indices(count: int) -> list[str]:
"""Generate a list of runner indices [0, 1, ..., count-1].""" """Generate a list of runner indices ["0", "1", ..., "N-1"].
return list(range(count))
Uses strings instead of ints because Gitea Actions renders
integer 0 as empty in ${{ matrix.runner-index }} expressions,
causing --runner-index to be passed without a value.
"""
return [str(i) for i in range(count)]
@click.command() @click.command()
+6 -6
View File
@@ -19,13 +19,13 @@ class TestGenerateIndices:
assert generate_indices(0) == [] assert generate_indices(0) == []
def test_one(self) -> None: def test_one(self) -> None:
assert generate_indices(1) == [0] assert generate_indices(1) == ["0"]
def test_three(self) -> None: def test_three(self) -> None:
assert generate_indices(3) == [0, 1, 2] assert generate_indices(3) == ["0", "1", "2"]
def test_five(self) -> None: def test_five(self) -> None:
assert generate_indices(5) == [0, 1, 2, 3, 4] assert generate_indices(5) == ["0", "1", "2", "3", "4"]
class TestQueryRunners: class TestQueryRunners:
@@ -166,7 +166,7 @@ class TestMain:
result = runner.invoke(main, []) result = runner.invoke(main, [])
assert result.exit_code == 0 assert result.exit_code == 0
assert "count=3" in result.output assert "count=3" in result.output
assert "indices=[0, 1, 2]" in result.output assert 'indices=["0", "1", "2"]' in result.output
@patch("scripts.ci.discover_runners.get_runner_count", return_value=5) @patch("scripts.ci.discover_runners.get_runner_count", return_value=5)
def test_count_only(self, mock_count: MagicMock) -> None: def test_count_only(self, mock_count: MagicMock) -> None:
@@ -180,11 +180,11 @@ class TestMain:
runner = CliRunner() runner = CliRunner()
result = runner.invoke(main, ["--indices"]) result = runner.invoke(main, ["--indices"])
assert result.exit_code == 0 assert result.exit_code == 0
assert json.loads(result.output.strip()) == [0, 1, 2, 3] assert json.loads(result.output.strip()) == ["0", "1", "2", "3"]
@patch("scripts.ci.discover_runners.get_runner_count", return_value=1) @patch("scripts.ci.discover_runners.get_runner_count", return_value=1)
def test_single_runner(self, mock_count: MagicMock) -> None: def test_single_runner(self, mock_count: MagicMock) -> None:
runner = CliRunner() runner = CliRunner()
result = runner.invoke(main, ["--indices"]) result = runner.invoke(main, ["--indices"])
assert result.exit_code == 0 assert result.exit_code == 0
assert json.loads(result.output.strip()) == [0] assert json.loads(result.output.strip()) == ["0"]