{"id":18654193,"url":"https://github.com/tracktion/pluginval","last_synced_at":"2025-05-15T20:03:39.856Z","repository":{"id":37926409,"uuid":"133796391","full_name":"Tracktion/pluginval","owner":"Tracktion","description":"Cross platform plugin testing and validation tool","archived":false,"fork":false,"pushed_at":"2025-03-25T11:17:39.000Z","size":2913,"stargazers_count":428,"open_issues_count":24,"forks_count":57,"subscribers_count":17,"default_branch":"develop","last_synced_at":"2025-05-08T02:38:31.102Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tracktion.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELIST.md","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,"zenodo":null}},"created_at":"2018-05-17T10:16:21.000Z","updated_at":"2025-05-07T02:47:08.000Z","dependencies_parsed_at":"2023-02-17T21:50:15.336Z","dependency_job_id":"82b001dc-42e4-4fc4-8849-10ce26926cc8","html_url":"https://github.com/Tracktion/pluginval","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tracktion%2Fpluginval","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tracktion%2Fpluginval/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tracktion%2Fpluginval/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tracktion%2Fpluginval/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tracktion","download_url":"https://codeload.github.com/Tracktion/pluginval/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254414493,"owners_count":22067271,"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-07T07:14:18.293Z","updated_at":"2025-05-15T20:03:38.434Z","avatar_url":"https://github.com/Tracktion.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pluginval\n\nmaster: ![master](https://github.com/Tracktion/pluginval/workflows/Build/badge.svg?branch=master) \n\ndevelop: ![develop](https://github.com/Tracktion/pluginval/workflows/Build/badge.svg?branch=develop)\n\npluginval is a cross-platform plugin validator and tester application. It is designed to be used by both plugin and host developers to ensure stability and compatibility between plugins and hosts.\n\nIf you are a plugin user looking to report a problem with a plugin to the developers, you can use `pluginval` to create a detailed log which can drastically improve the time to fix issues. Please follow the instructions here to get started: [Testing plugins with pluginval](\u003cdocs/Testing plugins with pluginval.md\u003e)\n\n\n###### Highlights:\n  - Test VST/AU/VST3 plugins\n  - Compatible with macOS/Windows/Linux\n  - Run in GUI or headless mode\n  - Validation is performed in a separate process to avoid crashing\n\n\n### Installation\n\nThe easiest way to get started with pluginval is to grab pre-compiled binaries from the [Releases page](https://github.com/Tracktion/pluginval/releases). Note that these are compiled with support for testing VST2. \n\nOnce you need to [debug a failed validation](https://github.com/Tracktion/pluginval/blob/develop/docs/Debugging%20a%20failed%20validation.md#quick-debugging) you'll probably want to build locally in Debug:\n\n```\ngit submodule update --init # grab JUCE \ncmake -B Builds/Debug -DCMAKE_BUILD_TYPE=Debug . # configure\ncmake --build Builds/Debug --config Debug # build\n```\n\n### Third-party Installation\n###### _Chocolatey (Windows):_\n```shell\n\u003e choco install pluginval\n```\n\nYou can find the chocolatey package of pluginval [here](https://chocolatey.org/packages/pluginval), and the source of the chocolatey package [here](https://github.com/Xav83/chocolatey-packages/tree/develop/automatic/pluginval), currently maintained by [Xav83](https://github.com/Xav83).\n\n##### N.B. Enabling VST2 Testing:\n\nThe [pre-compiled binaries](https://github.com/Tracktion/pluginval/releases) are built with VST2 support. \n\nThe VST2 SDK is no longer included in JUCE so VST2 support isn't available out from a fresh clone. \n\nTo enable VST2 testing locally, set the `VST2_SDK_DIR` environment variable to point to the VST2 source directory on your system.\n\n```\nVST2_SDK_DIR=Builds/Debug/pluginval_artefacts/ cmake -B Builds/Debug .\n``` \n\n### Running in GUI Mode\nOnce the app has built for your platform it will be found in `/bin`. Simply open the app to start it in GUI mode. Once open, you'll be presented with an empty plugin list. Click \"Options\" to scan for plugins, making sure to add any directories required.\nAlternatively, you can drag a plugin file and drop it on the list to add only that plugin.\n\nOnce the list has populated, simply select a plugin and press the \"Test Selected\" button to validate it. The plugin will be loaded and each of the tests run in turn. Any output from the tests will be shown on the \"Console\" tab.\nIf you find problems with a plugin, this can be useful to send to the plugin developers.\n\n### Running in Headless Mode\nAs well as being a GUI app, `pluginval` can be run from the command line in a headless mode.\nThis is great if you want to add validation as part of your CI process and be notified immediately if tests start failing.\n\n###### Basic usage is as follows:\n```\n./pluginval --strictness-level 5 \u003cpath_to_plugin\u003e\n```\nThis will run all the tests up to level 5 on the plugin at the specified path.\nOutput will be fed to the console.\nIf all the tests pass cleanly, `pluginval` will return with an exit code of `0`. If any tests fail, the exit code will be `1`.\nThis means you can check the exit code on your various CI and mark builds a failing if all tests don't pass.\n\n`strictness-level` is optional but can be between 1 \u0026 10 with 5 being generally recognised as the lowest level for host compatibility. Lower levels are generally quick tests, mainly checking call coverage for crashes. Higher levels contain tests which take longer to run such as parameter fuzz tests and multiple state restoration.\n\n###### You can also list all the options with:\n```\n./pluginval -h\n```\n\n### Guides\n - [Testing plugins with pluginval](\u003cdocs/Testing plugins with pluginval.md\u003e)\n - [Debugging a failed validation](\u003cdocs/Debugging a failed validation.md\u003e)\n - [Adding pluginval to CI](\u003cdocs/Adding pluginval to CI.md\u003e)\n\n### Contributing\nIf you would like to contribute to the project please do! It's very simple to add tests, simply:\n1) Subclass `PluginTest`\n    ```\n    struct FuzzParametersTest  : public PluginTest\n    ```\n2) Override `runTest` to perform any tests\n    ```\n    void runTest (UnitTest\u0026 ut, AudioPluginInstance\u0026 instance) override\n    ```\n3) Log passes or failures with the `UnitTest` parameter\n    ```\n    ut.expect (editor != nullptr, \"Unable to create editor\");\n    ```\n4) Register your test with a static instance of it in a cpp file:\n   ```\n   static FuzzParametersTest fuzzParametersTest;\n   ```\n\nIf you have a case you would like tests, please simply write the test in a fork and create a pull request. The more tests the better!\n\n### Cutting New Releases\n\n* Update VERSION (an extra newline is fine)\n* Update CHANGELIST.md\n* `git commit -am \"Version 1.0.5\"`\n* `git tag -a v1.0.5 -m \"1.0.5 release\"`\n* `git push --tags`\n\nLicense\n----\n\nLicensing is under the `GPLv3` as we want `pluginval` to be as transparent as possible. If this conflicts with your requirements though please let us know and we can accommodate these.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftracktion%2Fpluginval","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftracktion%2Fpluginval","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftracktion%2Fpluginval/lists"}