1
0
mirror of https://github.com/esphome/esphome.git synced 2025-10-31 23:21:54 +00:00

Merge branch 'determine_jobs_comp_split' into determine_jobs_comp_split_test

This commit is contained in:
J. Nick Koston
2025-10-29 18:54:31 -05:00
committed by GitHub
3 changed files with 12 additions and 10 deletions

View File

@@ -537,12 +537,12 @@ jobs:
if: always()
test-build-components-split:
name: Test components batch (${{ join(matrix.components, ' ') }})
name: Test components batch (${{ matrix.components }})
runs-on: ubuntu-24.04
needs:
- common
- determine-jobs
if: github.event_name == 'pull_request' && needs.determine-jobs.outputs.component-test-batches != '[]'
if: github.event_name == 'pull_request' && fromJSON(needs.determine-jobs.outputs.component-test-count) > 0
strategy:
fail-fast: false
max-parallel: ${{ (startsWith(github.base_ref, 'beta') || startsWith(github.base_ref, 'release')) && 8 || 4 }}
@@ -555,7 +555,7 @@ jobs:
df -h
- name: List components
run: echo ${{ join(matrix.components, ' ') }}
run: echo ${{ matrix.components }}
- name: Cache apt packages
uses: awalsh128/cache-apt-pkgs-action@acb598e5ddbc6f68a970c5da0688d2f3a9f04d05 # v1.5.3

View File

@@ -695,15 +695,17 @@ def main() -> None:
# Split components into batches for CI testing
# This intelligently groups components with similar bus configurations
component_test_batches: list[list[str]]
component_test_batches: list[str]
if changed_components_with_tests:
tests_dir = Path(root_path) / ESPHOME_TESTS_COMPONENTS_PATH
component_test_batches, _ = create_intelligent_batches(
batches, _ = create_intelligent_batches(
components=changed_components_with_tests,
tests_dir=tests_dir,
batch_size=COMPONENT_TEST_BATCH_SIZE,
directly_changed=directly_changed_with_tests,
)
# Convert batches to space-separated strings for CI matrix
component_test_batches = [" ".join(batch) for batch in batches]
else:
component_test_batches = []

View File

@@ -152,14 +152,14 @@ def test_main_all_tests_should_run(
assert output["memory_impact"]["should_run"] == "false"
assert output["cpp_unit_tests_run_all"] is False
assert output["cpp_unit_tests_components"] == ["wifi", "api", "sensor"]
# component_test_batches should be present and be a list of lists
# component_test_batches should be present and be a list of space-separated strings
assert "component_test_batches" in output
assert isinstance(output["component_test_batches"], list)
# Each batch should be a list of component names
# Each batch should be a space-separated string of component names
for batch in output["component_test_batches"]:
assert isinstance(batch, list)
for component in batch:
assert isinstance(component, str)
assert isinstance(batch, str)
# Should contain at least one component (no empty batches)
assert len(batch) > 0
def test_main_no_tests_should_run(