Skip to content

Commit

Permalink
Merge branch 'master' into roli-improvements
Browse files Browse the repository at this point in the history
# Conflicts:
#	.gitmodules
#	Source/CommandLine.cpp
#	Source/PluginTests.cpp
#	Source/PluginTests.h
#	Source/TestUtilities.h
#	Source/Validator.cpp
#	Source/tests/BasicTests.cpp
#	pluginval.jucer
  • Loading branch information
aggniesz committed Feb 21, 2019
2 parents 4b7924c + 13cc022 commit 92aff28
Show file tree
Hide file tree
Showing 41 changed files with 3,406 additions and 431 deletions.
3 changes: 0 additions & 3 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
*.syx diff=syx

* text=auto
*.jucer text eol=crlf
**/AppConfig.h text eol=crlf
3rd_party/** -text
49 changes: 49 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
language: cpp

matrix:
include:
- os: linux
dist: xenial
sudo: required
compiler: gcc
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-6
- g++-6
- freeglut3-dev
- g++
- libasound2-dev
- libcurl4-openssl-dev
- libfreetype6-dev
- libjack-jackd2-dev
- libx11-dev
- libxcomposite-dev
- libxcursor-dev
- libxinerama-dev
- libxrandr-dev
- mesa-common-dev
- ladspa-sdk
- webkit2gtk-4.0
- libgtk-3-dev
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- sleep 3 # give xvfb some time to start
script:
- $TRAVIS_BUILD_DIR/install/linux_build

- os: osx
osx_image: xcode9.4
script:
- $TRAVIS_BUILD_DIR/tests/mac_tests

- os: windows
env:
- MSBUILD_EXE="C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe"
script:
- $TRAVIS_BUILD_DIR/tests/windows_tests.bat

secure: XAK63lsWh/2AICldilqWJvzcXsW4yprBsdCZFV7M2Y6bucisEtyypgdSZ3XLA41CWUJRCt4w/MAhWaABcEwcPt0gwuZuPztQHhpx4LByH6RUkxrAMG55MCDk37nyJLTS12526wVq6VLg4wp/7tk/v2rcZ6I+lVMXlde0zGnuGpIx9Es9wGZDvadDo4WwVpOnHXPyP8iz8qN+DesuC+7SLo2CNbz/Sb3wK1U78Ooa/Yg72/jK3rPvJTNwPyJm8/rhASyRsAj1SZnhCbVQBQdarFPB3SqM8/AFCtXi4bnXUCDmmW2/Y5xnIlUOAGJhIIa753pwoCkRFNh3sotYDX/dNyes4qhir/IoBoTWt6X5GqxCBJVx9fY/VrIm4lxjGyrKpp9JKyi3O70OxtDF6CdVUoI/lRcYOPpSZMBmisP7UOQUH+dS8W7JY0b2E/89abUYkebw7lEIoxksDcCfVaUnM0jm7OmoHFRTMjdrSJ/hw7WVWmzXqRepu1clVjHvZUnhtGyGbNgXaPNjRBcW6oIO/xkIz+QGkwAM3enIkPM84ljRK3pAjdZKL/Z0T5KDHEGEeXWpJuqlCRFnYIlUSH1oipEGg76dgTgLwJHGxxSRfXobO/xvo81Mc9o2tz+Bl3WyZlYw8s1PcKGfO5YqT1BkrrOAU7VjE+z/zrt+uZd9WN0=
32 changes: 29 additions & 3 deletions CHANGELIST.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,40 @@
# pluginval Change List

### 1.1.4
### 0.2.1
- Added an EditorAutomationTest to adjust parameter values whilst showing the plugin editor

### 0.2.0
- Removed built-in support for VST2 testing, this can be built with by setting the VST2_SDK_DIR environment variable before running the `tests/` scripts
- Added the option to repeat tests a specified number of times
- Added the option to randomise the test order each repeat
- Added some message loop running to editor tests to ensure the UI is actually displayed
- Added a test for processing audio whilst showing the editor
- Added an option to automatically save log files with a sensible name (see the "--output-dir" option)
- Disabled the LargerThanPreparedBlockSizeTest for AU, VST & VST3 formats
- Added a "Test File" button to the UI for validating plugins that won't scan (this improves the stack trace information in the log file)

### 0.1.5
- Fixed a problem catching allocations in clang release builds
- Avoided accidently setting the bypass parameter for VST3 plugins
- Simplified some parameter iteration methods to avoid returning bypass or non-automatable parameters
- Added MIDI note on and off messages for synth processing tests
- Added a Parameter thread safety test which attempts to call setValue on parameters from multiple threads concurrently mimicking automation and GUI interaction
- Added a PluginStateTestRestoration test which calculates some checksums before randomising and restoring plugin state to check state restoration is correct
- Added the ability to set command line arguments as environment variables e.g. "--skip-gui-tests" > "SKIP_GUI_TESTS=1", "--timeout-ms 30000" > "TIMEOUT_MS=30000"
- Added the ability to set a random seed to use for the tests

### 0.1.4
- Added stack backtraces to crashed validation output
- Added tests for detecting memory allocations and deallocations in the audio thread
- Added a test for creating an editor with an uninitialised plugin and a 0 sample rate and block size prepared plugin
- Added a test calling processBlock with more samples than initialised with

### 1.1.3
### 0.1.3
- Reduced the amount of default logging
- Added the "--verbose" command line flag
- Added some basic bus tests

### 1.1.2
### 0.1.2
- Added optional logging from the slave process
- Added an option to validate in the same process in GUI mode
- Added the "--validate-in-process" command line flag
Expand Down
57 changes: 47 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
# pluginval
master: [![Build Status](https://travis-ci.org/Tracktion/pluginval.svg?branch=master)](https://travis-ci.org/Tracktion/pluginval)
[![Build Status](https://dev.azure.com/TracktionDev/pluginval/_apis/build/status/Tracktion.pluginval?branchName=master)](https://dev.azure.com/TracktionDev/pluginval/_build/latest?definitionId=1?branchName=master)

develop: [![Build Status](https://travis-ci.org/Tracktion/pluginval.svg?branch=develop)](https://travis-ci.org/Tracktion/pluginval)
[![Build Status](https://dev.azure.com/TracktionDev/pluginval/_apis/build/status/Tracktion.pluginval?branchName=develop)](https://dev.azure.com/TracktionDev/pluginval/_build/latest?definitionId=1?branchName=develop)
# pluginval

pluginval 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.

If 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](<docs/Testing plugins with pluginval.md>)


###### Highlights:
- Test VST/AU/VST3 plugins
- Compatible with macOS/Windows/Linux
Expand All @@ -13,22 +22,51 @@ pluginval is a cross-platform plugin validator and tester application. It is des

Either grab one of the pre-compiled binaries from the Releases page or clone the repo and build from sources.
The projects are generated by the Projucer so you may have to build that first to generate the various project files. The easiest way to do this is to run one of the build scripts in the `install` directory.
###### _Mac:_
```sh
$ git clone --recurse-submodule git@github.com:Tracktion/pluginval.git
$ git clone --recurse-submodules https://github.com/Tracktion/pluginval.git
$ cd pluginval/install
$ ./mac_build
```
###### _Windows:_
```shell
> git clone --recurse-submodules https://github.com/Tracktion/pluginval.git
> cd pluginval\install
> ./windows_build.bat
```


##### N.B. Enabling VST2 Testing:
The VST2 SDK is no longer included in JUCE so VST2 support isn't available out from a fresh clone. To enable VST2 testing do one of the following:
1. Before running one of the `install/platform` scripts, set the `VST2_SDK_DIR` environment variable to point to the VST2 source directory on your system. This will then modify the `pluginval.jucer` file automatically. E.g.
```sh
$ git clone --recurse-submodules https://github.com/Tracktion/pluginval.git
$ cd pluginval/install
$ export VST2_SDK_DIR=~/SDKs/vstsdk2.4
$ ./mac_build
```
or
```shell
> git clone --recurse-submodules https://github.com/Tracktion/pluginval.git
> cd pluginval\install
> set VST2_SDK_DIR=C:\SDKs\vstsdk2.4
> ./windows_build.bat
```

2. Manually open then `pluginval.jucer`, select the `juce_audio_processors` module and change the `JUCE_PLUGINHOST_VST` to `Enabled`.
Now you'll have to either have the VST2 SDK path in your Projucer Global Settings, or you'll need to add it to the `pluginval.jucer` `Header Search Paths` setting.


### Running in GUI Mode
Once 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.
Alterntively, you can drag a plugin file and drop it on the list to add only that plugin.
Alternatively, you can drag a plugin file and drop it on the list to add only that plugin.

Once 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.
If you find problems with a plugin, this can be useful to send to the plugin developers.

### Running in Headless Mode
As well as being a GUI app, `pluginval` can be run from the command line in a headless mode.
This is great if you want to add validation as part of your CI process and be notified immidiately if tests start failing.
This is great if you want to add validation as part of your CI process and be notified immediately if tests start failing.

###### Basic usage is as follows:
```
Expand All @@ -46,6 +84,11 @@ This means you can check the exit code on your various CI and mark builds a fail
./pluginval -h
```

### Guides
- [Testing plugins with pluginval](<docs/Testing plugins with pluginval.md>)
- [Debugging a failed validation](<docs/Debugging a failed validation.md>)
- [Adding pluginval to CI](<docs/Adding pluginval to CI.md>)

### Contributing
If you would like to contribute to the project please do! It's very simple to add tests, simply:
1) Subclass `PluginTest`
Expand All @@ -67,13 +110,7 @@ If you would like to contribute to the project please do! It's very simple to ad
If 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!
### Todos
- Create a better logo!
- Write more Tests
- Possibly add more command line options
-- Run only specific tests, either named or from a certain strictness level
License
----
Licencing 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 accomodate these.
Licensing 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.
Loading

0 comments on commit 92aff28

Please sign in to comment.