{"id":20755795,"url":"https://github.com/darvin/mmatestsuitegenerator","last_synced_at":"2026-02-07T21:32:41.497Z","repository":{"id":66943774,"uuid":"135027856","full_name":"darvin/MMATestSuiteGenerator","owner":"darvin","description":"Generates test suite for MMA","archived":false,"fork":false,"pushed_at":"2018-06-11T04:16:55.000Z","size":31071,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-11T00:27:28.140Z","etag":null,"topics":["mathematica","wolfram","wolfram-language","wolfram-mathematica"],"latest_commit_sha":null,"homepage":null,"language":"Mathematica","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darvin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-27T08:12:28.000Z","updated_at":"2025-07-11T08:06:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"e6e7deea-d971-4c51-9b86-83fa63c3ced8","html_url":"https://github.com/darvin/MMATestSuiteGenerator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/darvin/MMATestSuiteGenerator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darvin%2FMMATestSuiteGenerator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darvin%2FMMATestSuiteGenerator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darvin%2FMMATestSuiteGenerator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darvin%2FMMATestSuiteGenerator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darvin","download_url":"https://codeload.github.com/darvin/MMATestSuiteGenerator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darvin%2FMMATestSuiteGenerator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29208712,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T20:33:12.493Z","status":"ssl_error","status_checked_at":"2026-02-07T20:30:47.381Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["mathematica","wolfram","wolfram-language","wolfram-mathematica"],"created_at":"2024-11-17T09:27:23.510Z","updated_at":"2026-02-07T21:32:41.480Z","avatar_url":"https://github.com/darvin.png","language":"Mathematica","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/darvin/MMATestSuiteGenerator.svg?branch=master)](https://travis-ci.org/darvin/MMATestSuiteGenerator)\n\n## [Website with automated build results](https://darvin.github.io/MMATestSuiteGenerator/)\n\n## Local Usage\n\n   - Install `parallel` : `apt-get install parallel` or `brew install parallel`\n   - Install Node, run `npm install`\n   - Add desired `.nb` files from `/Applications/Mathematica.app/Contents/Documentation/English/System/ReferencePages/Symbols/` to `./WHITELIST` ([edit](WHITELIST) it to add stuff in upstream repo)\n   - Test that your installation of Mathematica actually works:\n      - Local installation: `LOCAL=1 make mathematica-self-tests`\n      - Installation on Docker: `make mathematica-self-tests`\n   - Generate tests (It's gonna run pretty fast thanks to [GNU Parallel](https://www.gnu.org/software/parallel/)\n      - `make generate-compat-tests`\n      - `LOCAL=1 make generate-compat-tests`\n   - Find generated from docstrings tests in `./output/Tests`.\n   - Run tests:\n      - `make run-compat-tests`\n      - `LOCAL=1 make run-compat-tests`\n   - Find [TAP](https://testanything.org/) results in `./output/Results/$YourInterpreterName/*.tap`\n      - Checkout compatibility of [Expreduce](https://github.com/corywalker/expreduce) or [mmaclone](https://github.com/jyh1/mmaclone)\n   - Generate very pretty website with [Mochawesome](https://github.com/adamgruber/mochawesome):\n      - `LOCAL=1 make website`\n   - Open website with test reports in browser:\n      - `LOCAL=1 make serve-website`\n   - ...Or just run the whole thing at once:\n      - `make` for Mathematica on Docker\n      - `LOCAL=1 make` for natively installed Mathematica\n\n## About test reports\n\n![suite generation report](docs/suite_generation.png)\n\nThis is report of Test generation. This is Mathematica Documentation `.nb` -\u003e `$NotebookName_Tests.m` generator. As it parses out test cases, it runs them. If test failed, it marks it as failed on generation step, and marks it as “`Skip`” for the test suite - because its clearly broken. Right now there are tons of tests broken like that, I think thats because of my inferior parsing that I gonna fix shortly (it doesn’t respect multiline-multibox examples and there are tons of them, its totally fixable tho)\n\n\nThen, I’m taking generated (and verified) tests from MMA10 docs and running them against MMA10\n\n\n![mma report](docs/mma.png)\n\nHere, all wrong tests suppose to be skipped. And here should be not a single error - those tests are already verified. Like you see there are few errors, because im doing something wrong, and im gonna fix it :)\n\n   \n### Example of generated test:\n\n\n\n```Mathematica\nTapSuite[TapComment[\"Test if an expression is an integer:\"], \n TapTestSame[MatchQ[12345, _Integer], True], \n TapComment[\"Test if an expression is a sum of two or more terms:\"], \n TapTestSame[MatchQ[(x - 1)*(1 + 2*x + 3*x^2), _ + __], False], \n TapTestSameBROKEN[MatchQ[Expand[x*(1 + 2*x + 3*x^2)], _ + __], True], \n TapComment[\"Test if an expression is explicitly zero:\"], \n TapTestSame[MatchQ[1 + 1/GoldenRatio - GoldenRatio, 0], False], \n TapTestSame[MatchQ[Simplify[1 + 1/GoldenRatio - GoldenRatio], 0], True], \n TapComment[\"Match an association:\"], \n TapTestSame[MatchQ[Association[a -\u003e 1, b -\u003e 2], _Association], True], \n TapComment[\"Match a rule in an association, using an association as a \\\npattern:\"], TapTestSame[MatchQ[Association[a -\u003e 1], Association[a -\u003e _]], \n  True], TapTestSame[MatchQ[Association[a -\u003e 1], Association[_ -\u003e 1]], True], \n TapComment[\"KeyValuePattern lets you match any element in an association:\"], \n TapTestSame[MatchQ[Association[a -\u003e 1, b -\u003e 2, c -\u003e 3], \n   KeyValuePattern[b -\u003e 2]], True], \n TapComment[\"It also works on lists of rules:\"], \n TapTestSame[MatchQ[{a -\u003e 1, b -\u003e 2, c -\u003e 3}, KeyValuePattern[b -\u003e 2]], True], \n TapComment[\"Match a rule in an association with a condition:\"], \n TapTestSame[MatchQ[Association[a -\u003e 1], Association[a -\u003e _?OddQ]], True], \n TapTestSame[MatchQ[Association[a -\u003e \"foo\"], \n   Association[a -\u003e x_ /; StringQ[x]]], True], \n TapComment[\"Match a Rule in an association using Alternatives:\"], \n TapTestSame[MatchQ[Association[a -\u003e 1], Association[_ -\u003e 1 | 2]], True], \n TapComment[\"Use Verbatim to match a literal blank:\"], \n TapTestSame[MatchQ[Association[a -\u003e _], Association[a -\u003e Verbatim[_]]], True], \n TapComment[\n  \"_ or Blank has special meaning in an association used as a pattern:\"], \n TapTestSame[MatchQ[Association[a -\u003e 1], Association[a -\u003e _]], True], \n TapComment[\n  \"Use __ or BlankSequence to match more than one rule in an association:\"], \n TapTestSame[MatchQ[Association[a -\u003e 1, b -\u003e 2], Association[_]], False], \n TapTestSame[MatchQ[Association[a -\u003e 1, b -\u003e 2], Association[__]], True], \n TapComment[\"Match an association containing a given rule and possibly more:\"], \n TapTestSameBROKEN[MatchQ[Association[a -\u003e 1], Association[a -\u003e 1, ___]], \n  True], TapTestSameBROKEN[MatchQ[Association[a -\u003e 1, b -\u003e 2], \n   Association[a -\u003e 1, ___]], True], \n TapComment[\"Match an association containing three elements:\"], \n TapTestSame[MatchQ[Association[a -\u003e 1, b -\u003e 2, c -\u003e 3], Association[_, _, _]], \n  True], TapTestSame[MatchQ[Association[a -\u003e 1, b -\u003e 2, c -\u003e 3], \n   a_ /; Length[a] == 3], True], TapComment[\"Match nested associations:\"], \n TapTestSame[MatchQ[Association[1 -\u003e Association[2 -\u003e x]], \n   Association[_ -\u003e Association[_]]], True]]\n\n```\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarvin%2Fmmatestsuitegenerator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarvin%2Fmmatestsuitegenerator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarvin%2Fmmatestsuitegenerator/lists"}