Detailed steps on how to reproduce the bug
Build examples/TestRunner with its own CMakeLists (Release, GCC 14.2) and run it with no
arguments on an idle machine with an audio device present (ALSA → PipeWire 1.4.2):
[doctest] test cases: 340 | 337 passed | 3 failed | 0 skipped
[doctest] assertions: 19156 | 19151 passed | 5 failed |
This is on develop at 0d55ef0c. The same three fail on 98fe32df (the pin from the day
before), so it is not a recent regression, and they fail identically when run alone with
-tc="Clip launcher*,FolderBasedProject*" — so it is not interference from parallel load
either.
1. Clip launcher: launch with clip source offset (audio)
tracktion_ClipLauncher.test.cpp:417
CHECK_LT( getRMSLevel (output, tr (5.1, 11.0)), 0.005f ) is NOT correct!
values: CHECK_LT( 0.063084, 0.005 )
The region that should be silent after the clip stops still carries about −24 dBFS.
2. Clip launcher: quantised launch and stop (audio)
tracktion_ClipLauncher.test.cpp:258
CHECK_GT( getToneMagnitude (output, range, frequency), isAudioTrack ? 0.5f : 0.05f ) is NOT correct!
3. FolderBasedProject: removeProjectItem → removes item and deletes source file
tracktion_Project.test.cpp:2393-2395
*** ERROR: /tmp/temp_43040129/remove_test2/audio2.wav 0 bytes
CHECK( project->removeProjectItem (ref, true) ) is NOT correct! values: CHECK( false )
CHECK( project->getNumProjectItems() == 0 ) is NOT correct!
CHECK_FALSE( sourceFile.existsAsFile() ) is NOT correct!
This one has a definite Linux-specific cause, and it is not the file's size.
FolderBasedProject::removeProjectItem (tracktion_FolderBasedProject.cpp:449) returns
false when ProjectItem::deleteSourceFile() (tracktion_ProjectItem.cpp:839) fails to
File::moveToTrash() the file. On Linux moveToTrash() is g_file_trash from libgio
(juce_Files_linux.cpp:180), and the test creates its project under
juce::File::createTempFile ({}), i.e. under /tmp, which is tmpfs on most distributions.
gio refuses to trash there:
$ gio trash /tmp/x.wav
gio: file:///tmp/x.wav: Trashing on system internal mounts is not supported
So the subcase fails on any Linux where the temp directory is a separate, system-internal
mount, while it passes on macOS and Windows. The 0 bytes line above is just the diagnostic
dump deleteSourceFile() prints in its if (! ok) branch after the trash attempt has
already failed. The sibling subcase (removes item without deleting source file,
del = false) never reaches moveToTrash and passes.
What is the expected behaviour?
TestRunner passes on Linux, so that a downstream project can use it as a smoke test after
changing its submodule pin. Right now three pre-existing failures have to be memorised and
subtracted by hand — they are indistinguishable from breakage the update itself caused.
For (3) either side would do: the test could create its project somewhere that supports a
trash (or delete the file directly and assert on that), or deleteSourceFile() could fall
back to deleteFile() when the platform reports that trashing is unavailable — though that
turns a recoverable delete into a permanent one, so it is your call.
Not blocking us directly: we use neither the clip launcher nor folder-based projects.
Unit test to reproduce the error?
The failing tests are already in the tree — see the file and line references above.
Operating systems
Linux
What versions of the operating systems?
Debian 13 (trixie), kernel 6.16, GCC 14.2
Architectures
Intel/AMD 64-bit
Testing on the develop branch
The bug is present on the develop branch (0d55ef0c).
Code of Conduct
Detailed steps on how to reproduce the bug
Build
examples/TestRunnerwith its own CMakeLists (Release, GCC 14.2) and run it with noarguments on an idle machine with an audio device present (ALSA → PipeWire 1.4.2):
This is on
developat0d55ef0c. The same three fail on98fe32df(the pin from the daybefore), so it is not a recent regression, and they fail identically when run alone with
-tc="Clip launcher*,FolderBasedProject*"— so it is not interference from parallel loadeither.
1.
Clip launcher: launch with clip source offset (audio)tracktion_ClipLauncher.test.cpp:417The region that should be silent after the clip stops still carries about −24 dBFS.
2.
Clip launcher: quantised launch and stop (audio)tracktion_ClipLauncher.test.cpp:2583.
FolderBasedProject: removeProjectItem→removes item and deletes source filetracktion_Project.test.cpp:2393-2395This one has a definite Linux-specific cause, and it is not the file's size.
FolderBasedProject::removeProjectItem(tracktion_FolderBasedProject.cpp:449) returnsfalsewhenProjectItem::deleteSourceFile()(tracktion_ProjectItem.cpp:839) fails toFile::moveToTrash()the file. On LinuxmoveToTrash()isg_file_trashfrom libgio(
juce_Files_linux.cpp:180), and the test creates its project underjuce::File::createTempFile ({}), i.e. under/tmp, which is tmpfs on most distributions.gio refuses to trash there:
So the subcase fails on any Linux where the temp directory is a separate, system-internal
mount, while it passes on macOS and Windows. The
0 bytesline above is just the diagnosticdump
deleteSourceFile()prints in itsif (! ok)branch after the trash attempt hasalready failed. The sibling subcase (
removes item without deleting source file,del = false) never reachesmoveToTrashand passes.What is the expected behaviour?
TestRunnerpasses on Linux, so that a downstream project can use it as a smoke test afterchanging its submodule pin. Right now three pre-existing failures have to be memorised and
subtracted by hand — they are indistinguishable from breakage the update itself caused.
For (3) either side would do: the test could create its project somewhere that supports a
trash (or delete the file directly and assert on that), or
deleteSourceFile()could fallback to
deleteFile()when the platform reports that trashing is unavailable — though thatturns a recoverable delete into a permanent one, so it is your call.
Not blocking us directly: we use neither the clip launcher nor folder-based projects.
Unit test to reproduce the error?
The failing tests are already in the tree — see the file and line references above.
Operating systems
Linux
What versions of the operating systems?
Debian 13 (trixie), kernel 6.16, GCC 14.2
Architectures
Intel/AMD 64-bit
Testing on the
developbranchThe bug is present on the
developbranch (0d55ef0c).Code of Conduct