Skip to content

[CI] full-build.yml doesn't fail when many tests are skipped #5690

Open

Description

@anchapin

Description

The retired Jenkins osx and windows pipelines failed the build when more than 15 tests were skipped (xunit skipped(failureThreshold: '15') in cbci_jenkins_libs vars/openstudio_incremental_develop_osx.groovy:427 and _windows.groovy:394). full-build.yml has no equivalent, and CTest counts skipped tests as passing.

If a change makes a fixture skip widely (for example, tests that skip when Python or Ruby isn't found on macOS), the Full Build job stays green where Jenkins would have failed it. Since #5681, Full Build is the only macOS/Windows test gate on PRs.

Possible fix

After the CTest step, count Status="notrun" / skipped entries in the Testing/<tag>/Test.xml file the step already writes (-T test), and fail above a threshold. Starting at 15 matches Jenkins; checking what the current per-platform skip count is first would give a better number.

Found in the review of #5681.

🤖 Generated with Claude Code

Activity

  1. anchapin commented on Nov 10, 2026

    @anchapin
    CollaboratorAuthor

    Measured on last night's successful develop run (42733776935, all six platforms green), from the Testing-* artifacts:

    Skip count today: 10 on every platform where the full results survived (macOS x64, macOS arm64, Ubuntu 24.04 ARM64). All 10 are Disabled (gtest DISABLED_ tests), and they're the same 10 everywhere:

    EnergyPlusFixture.ForwardTranslator_ScheduleFixedInterval_TwoPoint, ..._ScheduleVariableInterval_500_Shifted, ..._ScheduleVariableInterval_DaysTimeSeries, ..._ScheduleVariableInterval_Hourly_Shifted, EnergyPlusFixture.ReverseTranslator_RunPeriodControlSpecialDays, EnergyPlusFixture.ReverseTranslator_SizingSystem, ISOModelFixture.ForwardTranslator, ModelFixture.Issue_1322, ModelFixture.Issue_1683, ModelFixture.ShatteredModel_Existing_3424

    The only runtime skip mechanism is SKIP_RETURN_CODE 5 on pytest tests (python/Pytest.cmake:127, pytest's "no tests collected"). So Jenkins' threshold of 15 leaves room for 5 runtime skips; a check that counts only non-Disabled notrun tests could use a much tighter threshold (even 0).

    The check can't just read Test.xml. Each ctest -T test call in the CTest step writes to the same Testing/<tag>/Test.xml, so the artifact only holds the last call:

    • On CentOS 9, Ubuntu 24.04 x64 and Windows 2022, Test.xml contains one test, OpenStudioCLI.test_measure_manager, which means it failed in the parallel run and the --rerun-failed call overwrote the full results. (That test flaked on three platforms in one night, which may deserve its own issue.)
    • On the other three, it holds the parallel group only; the 9 sequential tests are never in it.
    • LastTest.log, which the test-summary step tails, has the same problem.

    So the skip check needs each ctest call to write its own results, e.g. --output-junit <group>.xml per call (CMake ≥ 3.21), then count across the files. That would also fix the artifacts' incomplete results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions