diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-12-27 23:25:50 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-12-27 23:25:50 +0000 |
| commit | 0a42284a3d1eb6d9fe6dfbdec02a702d7f613ae1 (patch) | |
| tree | d5d210ca85d8e50f1353698df7b02ada84299cf5 | |
| parent | 67ba57e71faca808a71f168961f5f15ed3be12fe (diff) | |
Add gcov test coverage (written to build/test/coverage) and a couple more tests.
| -rwxr-xr-x | run/tests | 6 | ||||
| -rw-r--r-- | src/wscript | 149 | ||||
| -rw-r--r-- | test/fraction_test.cc | 37 | ||||
| -rw-r--r-- | test/wscript | 7 | ||||
| -rw-r--r-- | wscript | 1 |
5 files changed, 131 insertions, 69 deletions
@@ -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 @@ -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): |
