summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-12-27 23:25:50 +0000
committerCarl Hetherington <cth@carlh.net>2014-12-27 23:25:50 +0000
commit0a42284a3d1eb6d9fe6dfbdec02a702d7f613ae1 (patch)
treed5d210ca85d8e50f1353698df7b02ada84299cf5
parent67ba57e71faca808a71f168961f5f15ed3be12fe (diff)
Add gcov test coverage (written to build/test/coverage) and a couple more tests.
-rwxr-xr-xrun/tests6
-rw-r--r--src/wscript149
-rw-r--r--test/fraction_test.cc37
-rw-r--r--test/wscript7
-rw-r--r--wscript1
5 files changed, 131 insertions, 69 deletions
diff --git a/run/tests b/run/tests
index 5c99f479..721651e3 100755
--- a/run/tests
+++ b/run/tests
@@ -97,4 +97,10 @@ fi
# and check that they are right
$dcpinfo -s $private/JourneyToJah_TLR-1_F_EN-DE-FR_CH_51_2K_LOK_20140225_DGL_SMPTE_OV >> $work/jah.log
+# Calculate coverage
+cd build
+gcovr --root=$(pwd) --keep
+lcov --capture --directory $(pwd) --base-directory $(pwd) --output-file test/coverage.info
+genhtml test/coverage.info --output-directory test/coverage
+
echo "PASS"
diff --git a/src/wscript b/src/wscript
index a5d34886..583c3608 100644
--- a/src/wscript
+++ b/src/wscript
@@ -1,74 +1,64 @@
from waflib import TaskGen
def build(bld):
- if bld.env.STATIC:
- obj = bld(features = 'cxx cxxstlib')
- else:
- obj = bld(features = 'cxx cxxshlib')
-
- obj.name = 'libdcp%s' % bld.env.API_VERSION
- obj.target = 'dcp%s' % bld.env.API_VERSION
- obj.export_includes = ['.']
- obj.uselib = 'BOOST_FILESYSTEM BOOST_SIGNALS2 BOOST_DATETIME OPENSSL SIGC++ LIBXML++ OPENJPEG CXML XMLSEC1'
- obj.use = 'libkumu-libdcp%s libasdcp-libdcp%s' % (bld.env.API_VERSION, bld.env.API_VERSION)
- obj.source = """
- argb_frame.cc
- asset.cc
- certificate_chain.cc
- certificates.cc
- colour_matrix.cc
- content.cc
- cpl.cc
- dcp.cc
- dcp_time.cc
- decrypted_kdm.cc
- decrypted_kdm_key.cc
- encrypted_kdm.cc
- exceptions.cc
- file.cc
- font.cc
- gamma_lut.cc
- image.cc
- interop_load_font.cc
- interop_subtitle_content.cc
- key.cc
- local_time.cc
- metadata.cc
- mono_picture_mxf.cc
- mono_picture_mxf_writer.cc
- mono_picture_frame.cc
- mxf.cc
- mxf_writer.cc
- object.cc
- picture_mxf.cc
- picture_mxf_writer.cc
- reel.cc
- reel_asset.cc
- reel_mono_picture_asset.cc
- reel_mxf_asset.cc
- reel_picture_asset.cc
- reel_sound_asset.cc
- reel_stereo_picture_asset.cc
- reel_subtitle_asset.cc
- rgb_xyz.cc
- signer.cc
- smpte_load_font.cc
- smpte_subtitle_content.cc
- sound_mxf.cc
- sound_mxf_writer.cc
- sound_frame.cc
- stereo_picture_mxf.cc
- stereo_picture_mxf_writer.cc
- stereo_picture_frame.cc
- subtitle.cc
- subtitle_content.cc
- subtitle_string.cc
- text.cc
- types.cc
- util.cc
- version.cc
- xyz_frame.cc
- """
+ source = """
+ argb_frame.cc
+ asset.cc
+ certificate_chain.cc
+ certificates.cc
+ colour_matrix.cc
+ content.cc
+ cpl.cc
+ dcp.cc
+ dcp_time.cc
+ decrypted_kdm.cc
+ decrypted_kdm_key.cc
+ encrypted_kdm.cc
+ exceptions.cc
+ file.cc
+ font.cc
+ gamma_lut.cc
+ image.cc
+ interop_load_font.cc
+ interop_subtitle_content.cc
+ key.cc
+ local_time.cc
+ metadata.cc
+ mono_picture_mxf.cc
+ mono_picture_mxf_writer.cc
+ mono_picture_frame.cc
+ mxf.cc
+ mxf_writer.cc
+ object.cc
+ picture_mxf.cc
+ picture_mxf_writer.cc
+ reel.cc
+ reel_asset.cc
+ reel_mono_picture_asset.cc
+ reel_mxf_asset.cc
+ reel_picture_asset.cc
+ reel_sound_asset.cc
+ reel_stereo_picture_asset.cc
+ reel_subtitle_asset.cc
+ rgb_xyz.cc
+ signer.cc
+ smpte_load_font.cc
+ smpte_subtitle_content.cc
+ sound_mxf.cc
+ sound_mxf_writer.cc
+ sound_frame.cc
+ stereo_picture_mxf.cc
+ stereo_picture_mxf_writer.cc
+ stereo_picture_frame.cc
+ subtitle.cc
+ subtitle_content.cc
+ subtitle_string.cc
+ text.cc
+ types.cc
+ util.cc
+ version.cc
+ xyz_frame.cc
+ """
headers = """
asset.h
@@ -127,6 +117,29 @@ def build(bld):
xyz_frame.h
"""
+ # Main library
+ if bld.env.STATIC:
+ obj = bld(features='cxx cxxstlib')
+ else:
+ obj = bld(features='cxx cxxshlib')
+ obj.name = 'libdcp%s' % bld.env.API_VERSION
+ obj.target = 'dcp%s' % bld.env.API_VERSION
+ obj.export_includes = ['.']
+ obj.uselib = 'BOOST_FILESYSTEM BOOST_SIGNALS2 BOOST_DATETIME OPENSSL SIGC++ LIBXML++ OPENJPEG CXML XMLSEC1'
+ obj.use = 'libkumu-libdcp%s libasdcp-libdcp%s' % (bld.env.API_VERSION, bld.env.API_VERSION)
+ obj.source = source
+
+ # Library for gcov
+ if bld.is_defined('HAVE_GCOV'):
+ obj = bld(features='cxx cxxstlib')
+ obj.name = 'libdcp%s_gcov' % bld.env.API_VERSION
+ obj.target = 'dcp%s_gcov' % bld.env.API_VERSION
+ obj.export_includes = ['.']
+ obj.uselib = 'BOOST_FILESYSTEM BOOST_SIGNALS2 BOOST_DATETIME OPENSSL SIGC++ LIBXML++ OPENJPEG CXML XMLSEC1'
+ obj.use = 'libkumu-libdcp%s libasdcp-libdcp%s' % (bld.env.API_VERSION, bld.env.API_VERSION)
+ obj.source = source
+ obj.cppflags = ['-fprofile-arcs', '-ftest-coverage']
+
bld.install_files('${PREFIX}/include/libdcp%s/dcp' % bld.env.API_VERSION, headers)
if bld.env.STATIC:
bld.install_files('${PREFIX}/lib', 'libdcp%s.a' % bld.env.API_VERSION)
diff --git a/test/fraction_test.cc b/test/fraction_test.cc
new file mode 100644
index 00000000..445805d1
--- /dev/null
+++ b/test/fraction_test.cc
@@ -0,0 +1,37 @@
+/*
+ Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include "types.h"
+#include "exceptions.h"
+#include <boost/test/unit_test.hpp>
+
+BOOST_AUTO_TEST_CASE (fraction_test)
+{
+ dcp::Fraction f (42, 26);
+ dcp::Fraction g (42, 26);
+ dcp::Fraction h (43, 26);
+ dcp::Fraction i (42, 27);
+
+ BOOST_CHECK (f == g);
+ BOOST_CHECK (g != h);
+ BOOST_CHECK (g != i);
+
+ BOOST_CHECK_THROW (dcp::Fraction ("1 2 3"), dcp::XMLError);
+}
+
diff --git a/test/wscript b/test/wscript
index 1ac7cb3e..2bdf6a3d 100644
--- a/test/wscript
+++ b/test/wscript
@@ -19,7 +19,11 @@ def build(bld):
obj = bld(features='cxx cxxprogram')
obj.name = 'tests'
obj.uselib = 'BOOST_TEST OPENJPEG CXML XMLSEC1 SNDFILE'
- obj.use = 'libdcp%s' % bld.env.API_VERSION
+ if bld.env.HAVE_GCOV:
+ obj.use = 'libdcp%s_gcov' % bld.env.API_VERSION
+ obj.lib = ['gcov']
+ else:
+ obj.use = 'libdcp%s' % bld.env.API_VERSION
obj.source = """
certificates_test.cc
colour_test.cc
@@ -28,6 +32,7 @@ def build(bld):
dcp_time_test.cc
decryption_test.cc
encryption_test.cc
+ fraction_test.cc
frame_info_test.cc
local_time_test.cc
kdm_test.cc
diff --git a/wscript b/wscript
index b4664a5a..116e35f9 100644
--- a/wscript
+++ b/wscript
@@ -111,6 +111,7 @@ def configure(conf):
if not conf.env.DISABLE_TESTS:
conf.recurse('test')
+ conf.check(lib='gcov', define_name='HAVE_GCOV', mandatory=False)
conf.recurse('asdcplib')
def build(bld):