Skip to main content

sundials-devs-update-answer-files

Update or add SUNDIALS expected-output answer files after intentional test output changes. Use to refresh .out files embedded in examples, update the sundials-codes/answers repository or test/answers submodule, consume GitHub Actions or Jenkins output_files artifacts, configure SUNDIALS_TEST_ANSWER_DIR or SUNDIALS_TEST_OUTPUT_DIR, or follow the documented workflow in doc/developers/testing/Answers.rst.

Jump to install

Source facts

Repository
llnl/sundials
Last source activity
September 1, 2026 at 19:00
Detected SKILL.md language
English
Stars
688
Forks
169

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
sundials-devs-update-answer-files
description
Update or add SUNDIALS expected-output answer files after intentional test output changes. Use to refresh .out files embedded in examples, update the sundials-codes/answers repository or test/answers submodule, consume GitHub Actions or Jenkins output_files artifacts, configure SUNDIALS_TEST_ANSWER_DIR or SUNDIALS_TEST_OUTPUT_DIR, or follow the documented workflow in doc/developers/testing/Answers.rst.
# Update Answer Files Use this skill when SUNDIALS tests fail because expected-output `.out` files need to change. Treat answer updates as correctness work, not mechanical churn: first confirm the output change is expected and review the numerical/statistical differences before committing any answer file. Source documentation: `doc/developers/testing/Answers.rst` and `doc/developers/testing/CTest.rst`. ## Workflow 1. Identify the answer-file target. - For `.out` files embedded under `examples/`, update the file in the SUNDIALS repository. - For platform/compiler answer files, update `sundials-codes/answers`, usually through the `test/answers` submodule. - For a new machine directory in `sundials-codes/answers`, use the staged new-machine flow below. 2. Obtain trusted output. - Prefer CI-generated output for CI failures because local floating-point differences can be enough to keep CI failing. - For GitHub Actions failures, download the `output_files` artifact from the failing workflow or PR check. The unzipped artifact is a SUNDIALS build directory. - For Jenkins failures of embedded `examples/*.out`, use the Jenkins build output if local output still fails on Jenkins. - For local generation, configure with `-DSUNDIALS_TEST_OUTPUT_DIR=<output-dir>` so test output is written to a predictable directory. 3. Update only the relevant files. - Inspect failing test names and paths before copying. - Use `scripts/updateOutFiles.py` when updating from a build/output directory because it traverses `examples` and `test/unit_tests` and only updates outputs for failed tests. - By default the script reads `<source>/Testing/Temporary/LastTestsFailed.log`; use `--log <dir>` only when the failed-test log is under another build directory. - Use `--copy` when intentionally adding a new answer file that does not already exist in the destination. Use `--all` only for an intentionally broad refresh. - From the repository root, run: ```bash cd scripts ./updateOutFiles.py <source-build-or-output-dir> <destination> ``` 4. Review diffs before committing. - Check every changed `.out` file with `git diff`. - Confirm changed solution values, statistics, and tolerances are consistent with the code change. - Drop unrelated generated output and avoid broad answer refreshes unless the change intentionally affects many tests. 5. Test with the updated answers. - For a local build that should compare against an alternate answer tree, configure with `-DSUNDIALS_TEST_ANSWER_DIR=<answer-dir>`. - Run the focused failing tests first, then a broader relevant CTest sweep. ## Embedded Example `.out` Files Update embedded example answers directly in the SUNDIALS repository. ```bash cd scripts ./updateOutFiles.py <jenkins-or-local-build-dir> .. ``` If local output passes locally but Jenkins still fails, replace the file with Jenkins-generated output. Getting Jenkins output may require help from the SUNDIALS maintainers named in `doc/developers/testing/Answers.rst`. ## `sundials-codes/answers` Use this flow for GitHub Actions answer files. 1. Initialize the answer submodule from the SUNDIALS repository root, then enter it. ```bash git submodule update --init test/answers cd test/answers ``` If `test/answers` is unavailable or empty, clone `https://github.com/sundials-codes/answers` outside the SUNDIALS source tree instead. 2. Branch from `main`, ideally using the same branch name as the SUNDIALS branch. ```bash git checkout main git pull --ff-only git checkout -b <branch-name> ``` 3. Update the relevant precision directory for GitHub Actions: ```text linux-ubuntu20.04-x86_64/gcc-9.4.0/<double|single|extended> ``` Run the updater from the SUNDIALS repository `scripts` directory: ```bash cd <sundials-repo>/scripts ./updateOutFiles.py <downloaded-output-files-build-dir> <answers-repo>/linux-ubuntu20.04-x86_64/gcc-9.4.0/<precision> ``` 4. If SSH authentication is needed for pushing from the submodule, set: ```bash git remote set-url origin git@github.com:sundials-codes/answers.git ``` 5. Commit the answer updates in the answers repository and open a PR against `sundials-codes/answers`. ## New Machine Answer Directories Use the staging branch workflow for new platform/compiler directories in `sundials-codes/answers`. 1. Copy the relevant existing answers from `linux-ubuntu20.04-x86_64` into the new machine directory. 2. Commit that initial copy and open a PR to the `staging` branch. 3. After it merges, generate new answers on the new machine, overwrite the copied files, and review the diff. 4. Commit the generated answers and open another PR targeting `staging`. 5. Expect `staging` to be merged into `main` later. For local generation on `develop`, use a build configured with an explicit output directory: ```bash git checkout develop cmake -S . -B build \ -DSUNDIALS_TEST_ENABLE_DEV_TESTS=ON \ -DSUNDIALS_TEST_ENABLE_UNIT_TESTS=ON \ -DSUNDIALS_TEST_OUTPUT_DIR=<machine-output-dir> cmake --build build -j ctest --test-dir build --output-on-failure ``` ## Gotchas - If you don't have network access to GitHub, you will need the user to download the `output_files` artifact from the failing workflow or PR check and provide it to you. The unzipped artifact is a SUNDIALS build directory.
View on GitHub