{"id":13409365,"url":"https://github.com/simonjwright/ACATS-grading","last_synced_at":"2025-03-14T14:31:12.413Z","repository":{"id":135311865,"uuid":"186289304","full_name":"simonjwright/ACATS-grading","owner":"simonjwright","description":"Tools for grading ACATS results, modified for Unix-like systems","archived":false,"fork":false,"pushed_at":"2024-05-17T09:41:13.000Z","size":76,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-10T16:55:22.530Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonjwright.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support_lib.gpr","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-12T18:20:57.000Z","updated_at":"2024-12-31T16:34:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"219afc1d-17f1-44e7-9499-51c4f9260f17","html_url":"https://github.com/simonjwright/ACATS-grading","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonjwright%2FACATS-grading","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonjwright%2FACATS-grading/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonjwright%2FACATS-grading/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonjwright%2FACATS-grading/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonjwright","download_url":"https://codeload.github.com/simonjwright/ACATS-grading/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243593356,"owners_count":20316172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T20:01:00.199Z","updated_at":"2025-03-14T14:31:12.019Z","avatar_url":"https://github.com/simonjwright.png","language":"Shell","funding_links":[],"categories":["Tools"],"sub_categories":["Verification"],"readme":"# ACATS Grading #\n\nThe [Ada Conformity Assessment Test Suite](http://www.ada-auth.org/acats.html) (ACATS) isn't all that simple to use. GCC has had an old version (2.5) of ACATS for a long time now (since 2007), available at build by `make -C gcc check-acats`, and [here on Github](https://github.com/simonjwright/ACATS) there's a GCC-compatible version of the latest suite (4.1U at the time of writing, 2021-04-05).\n\nACATS supports a test grading utility, and there's a [GNAT-compatible suite of utilities](http://www.ada-auth.org/submit-tools.html) to support running the tests (not conclusively, human intervention is still required!). That suite was written for Windows: this version has been modified to run on Unix-like systems (macOS and Debian stretch, so far).\n\n## Setup ##\n\nAs written, this suite expects to be installed next to ACATS (that is, `../ACATS` finds ACATS). Set up the tools and necessary Ada source by `./setup.sh`.\n\nThe originator's test rationale and procedures are described in [gnatinst.txt](gnatinst.txt).\n\n## Compiler ##\n\nNormally, the suite will run the tests using whichever GNAT suite is first in the PATH.\n\nThe `llvm` branch expects to find the GNAT LLVM suite in the PATH (i.e. it looks for `llvm-gnatmake`, `llvm-gcc`).\n\n## Running ##\n\nIt's best to run the suite in a different directory from its own.\n\nNote, two of the tests (CXB5004 and CXB5005) require that the compiler in use supports Fortran. If it does, and you want to run these tests, set the environment variable `HAS_FORTRAN` to `yes`.\n\nBuild the supporting code by\n```shell\n$ /the/tool/directory/setup-working-directory.sh\n```\nThen, run the tests by\n```shell\n$ /the/tool/directory/grd-all.sh\n```\n\nThis takes about 25 minutes on a early-2015 Macbook Pro with 2.9 GHz Intel Core i5, but note that up to and including FSF GCC 10 [production compilers hang in C452003](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88610).\n\nYou could just move that test out of `ACATS/tests/c4`.\n\nIf you don't do that, then once you've started a run on macOS or Debian (tested on _stretch_) and got stuck you'll need to say `killall gnatmake` in another terminal tab/window. At any rate on macOS, this can leave _gnat1_ processes around, which will also need to be killed.\n\nTo test just one chapter, say `c4`, replace the last line by\n```shell\n$ /the/tool/directory/mkacats.sh c4\n```\nThe results will be in `g-g{chapter}.txt` (in this case, `g-gc4.txt`).\n\nIf you only want to check a small number of tests, copy the test code (which may consist of more than one file) into a parallel directory in the test suite - e.g., `ACATS/tests/new` - and say\n```shell\n$ /the/tool/directory/mkacats.sh new\n```\n\nThe instructions above do a one-time copy of `gnat-man.txt` (the manual grading file), so you can make any necessary changes before re-running the tests.\n\n## Results ##\n\nThe grades for a single-chapter (or `new`) run will be found in \u003ctt\u003eg-g\u003ci\u003echapter\u003c/i\u003e.txt\u003c/tt\u003e, e.g. `g-gc4.txt`. To explore any failures, look in \u003ctt\u003e41-\u003ci\u003echapter\u003c/i\u003e-results.txt\u003c/tt\u003e.\n\nFor a full run, the single-chapter grades and results will be in the same files: the overall results will be in `g-grade.txt`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonjwright%2FACATS-grading","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonjwright%2FACATS-grading","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonjwright%2FACATS-grading/lists"}