Add --single-tests option to also build each libardour test as a separate program
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 11 Jul 2013 14:57:21 +0000 (10:57 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 11 Jul 2013 14:57:21 +0000 (10:57 -0400)
libs/ardour/run-profiling.sh
libs/ardour/run-tests.sh
libs/ardour/wscript
wscript

index 30daac9e6ec14aaebfee5ecae2a5e982a2c0b9ce..541c7254ceab31790d74e45ef0c928de6a14ba75 100644 (file)
@@ -3,30 +3,12 @@
 # Run libardour profiling tests.
 #
 
-if [ ! -f './tempo.cc' ]; then
-    echo "This script must be run from within the libs/ardour directory";
-    exit 1;
-fi
-
 if [ "$1" == "" ]; then
    echo "Syntax: run-profiling.sh [flag] <test> [<args>]"
    exit 1;
 fi
 
-cd ../..
-top=`pwd`
-cd build
-
-libs='libs'
-
-export LD_LIBRARY_PATH=$libs/audiographer:$libs/vamp-sdk:$libs/surfaces:$libs/surfaces/control_protocol:$libs/ardour:$libs/midi++2:$libs/pbd:$libs/rubberband:$libs/soundtouch:$libs/gtkmm2ext:$libs/appleutility:$libs/taglib:$libs/evoral:$libs/evoral/src/libsmf:$libs/timecode:/usr/local/lib:/usr/local/lib64:$LD_LIBRARY_PATH
-
-export ARDOUR_CONFIG_PATH=$top:$top/gtk2_ardour:$libs/..:$libs/../gtk2_ardour
-export ARDOUR_PANNER_PATH=$libs/panners/2in2out:$libs/panners/1in2out:$libs/panners/vbap
-export ARDOUR_SURFACES_PATH=$libs/surfaces/osc:$libs/surfaces/generic_midi:$libs/surfaces/tranzport:$libs/surfaces/powermate:$libs/surfaces/mackie
-export ARDOUR_MCP_PATH="../mcp"
-export ARDOUR_DLL_PATH=$libs
-export ARDOUR_DATA_PATH=$top/gtk2_ardour:$top/build/gtk2_ardour:.
+. test-env.sh
 
 export LD_PRELOAD=/home/carl/src/libfakejack/libjack.so
 # session='32tracks'
index b31751991c0158f221cf4d1a5cd2be401fdf59a3..fc7d68a8a56b1d4e4f6bbc85ab8bdf0ba4457f1d 100755 (executable)
@@ -3,30 +3,32 @@
 # Run libardour test suite.
 #
 
-if [ ! -f './tempo.cc' ]; then
-    echo "This script must be run from within the libs/ardour directory";
-    exit 1;
-fi
-
-cd ../..
-top=`pwd`
-cd build
-
-libs='libs'
-
-export LD_LIBRARY_PATH=$libs/audiographer:$libs/vamp-sdk:$libs/surfaces:$libs/surfaces/control_protocol:$libs/ardour:$libs/midi++2:$libs/pbd:$libs/rubberband:$libs/soundtouch:$libs/gtkmm2ext:$libs/appleutility:$libs/taglib:$libs/evoral:$libs/evoral/src/libsmf:$libs/timecode:$libs/libltc:/usr/local/lib:/usr/local/lib64:$LD_LIBRARY_PATH
-
-export ARDOUR_CONFIG_PATH=$top:$top/gtk2_ardour:$libs/..:$libs/../gtk2_ardour
-export ARDOUR_PANNER_PATH=$libs/panners/2in2out:$libs/panners/1in2out:$libs/panners/vbap
-export ARDOUR_SURFACES_PATH=$libs/surfaces/osc:$libs/surfaces/generic_midi:$libs/surfaces/tranzport:$libs/surfaces/powermate:$libs/surfaces/mackie
-export ARDOUR_MCP_PATH="../mcp"
-export ARDOUR_DLL_PATH=$libs
-export ARDOUR_DATA_PATH=$top/gtk2_ardour:$top/build/gtk2_ardour:.
-
-if [ "$1" == "--debug" ]; then
-        gdb ./libs/ardour/run-tests
-elif [ "$1" == "--valgrind" ]; then
-        valgrind ./libs/ardour/run-tests
+if [ "$1" == "--single" ] || [ "$2" == "--single" ]; then
+        if [ "$1" == "--single" ]; then
+               TESTS="test_*$2*"
+        elif [ "$2" == "--single" ]; then
+               TESTS="test_*$3*"
+       else
+                TESTS='test_*'
+        fi
+       for test_program in `find libs/ardour -name "$TESTS" -type f -perm /u+x`;
+       do
+               echo "Running $test_program..."
+                if [ "$1" == "--debug" ]; then
+                       gdb ./"$test_program"
+                elif [ "$1" == "--valgrind" ]; then
+                       valgrind ./"$test_program"
+               else
+                       ./"$test_program"
+               fi
+       done
 else
-        ./libs/ardour/run-tests $*
+        if [ "$1" == "--debug" ]; then
+                gdb ./libs/ardour/run-tests
+        elif [ "$1" == "--valgrind" ]; then
+                valgrind ./libs/ardour/run-tests
+        else
+                ./libs/ardour/run-tests $*
+        fi
 fi
+
index ef510dae6e37d523142a606e5f8d3296ed6598eb..106cb320ba1f2cb1f5bd83b957211ccb13bb9a78 100644 (file)
@@ -440,46 +440,17 @@ def build(bld):
 
     if bld.env['BUILD_TESTS'] and bld.is_defined('HAVE_CPPUNIT'):
         # Unit tests
-        testobj              = bld(features = 'cxx cxxprogram')
-        testobj.source       = '''
-                test/dummy_lxvst.cc
-                test/test_util.cc
-                test/test_needing_session.cc
-                test/audio_region_test.cc
-                test/test_globals.cc
-                test/automation_list_property_test.cc
-                test/bbt_test.cc
-                test/tempo_test.cc
-                test/interpolation_test.cc
-                test/midi_clock_slave_test.cc
-                test/resampled_source_test.cc
-                test/framewalk_to_beats_test.cc
-                test/framepos_plus_beats_test.cc
-                test/framepos_minus_beats_test.cc
-                test/playlist_layering_test.cc
-                test/playlist_equivalent_regions_test.cc
-                test/control_surfaces_test.cc
-                test/region_naming_test.cc
-                test/load_sessions_test.cc
-                test/mtdm_test.cc
-                test/testrunner.cc
-        '''.split()
-
-# Tests that don't work
-#                test/playlist_read_test.cc
-#                test/audio_region_read_test.cc
-#                test/combine_regions_test.cc
-#                test/mantis_3356_test.cc
-
-        testobj.includes     = obj.includes + ['test', '../pbd', '../libltc', '../audiographer']
-        testobj.uselib       = ['CPPUNIT','SIGCPP','JACK','GLIBMM','GTHREAD',
-                                'SAMPLERATE','XML','LRDF','COREAUDIO']
-        testobj.use          = ['libpbd','libmidipp','ardour','libltc','libaudiographer']
-        testobj.name         = 'libardour-tests'
-        testobj.target       = 'run-tests'
-        testobj.install_path = ''
-        testobj.defines      = [
-            'PACKAGE="libardour3test"',
+        # only build these common sources once
+        testcommon              = bld(features = 'cxx')
+        testcommon.includes     = obj.includes + ['test', '../pbd', '..']
+        testcommon.source       = ['test/test_globals.cc', 'test/testrunner.cc', 'test/test_needing_session.cc',
+                                   'test/dummy_lxvst.cc', 'test/audio_region_test.cc', 'test/test_util.cc' ]
+        testcommon.uselib       = ['CPPUNIT','SIGCPP','JACK','GLIBMM','GTHREAD',
+                                   'SAMPLERATE','XML','LRDF','COREAUDIO']
+        testcommon.use          = ['libpbd','libmidipp','libevoral','libvamphost',
+                                   'libvampplugin','libtaglib','librubberband',
+                                   'libaudiographer','libltc','ardour']
+        testcommon.defines      = [
             'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
             'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
             'LOCALEDIR="' + os.path.join(
@@ -487,13 +458,56 @@ def build(bld):
             'VAMP_DIR="' + os.path.join(
                 os.path.normpath(bld.env['LIBDIR']), 'ardour3', 'vamp') + '"'
             ]
+        testcommon.name         = 'testcommon'
+
         if bld.env['FPU_OPTIMIZATION']:
-            testobj.source += [ 'sse_functions_xmm.cc' ]
+            testcommon.source += [ 'sse_functions_xmm.cc' ]
             if (bld.env['build_target'] == 'i386'
                 or bld.env['build_target'] == 'i686'):
-                testobj.source += [ 'sse_functions.s' ]
+                testcommon.source += [ 'sse_functions.s' ]
             elif bld.env['build_target'] == 'x86_64':
-                testobj.source += [ 'sse_functions_64bit.s' ]
+                testcommon.source += [ 'sse_functions_64bit.s' ]
+
+        if bld.env['SINGLE_TESTS']:
+            create_ardour_test_program(bld, obj.includes, 'automation_list_property_test', 'test_automation_list_property', ['test/automation_list_property_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'bbt', 'test_bbt', ['test/bbt_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'tempo', 'test_tempo', ['test/tempo_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'interpolation', 'test_interpolation', ['test/interpolation_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'midi_clock_slave', 'test_midi_clock_slave', ['test/midi_clock_slave_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'resampled_source', 'test_resampled_source', ['test/resampled_source_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'framewalk_to_beats', 'test_framewalk_to_beats', ['test/framewalk_to_beats_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'framepos_plus_beats', 'test_framepos_plus_beats', ['test/framepos_plus_beats_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'framepos_minus_beats', 'test_framepos_minus_beats', ['test/framepos_minus_beats_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'playlist_equivalent_regions', 'test_playlist_equivalent_regions', ['test/playlist_equivalent_regions_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'playlist_layering', 'test_playlist_layering', ['test/playlist_layering_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'region_naming', 'test_region_naming', ['test/region_naming_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'control_surface', 'test_control_surfaces', ['test/control_surfaces_test.cc'])
+            create_ardour_test_program(bld, obj.includes, 'mtdm_test', 'test_mtdm', ['test/mtdm_test.cc'])
+
+        test_sources  = '''
+            test/automation_list_property_test.cc
+            test/bbt_test.cc
+            test/tempo_test.cc
+            test/interpolation_test.cc
+            test/midi_clock_slave_test.cc
+            test/resampled_source_test.cc
+            test/framewalk_to_beats_test.cc
+            test/framepos_plus_beats_test.cc
+            test/framepos_minus_beats_test.cc
+            test/playlist_equivalent_regions_test.cc
+            test/playlist_layering_test.cc
+            test/region_naming_test.cc
+            test/control_surfaces_test.cc
+            test/mtdm_test.cc
+        '''.split()
+
+# Tests that don't work
+#                test/playlist_read_test.cc
+#                test/audio_region_read_test.cc
+#                test/combine_regions_test.cc
+#                test/mantis_3356_test.cc
+
+        create_ardour_test_program(bld, obj.includes, 'libardour-tests', 'run-tests', test_sources)
 
         # Tester to just load a session
         session_load_tester = bld(features = 'cxx cxxprogram')
@@ -563,6 +577,29 @@ def build(bld):
                 elif bld.env['build_target'] == 'x86_64':
                     profilingobj.source += [ 'sse_functions_64bit.s' ]
 
+def create_ardour_test_program(bld, includes, name, target, sources):
+    testobj              = bld(features = 'cxx cxxprogram')
+    testobj.includes     = includes + ['test', '../pbd', '..']
+    testobj.source       = sources
+    testobj.uselib       = ['CPPUNIT','SIGCPP','JACK','GLIBMM','GTHREAD',
+                            'SAMPLERATE','XML','LRDF','COREAUDIO']
+    testobj.use          = ['libpbd','libmidipp','libevoral','libvamphost',
+                            'libvampplugin','libtaglib','librubberband',
+                            'libaudiographer','libltc','ardour','testcommon']
+    testobj.name         = name
+    testobj.target       = target
+    # not sure about install path
+    testobj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
+    testobj.defines      = [
+        'PACKAGE="libardour3test"',
+        'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
+        'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
+        'LOCALEDIR="' + os.path.join(
+            os.path.normpath(bld.env['DATADIR']), 'locale') + '"',
+        'VAMP_DIR="' + os.path.join(
+            os.path.normpath(bld.env['LIBDIR']), 'ardour3', 'vamp') + '"'
+        ]
+
 def shutdown():
     autowaf.shutdown()
 
diff --git a/wscript b/wscript
index 6e51d3d24d18ea472cce4090cc27af2b9617745f..a6106c0aeffb7ec697dd487d26fc4397bb9b0782 100644 (file)
--- a/wscript
+++ b/wscript
@@ -429,6 +429,8 @@ def options(opt):
                     help='Raise a floating point exception if a denormal is detected')
     opt.add_option('--test', action='store_true', default=False, dest='build_tests',
                     help="Build unit tests")
+    opt.add_option('--single-tests', action='store_true', default=False, dest='single_tests',
+                    help="Build a single executable for each unit test")
     #opt.add_option('--tranzport', action='store_true', default=False, dest='tranzport',
     # help='Compile with support for Frontier Designs Tranzport (if libusb is available)')
     opt.add_option('--universal', action='store_true', default=False, dest='universal',
@@ -626,6 +628,8 @@ def configure(conf):
         conf.env['ENABLE_NLS'] = True
     if opts.build_tests:
         conf.env['BUILD_TESTS'] = opts.build_tests
+    if opts.single_tests:
+        conf.env['SINGLE_TESTS'] = opts.single_tests
     #if opts.tranzport:
     #    conf.env['TRANZPORT'] = 1
     if opts.windows_vst: