Repository navigation
Run the cvc5 and Lean tests on macOS; pin CI installers - #129
Open
SwayamInSync wants to merge 17 commits into
Open
SwayamInSync wants to merge 17 commits into
SwayamInSync wants to merge 17 commits into
Conversation
…de from a newer one.
…n lean_automation.test.
…in lean_contract_certify.test.
…n lean_readable.cpp.
…n lean_refutation.test.
… the project's modules.
… cppverify_auto time.
…Lean limits, and show the output of a command that times out.
# Conflicts: # website/source/release-notes.rst
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plan items T12 (cvc5 and Lean on macOS CI) and T13 (pinned installers). macOS CI installed only
ninja, so every test that needs cvc5 or Lean was unsupported there: 36 tests that are not Linux-only, the backend fidelity gate, the cvc5 counterexample tests, and the Lean export, certification, automation, and identity tests among them. They ran only on Linux.Change
The macOS job installs, as the Linux jobs do:
cvc5-macOS-arm64-static.zipfrom its GitHub release; Linux also runs the oldest, 1.1.2);leanprover/lean4:v4.35.0) unpacked from its GitHub release (lean-4.35.0-darwin_aarch64.zip) into elan's toolchain directory, sincereleases.lean-lang.org, elan's own source, has been down (the Linux jobs do the same, S8: a smoke test that checks more, and Lean from its GitHub release in CI #108).The test step prints both versions before running
clang/test/Verify, so a log shows what ran.What the tests found on macOS
The first macOS run failed 5 of the 36 tests:
--lean-auto-timeout. The documented limit is per goal ("millisecondscppverify_automay spend on one new goal"), but the clock started when Lean was launched, so the first goal of each Lean process was also charged for loading the project's modules. After a goal timed out, the goal after it starts in a new process and paid that load again: on the slower macOS runnerlean_automation.testgota_slow (cppverify_auto proved 1 of 3 goals)instead of2 of 3. The clock now starts when Lean reports it has loaded the modules (tryLeanGoals,Verifier.cpp). New check inlean_automation.test: a user module whoseinitializesleeps 4 s, longer than the test's 3 s limit; main's cpp-verify printsa_slow (cppverify_auto proved 1 of 3 goals)there, and this branch prints the expected2 of 3(it fails on Linux too, not just macOS).sed -iinlean_automation.test,lean_contract_certify.test,lean_readable.cpp, andlean_refutation.test(sed: -I or -i may not be used with stdinon macOS). They now usesed -i.orig, which both seds accept and which the other Lean tests already use.backend_fidelity_gate.teststopped the Lean certification of its matrix after 180 s (16 s on Linux). The script's 180 s is a hang guard below cpp-verify's own 300 s limit perlakestep, so it could cut off a certification that cpp-verify would have finished or reported. Commands that run Lean now get 900 s, and a command that times out prints its output, so a recurrence shows where it was.Testing
This PR's macOS job is the test: lit marks a test needing
cvc5orleansupported once the tool is onPATH(clang/test/lit.cfg.py), so the 36 tests run in it for the first time. Locally (Linux) the five tests above pass on this branch, anddocs_coverage.testpasses.Docs
Release notes, "Testing". ARCHITECTURE.md and the
--lean-auto-timeoutentry of the tooling reference say when a goal's time starts.Pinned installers (plan item T13)
The CI workflow took
elan-init.shfrom elan'smaster,ilammy/msvc-dev-cmd@v1, and whatever Ninja Chocolatey had, so a change upstream could change or break a run with no change here. They are pinned now, as LLVM's own workflows pin them:elan-init.shof elan v4.2.4 by its commit (227caca133724d5516bee25c2aeb3e609478f2d8, both jobs),msvc-dev-cmdat v1.13.0's commit (0b201ec74fa43914dc39ae48a89fd1d8cb592756, aslibcxx-build-and-test.yamlandlibc-shared-tests.yml), and Ninja 1.13.2, the version the Windows image ships (Chocolatey refuses an older pin without--allow-downgrade, which is given so that a newer image still gets this one).