@@ -356,6 +356,27 @@ static void validate (CommandLineValidator& validator, const ArgumentList& args)
356356 }
357357}
358358
359+ int getNumTestFailures (UnitTestRunner& testRunner)
360+ {
361+ int numFailures = 0 ;
362+
363+ for (int i = 0 ; i < testRunner.getNumResults (); ++i)
364+ if (auto result = testRunner.getResult (i))
365+ numFailures += result->failures ;
366+
367+ return numFailures;
368+ }
369+
370+ void runUnitTests ()
371+ {
372+ UnitTestRunner testRunner;
373+ testRunner.runTestsInCategory (" pluginval" );
374+ const int numFailures = getNumTestFailures (testRunner);
375+
376+ if (numFailures > 0 )
377+ ConsoleApplication::fail (String (numFailures) + " tests failed!!!" );
378+ }
379+
359380// ==============================================================================
360381void performCommandLine (CommandLineValidator& validator, const ArgumentList& args)
361382{
@@ -368,6 +389,10 @@ void performCommandLine (CommandLineValidator& validator, const ArgumentList& ar
368389 " --validate [list]" ,
369390 " Validates the files (or IDs for AUs)." , String (),
370391 [&validator] (const auto & args) { validate (validator, args); }});
392+ cli.addCommand ({ " --run-tests" ,
393+ " --run-tests" ,
394+ " Runs the internal unit tests." , String (),
395+ [] (const auto &) { runUnitTests (); }});
371396
372397 JUCEApplication::getInstance ()->setApplicationReturnValue (cli.findAndRunCommand (args));
373398
@@ -380,7 +405,8 @@ bool shouldPerformCommandLine (const ArgumentList& args)
380405{
381406 return args.containsOption (" --help|-h" )
382407 || args.containsOption (" --version" )
383- || args.containsOption (" --validate" );
408+ || args.containsOption (" --validate" )
409+ || args.containsOption (" --run-tests" );
384410}
385411
386412// ==============================================================================
0 commit comments