diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 11ea44f..84f1c90 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -197,7 +197,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-15, windows-latest] - juce: ["8.0.13", "9.0.3"] + juce: ["8.0.13", "9.0.4"] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 diff --git a/CHANGELIST.md b/CHANGELIST.md index 599adb8..97d9d8a 100644 --- a/CHANGELIST.md +++ b/CHANGELIST.md @@ -1,7 +1,7 @@ # pluginval Change List ### 2.0.0 -- Updated JUCE to 9.0.3 +- Updated JUCE to 9.0.4 - Fixed the crash handler so a backtrace is shown again when a plugin crashes, and made it async-signal-safe [#144] - Added `--junit-xml ` and `--json-results ` to both `pluginval validate` and `pluginval test` to write machine-readable reports for CI (also settable as `JUNIT_XML` / `JSON_RESULTS`). A report that can't be written fails the run. See `docs/Adding pluginval to CI.md` - Added acceptance testing: `pluginval test ` renders a plugin with a known state, input (audio/MIDI) and optional playhead, then compares the output against a checked-in reference WAV, exiting `0` on a match and `1` on a mismatch (with a diff WAV). Use `--record-missing` to record new references. See `docs/Acceptance testing.md` diff --git a/CLAUDE.md b/CLAUDE.md index f306bcc..82c3af8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -107,8 +107,6 @@ pluginval/ │ ├── ParameterFuzzTests.cpp # Parameter fuzzing tests │ ├── LocaleTest.cpp # Locale handling tests │ └── ExtremeTests.cpp # Edge case tests -├── modules/ -│ └── juce/ # JUCE framework (git submodule) ├── cmake/ │ ├── CPM.cmake # CMake Package Manager │ └── GenerateBinaryHeader.cmake # Binary-to-C-header converter @@ -143,15 +141,12 @@ pluginval/ ### Prerequisites - CMake 3.15+ - C++20 compatible compiler -- Git (for submodules) +- Git (CPM uses it to fetch JUCE and the other dependencies at configure time) ### Building ```bash -# Initialize JUCE submodule -git submodule update --init - -# Configure (Debug build) +# Configure (Debug build) - fetches JUCE etc. via CPM cmake -B Builds/Debug -DCMAKE_BUILD_TYPE=Debug . # Build @@ -162,7 +157,6 @@ cmake --build Builds/Debug --config Debug | Option | Description | Default | |--------|-------------|---------| -| `PLUGINVAL_FETCH_JUCE` | Fetch JUCE with pluginval | ON | | `PLUGINVAL_VST3_VALIDATOR` | Build with embedded VST3 validator | ON | | `WITH_ADDRESS_SANITIZER` | Enable AddressSanitizer | OFF | | `WITH_THREAD_SANITIZER` | Enable ThreadSanitizer | OFF | @@ -577,7 +571,7 @@ Without the actions: ## Dependencies ### External -- **JUCE** (v9.0.x) - Audio application framework (git submodule) +- **JUCE** (v9.0.x, currently 9.0.4) - Audio application framework (fetched via CPM when pluginval is the top-level project; otherwise the parent project provides it) - **magic_enum** (v0.9.7) - Enum reflection (fetched via CPM) - **CLI11** (v2.6.2) - CLI argument parsing, header-only (fetched via CPM) - **nlohmann/json** (3.12.0) - JSON settings layering/serialisation (fetched via CPM) diff --git a/CMakeLists.txt b/CMakeLists.txt index 96bf1a2..78c7e38 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ endif() # Only fetch JUCE when top-level (when used as dependency, JUCE is already available) if (pluginval_IS_TOP_LEVEL) - CPMAddPackage("gh:juce-framework/juce#9.0.3") + CPMAddPackage("gh:juce-framework/juce#9.0.4") endif() diff --git a/README.md b/README.md index 4daf147..6abcd14 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,7 @@ The easiest way to get started with pluginval is to grab pre-compiled binaries f Once 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: ``` -git submodule update --init # grab JUCE -cmake -B Builds/Debug -DCMAKE_BUILD_TYPE=Debug . # configure +cmake -B Builds/Debug -DCMAKE_BUILD_TYPE=Debug . # configure (downloads JUCE and the other dependencies) cmake --build Builds/Debug --config Debug # build ``` diff --git a/ROADMAP.md b/ROADMAP.md index 5a63ca7..3b4e13b 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -6,9 +6,14 @@ You can help get there by issuing PRs or [funding](FUNDING.md) development. - [x] Integration of real-time safety checking (via rtcheck) - [x] Improved command-line handling and json config file support -- [ ] Acceptance testing using input files and reference output files +- [x] Acceptance testing using input files and reference output files +- [x] Integration with CTest +- [x] Machine-readable reports (JUnit XML and JSON) +- [x] GitHub Actions for validation and acceptance testing +- [ ] Acceptance testing: parameter automation during the render +- [ ] Acceptance testing: more comparison methods (e.g. spectral) +- [ ] Acceptance testing: multiple tests in one config file - [ ] Improved stack trace/crash reporting - [ ] Automatic integration of Asan/Tsan on platforms that allow it - [ ] More tests/logging -- [ ] Integration with CTest - [ ] Integration of real-time safety checking (via RTSan) diff --git a/tests/pluginval_as_dependency/CMakeLists.txt b/tests/pluginval_as_dependency/CMakeLists.txt index 01d22b7..c89322b 100644 --- a/tests/pluginval_as_dependency/CMakeLists.txt +++ b/tests/pluginval_as_dependency/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.22) project(PluginvalAsDependency VERSION 1.0.0) -set(JUCE_VERSION "9.0.3" CACHE STRING "JUCE version to test against") +set(JUCE_VERSION "9.0.4" CACHE STRING "JUCE version to test against") include(${CMAKE_CURRENT_LIST_DIR}/../../cmake/CPM.cmake)