{"id":19370549,"url":"https://github.com/libass/libass-tests","last_synced_at":"2025-04-23T15:32:32.134Z","repository":{"id":37811606,"uuid":"267728772","full_name":"libass/libass-tests","owner":"libass","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-31T17:09:41.000Z","size":11867,"stargazers_count":1,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-02T17:11:17.528Z","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/libass.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":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-29T00:41:31.000Z","updated_at":"2025-01-31T17:09:45.000Z","dependencies_parsed_at":"2023-11-09T15:45:03.363Z","dependency_job_id":"17c8e1ea-5dce-4c6a-89fc-50922113116e","html_url":"https://github.com/libass/libass-tests","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libass%2Flibass-tests","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libass%2Flibass-tests/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libass%2Flibass-tests/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libass%2Flibass-tests/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libass","download_url":"https://codeload.github.com/libass/libass-tests/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250460653,"owners_count":21434270,"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-11-10T08:15:54.710Z","updated_at":"2025-04-23T15:32:30.743Z","avatar_url":"https://github.com/libass.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Libass Tests\n\nTesting is best done with a libass build having ASAN and UBSAN enabled.\nE.g.:\n```sh\nmake clean \\\n \u0026\u0026 make CC=\"gcc -fsanitize=address -fsanitize=undefined -fsanitize=float-cast-overflow -fno-sanitize-recover=all\" -j 6\n```\n*(After the currently pending division-by-zero-bugs are fixed\n`-fsanitize=float-divide-by-zero` should be added as well)*\n\nThere are two types of tests:\n\n## Regression Tests\nThose tests compare the rasterized output with a known good sample,\nreporting deviations. Does not use system font providers.\n\nReference samples are produced on amd64 using SSE-math\n(`float`: 32bit, `double`: 64bit), if run on a platform\nwith different floating point precision, some test will\nshow slight deviations, but should notrmally still pass\nwith `GOOD` anyway. If the floating point precision matches\nall tests should pass as `SAME` without any deviations.\n\n## Crash Tests\nIntended to feed libass various scripts with all kind of different inputs who\nmight not (yet) have a stable and known-good output to compare against.\nAs long as libass manages to handle this input without erroring out or worse\ncrashing, the test is passed.\n\nThose tests should try to cover many codepaths and unusual combinations, that\nare easily forgotten to take into account, although they don't need to cover\ninsane inputs as fuzzing might produce.\n\nDoes use the system font provider.\n\n## Run all tests\n```sh\nPARALLEL=1 ./run.sh \u003clibass-dir\u003e/compare/compare \u003clibass-dir\u003e/fuzz/fuzz\n```\n\nHow many tests are run simultaneously is controlled via the `PARALLEL`\nenvironment variable; if not set it will defaul to `1`(sequential).\nRunning test in parallel decreases test time, but mangles the output. If any\ntests fails, rerunning in sequential mode is advised to get a proper log for\nwhat's failing.\n\n## Requirements\nThe shell scripts assume the presence of the non-POSIX\n`xargs -0` and `find -print0 -maxdepth -mindepth` extensions.\nOtherwise pure POSIX.\n\n## Environment Variables\n\nCheck the `README.md`s in subfolders for environment variables affecting only specific test types.\nThe following affect all types:\n\n  - `ART_BINWRAP` defines a wrapper command for test binaries\n\n## Todo\n - Crash test would ideally use a high coverage corpus,\n   instead of the few randomly thrown together files used now.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibass%2Flibass-tests","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibass%2Flibass-tests","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibass%2Flibass-tests/lists"}