Clean up unit testing.
authorCarl Hetherington <cth@carlh.net>
Wed, 26 Feb 2014 15:43:53 +0000 (15:43 +0000)
committerCarl Hetherington <cth@carlh.net>
Wed, 26 Feb 2014 15:43:53 +0000 (15:43 +0000)
20 files changed:
.gitmodules [new file with mode: 0644]
TESTING [new file with mode: 0644]
run-tests.sh [deleted file]
run/tests [new file with mode: 0755]
src/signer_chain.cc
test/dcp_test.cc
test/decryption_test.cc
test/encryption_test.cc
test/private [new submodule]
test/ref/DCP/bar/402c5a88-2512-4465-9c0b-cfa687dbc5d0_pkl.xml [deleted file]
test/ref/DCP/bar/63c3aece-c581-4603-b612-75e43f0c0430_cpl.xml [deleted file]
test/ref/DCP/bar/7b6616d2-9afe-4d54-a2bb-4f3f71ac6e0c_cpl.xml [new file with mode: 0644]
test/ref/DCP/bar/ASSETMAP.xml
test/ref/DCP/bar/VOLINDEX.xml
test/ref/DCP/bar/a12d2c1f-0daa-4a30-a4cd-c4266ac172a7_pkl.xml [new file with mode: 0644]
test/ref/DCP/bar/audio.mxf
test/ref/DCP/bar/video.mxf
test/rewrite_subs.cc
test/test.cc
test/test.h

diff --git a/.gitmodules b/.gitmodules
new file mode 100644 (file)
index 0000000..f7fb9ff
--- /dev/null
@@ -0,0 +1,3 @@
+[submodule "test/private"]
+       path = test/private
+       url = ssh://carlh.dyndns.org/home/carl/git/libdcp-test.git
diff --git a/TESTING b/TESTING
new file mode 100644 (file)
index 0000000..5896f24
--- /dev/null
+++ b/TESTING
@@ -0,0 +1,4 @@
+libdcp has unit tests which are run with
+
+run/tests
+
diff --git a/run-tests.sh b/run-tests.sh
deleted file mode 100755 (executable)
index fc56b24..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/bash -e
-
-#
-# Runs our test suite, which (amongst other things)
-# builds a couple of DCPs.
-# The outputs are compared against the ones
-# in test/ref/DCP, and an error is given
-# if anything is different.
-#
-
-if [ ! -e "../libdcp-test" ]; then
-  echo "Test corpus not found"
-  exit 1
-fi
-
-if [ "$1" == "--debug" ]; then
-  shift
-  LD_LIBRARY_PATH=build/src:build/asdcplib/src gdb --args build/test/tests
-elif [ "$1" == "--valgrind" ]; then
-  shift
-  LD_LIBRARY_PATH=build/src:build/asdcplib/src valgrind --tool="memcheck" build/test/tests
-else
-  LD_LIBRARY_PATH=build/src:build/asdcplib/src build/test/tests $*
-fi
-
-diff -ur test/ref/DCP/foo build/test/foo
-if [ "$?" != "0" ]; then
-  echo "FAIL: files differ"
-  exit 1
-fi
-
-diff -ur test/ref/DCP/bar build/test/bar
-if [ "$?" != "0" ]; then
-  echo "FAIL: files differ"
-  exit 1
-fi
-
-rm -f build/test/info.log
-
-for d in `find ../libdcp-test -mindepth 1 -maxdepth 1 -type d | sort`; do
-  if [ `basename $d` != ".git" ]; then
-    LD_LIBRARY_PATH=build/src:build/asdcplib/src build/tools/dcpinfo -s $d >> build/test/info.log
-    if [ "$?" != "0" ]; then
-      echo "FAIL: dcpinfo failed for $d"
-      exit 1
-    fi
-  fi
-done
-
-diff -q build/test/info.log ../libdcp-test/info.log
-if [ "$?" != "0" ]; then
-  echo "FAIL: dcpinfo output incorrect"
-  exit 1
-fi
-
-rm -f build/test/info2.log
-rm -rf build/test/libdcp-test
-
-cp -r ../libdcp-test build/test
-for d in `find build/test/libdcp-test -mindepth 1 -maxdepth 1 -type d | sort`; do
-  if [ `basename $d` != ".git" ]; then
-    LD_LIBRARY_PATH=build/src:build/asdcplib/src build/test/rewrite_subs $d
-    LD_LIBRARY_PATH=build/src:build/asdcplib/src build/tools/dcpinfo -s $d >> build/test/info2.log
-  fi
-done
-
-sed -i "s/DCP: build\/test/DCP: \.\./g" build/test/info2.log
-
-diff -q build/test/info2.log ../libdcp-test/info.log
-if [ "$?" != "0" ]; then
-  echo "FAIL: dcpinfo output from rewrite incorrect"
-  exit 1
-fi
-
-diff build/test/baz/video1.mxf build/test/baz/video2.mxf
-if [ "$?" != "0" ]; then
-  echo "FAIL: MXFs from recovery incorrect"
-  exit 1
-fi
-    
-echo "PASS"
diff --git a/run/tests b/run/tests
new file mode 100755 (executable)
index 0000000..97512b5
--- /dev/null
+++ b/run/tests
@@ -0,0 +1,88 @@
+#!/bin/bash -e
+#
+# Run our test suite, which (amongst other things)
+# builds a couple of DCPs.
+# The outputs are compared against the ones
+# in test/ref/DCP, and an error is given
+# if anything is different.
+
+private=test/private
+
+# Run the unit tests in test/
+if [ "$1" == "--debug" ]; then
+    shift
+    LD_LIBRARY_PATH=build/src:build/asdcplib/src gdb --args build/test/tests
+elif [ "$1" == "--valgrind" ]; then
+    shift
+    LD_LIBRARY_PATH=build/src:build/asdcplib/src valgrind --tool="memcheck" build/test/tests
+else
+    LD_LIBRARY_PATH=build/src:build/asdcplib/src build/test/tests $*
+fi
+
+if [ ! -e "test/private/info.log" ]; then
+    echo "Private data not found: some tests will not run"
+fi
+
+# Check the first DCP written by the unit tests
+diff -ur test/ref/DCP/foo build/test/DCP/foo
+if [ "$?" != "0" ]; then
+    echo "FAIL: files differ"
+    exit 1
+fi
+
+# Check the second DCP written by the unit tests
+diff -ur test/ref/DCP/bar build/test/DCP/bar
+if [ "$?" != "0" ]; then
+    echo "FAIL: files differ"
+    exit 1
+fi
+
+# Run dcpinfo on all the DCPs in private/metadata, writing build/test/info.log
+rm -f build/test/info.log
+for d in `find $private/metadata -mindepth 1 -maxdepth 1 -type d | sort`; do
+    if [ `basename $d` != ".git" ]; then
+        LD_LIBRARY_PATH=build/src:build/asdcplib/src build/tools/dcpinfo -s $d >> build/test/info.log
+        if [ "$?" != "0" ]; then
+            echo "FAIL: dcpinfo failed for $d"
+            exit 1
+        fi
+    fi
+done
+
+# Check info.log is what it should be
+diff -q build/test/info.log $private/info.log
+if [ "$?" != "0" ]; then
+    echo "FAIL: dcpinfo output incorrect"
+    exit 1
+fi
+
+# Copy test/private into build/ then re-write the subtitles of every DCP using 
+# build/test/rewrite_subs.  This tests round-trip of subtitle reading/writing.
+rm -f build/test/info2.log
+rm -rf build/test/private
+cp -r $private build/test
+for d in `find build/test/private/metadata -mindepth 1 -maxdepth 1 -type d | sort`; do
+    if [ `basename $d` != ".git" ]; then
+        LD_LIBRARY_PATH=build/src:build/asdcplib/src build/test/rewrite_subs $d
+        LD_LIBRARY_PATH=build/src:build/asdcplib/src build/tools/dcpinfo -s $d >> build/test/info2.log
+    fi
+done
+
+# Fudge the output
+sed -i "s/DCP: build\/test/DCP: test/g" build/test/info2.log
+
+# And check it
+diff -q build/test/info2.log $private/info.log
+if [ "$?" != "0" ]; then
+    echo "FAIL: dcpinfo output from rewrite incorrect"
+    exit 1
+fi
+
+# Check a MXF written by the unit tests
+diff build/test/baz/video1.mxf build/test/baz/video2.mxf
+if [ "$?" != "0" ]; then
+    echo "FAIL: MXFs from recovery incorrect"
+    exit 1
+fi
+    
+echo "PASS"
index d407286ee3dc72854a716c010cc42ffee0ed1324..f35e4ff61732c8f8d957455144d26f1e4ab2ab9b 100644 (file)
@@ -70,6 +70,7 @@ static void command (string cmd)
 
        delete[] buffer;
 #else
+       cmd += " 2> /dev/null";
        int const r = system (cmd.c_str ());
        int const code = WEXITSTATUS (r);
 #endif
index f70c6ce88ec4686040d42e277a8b067f3a5a103d..d0c8b973e91264d70c0db47e29f3565050d539a3 100644 (file)
@@ -44,13 +44,13 @@ BOOST_AUTO_TEST_CASE (dcp_test)
        mxf_meta.product_name = "OpenDCP";
        mxf_meta.product_version = "0.0.25";
 
-       /* We're making build/test/foo */
-       boost::filesystem::remove_all ("build/test/foo");
-       boost::filesystem::create_directories ("build/test/foo");
-       libdcp::DCP d ("build/test/foo");
-       shared_ptr<libdcp::CPL> cpl (new libdcp::CPL ("build/test/foo", "A Test DCP", libdcp::FEATURE, 24, 24));
+       /* We're making build/test/DCP/foo */
+       boost::filesystem::remove_all ("build/test/DCP/foo");
+       boost::filesystem::create_directories ("build/test/DCP/foo");
+       libdcp::DCP d ("build/test/DCP/foo");
+       shared_ptr<libdcp::CPL> cpl (new libdcp::CPL ("build/test/DCP/foo", "A Test DCP", libdcp::FEATURE, 24, 24));
 
-       shared_ptr<libdcp::MonoPictureAsset> mp (new libdcp::MonoPictureAsset ("build/test/foo", "video.mxf"));
+       shared_ptr<libdcp::MonoPictureAsset> mp (new libdcp::MonoPictureAsset ("build/test/DCP/foo", "video.mxf"));
        mp->set_progress (&d.Progress);
        mp->set_edit_rate (24);
        mp->set_intrinsic_duration (24);
@@ -59,7 +59,7 @@ BOOST_AUTO_TEST_CASE (dcp_test)
        mp->set_metadata (mxf_meta);
        mp->create (j2c);
 
-       shared_ptr<libdcp::SoundAsset> ms (new libdcp::SoundAsset ("build/test/foo", "audio.mxf"));
+       shared_ptr<libdcp::SoundAsset> ms (new libdcp::SoundAsset ("build/test/DCP/foo", "audio.mxf"));
        ms->set_progress (&d.Progress);
        ms->set_edit_rate (24);
        ms->set_intrinsic_duration (24);
@@ -73,5 +73,5 @@ BOOST_AUTO_TEST_CASE (dcp_test)
 
        d.write_xml (false, xml_meta);
 
-       /* build/test/foo is checked against test/ref/DCP/foo by run-tests.sh */
+       /* build/test/DCP/foo is checked against test/ref/DCP/foo by run-tests.sh */
 }
index 0f5a4ef0c394953c623de5668e04619c4b861195..d0e067ee138610f3cccb053036861a532b45b803 100644 (file)
@@ -45,13 +45,13 @@ get_frame (libdcp::DCP const & dcp)
 /** Decrypt an encrypted test DCP and check that its first frame is the same as the unencrypted version */
 BOOST_AUTO_TEST_CASE (decryption_test)
 {
-       boost::filesystem::path plaintext_path = test_corpus;
+       boost::filesystem::path plaintext_path = private_test;
        plaintext_path /= "TONEPLATES-SMPTE-PLAINTEXT_TST_F_XX-XX_ITL-TD_51-XX_2K_WOE_20111001_WOE_OV";
        libdcp::DCP plaintext (plaintext_path.string ());
        plaintext.read ();
        BOOST_CHECK_EQUAL (plaintext.encrypted (), false);
 
-       boost::filesystem::path encrypted_path = test_corpus;
+       boost::filesystem::path encrypted_path = private_test;
        encrypted_path /= "TONEPLATES-SMPTE-ENCRYPTED_TST_F_XX-XX_ITL-TD_51-XX_2K_WOE_20111001_WOE_OV";
        libdcp::DCP encrypted (encrypted_path.string ());
        encrypted.read ();
index dc49562cb796e2edf79e04141d06f16a1a98108c..40003413c87e4b7b81ac256ced2a4fa9f39e9925 100644 (file)
@@ -58,15 +58,16 @@ BOOST_AUTO_TEST_CASE (encryption)
        boost::filesystem::create_directories ("build/test/DCP/bar");
        libdcp::DCP d ("build/test/DCP/bar");
 
+       /* Use test/ref/crypt so this test is repeatable */
        libdcp::CertificateChain chain;
-       chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate (boost::filesystem::path ("build/test/signer/ca.self-signed.pem"))));
-       chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate (boost::filesystem::path ("build/test/signer/intermediate.signed.pem"))));
-       chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate (boost::filesystem::path ("build/test/signer/leaf.signed.pem"))));
+       chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate (boost::filesystem::path ("test/ref/crypt/ca.self-signed.pem"))));
+       chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate (boost::filesystem::path ("test/ref/crypt/intermediate.signed.pem"))));
+       chain.add (shared_ptr<libdcp::Certificate> (new libdcp::Certificate (boost::filesystem::path ("test/ref/crypt/leaf.signed.pem"))));
 
        shared_ptr<libdcp::Signer> signer (
                new libdcp::Signer (
                        chain,
-                       "build/test/signer/leaf.key"
+                       "test/ref/crypt/leaf.key"
                        )
                );
 
@@ -110,12 +111,21 @@ BOOST_AUTO_TEST_CASE (encryption)
                );
 
        kdm.as_xml ("build/test/bar.kdm.xml");
-       system ("xmllint --path schema --nonet --noout --schema schema/SMPTE-430-1-2006-Amd-1-2009-KDM.xsd build/test/bar.kdm.xml");
-       system ("xmlsec1 verify "
-               "--pubkey-cert-pem build/test/signer/leaf.signed.pem "
-               "--trusted-pem build/test/signer/intermediate.signed.pem "
-               "--trusted-pem build/test/signer/ca.self-signed.pem "
+       
+       int r = system (
+               "xmllint --path schema --nonet --noout --schema schema/SMPTE-430-1-2006-Amd-1-2009-KDM.xsd build/test/bar.kdm.xml "
+               "> build/test/xmllint.log 2>&1 < /dev/null"
+               );
+       
+       BOOST_CHECK_EQUAL (WEXITSTATUS (r), 0);
+               
+       r = system ("xmlsec1 verify "
+               "--pubkey-cert-pem test/ref/crypt/leaf.signed.pem "
+               "--trusted-pem test/ref/crypt/intermediate.signed.pem "
+               "--trusted-pem test/ref/crypt/ca.self-signed.pem "
                "--id-attr:Id http://www.smpte-ra.org/schemas/430-3/2006/ETM:AuthenticatedPublic "
                "--id-attr:Id http://www.smpte-ra.org/schemas/430-3/2006/ETM:AuthenticatedPrivate "
-               "build/test/bar.kdm.xml");
+                   "build/test/bar.kdm.xml > build/test/xmlsec1.log 2>&1 < /dev/null");
+       
+       BOOST_CHECK_EQUAL (WEXITSTATUS (r), 0);
 }
diff --git a/test/private b/test/private
new file mode 160000 (submodule)
index 0000000..621e4b3
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 621e4b317e62a278945509c776c04db94f4db6a2
diff --git a/test/ref/DCP/bar/402c5a88-2512-4465-9c0b-cfa687dbc5d0_pkl.xml b/test/ref/DCP/bar/402c5a88-2512-4465-9c0b-cfa687dbc5d0_pkl.xml
deleted file mode 100644 (file)
index a87f9e2..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<PackingList xmlns="http://www.smpte-ra.org/schemas/429-8/2007/PKL">
-  <Id>urn:uuid:402c5a88-2512-4465-9c0b-cfa687dbc5d0</Id>
-  <AnnotationText>A Test DCP</AnnotationText>
-  <IssueDate>2012-07-17T04:45:18+00:00</IssueDate>
-  <Issuer>OpenDCP 0.0.25</Issuer>
-  <Creator>OpenDCP 0.0.25</Creator>
-  <AssetList>
-    <Asset>
-      <Id>urn:uuid:2b9b857f-ab4a-440e-a313-1ace0f1cfc95</Id>
-      <AnnotationText>video.mxf</AnnotationText>
-      <Hash>fTMi9Xvr8NzuRhm7LmSTk6k1HYo=</Hash>
-      <Size>28840</Size>
-      <Type>application/mxf</Type>
-    </Asset>
-    <Asset>
-      <Id>urn:uuid:aa3fb133-0d18-4083-a039-e441b0788e79</Id>
-      <AnnotationText>audio.mxf</AnnotationText>
-      <Hash>2MlsntiFrekkQvwbRPLC2XEMU78=</Hash>
-      <Size>308398</Size>
-      <Type>application/mxf</Type>
-    </Asset>
-    <Asset>
-      <Id>urn:uuid:63c3aece-c581-4603-b612-75e43f0c0430</Id>
-      <Hash>l/g+bdCKF6ofhedin5qrLcObS1E=</Hash>
-      <Size>1526</Size>
-      <Type>text/xml</Type>
-    </Asset>
-  </AssetList>
-</PackingList>
diff --git a/test/ref/DCP/bar/63c3aece-c581-4603-b612-75e43f0c0430_cpl.xml b/test/ref/DCP/bar/63c3aece-c581-4603-b612-75e43f0c0430_cpl.xml
deleted file mode 100644 (file)
index 43edb1b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<CompositionPlaylist xmlns="http://www.smpte-ra.org/schemas/429-7/2006/CPL">
-  <Id>urn:uuid:63c3aece-c581-4603-b612-75e43f0c0430</Id>
-  <AnnotationText>A Test DCP</AnnotationText>
-  <IssueDate>2012-07-17T04:45:18+00:00</IssueDate>
-  <Creator>OpenDCP 0.0.25</Creator>
-  <ContentTitleText>A Test DCP</ContentTitleText>
-  <ContentKind>feature</ContentKind>
-  <ContentVersion>
-    <Id>urn:uri:63c3aece-c581-4603-b612-75e43f0c0430_2012-07-17T04:45:18+00:00</Id>
-    <LabelText>63c3aece-c581-4603-b612-75e43f0c0430_2012-07-17T04:45:18+00:00</LabelText>
-  </ContentVersion>
-  <RatingList/>
-  <ReelList>
-    <Reel>
-      <Id>urn:uuid:7d861d35-c775-48e6-a4f8-fbfdbfc1556a</Id>
-      <AssetList>
-        <MainPicture>
-          <Id>urn:uuid:2b9b857f-ab4a-440e-a313-1ace0f1cfc95</Id>
-          <AnnotationText>video.mxf</AnnotationText>
-          <EditRate>24 1</EditRate>
-          <IntrinsicDuration>24</IntrinsicDuration>
-          <EntryPoint>0</EntryPoint>
-          <Duration>24</Duration>
-          <FrameRate>24 1</FrameRate>
-          <ScreenAspectRatio>32 32</ScreenAspectRatio>
-        </MainPicture>
-        <MainSound>
-          <Id>urn:uuid:aa3fb133-0d18-4083-a039-e441b0788e79</Id>
-          <AnnotationText>audio.mxf</AnnotationText>
-          <EditRate>24 1</EditRate>
-          <IntrinsicDuration>24</IntrinsicDuration>
-          <EntryPoint>0</EntryPoint>
-          <Duration>24</Duration>
-        </MainSound>
-      </AssetList>
-    </Reel>
-  </ReelList>
-</CompositionPlaylist>
diff --git a/test/ref/DCP/bar/7b6616d2-9afe-4d54-a2bb-4f3f71ac6e0c_cpl.xml b/test/ref/DCP/bar/7b6616d2-9afe-4d54-a2bb-4f3f71ac6e0c_cpl.xml
new file mode 100644 (file)
index 0000000..2e3c5b2
--- /dev/null
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CompositionPlaylist xmlns="http://www.smpte-ra.org/schemas/429-7/2006/CPL" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><Id>urn:uuid:7b6616d2-9afe-4d54-a2bb-4f3f71ac6e0c</Id><AnnotationText>A Test DCP</AnnotationText><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><Creator>OpenDCP 0.0.25</Creator><ContentTitleText>A Test DCP</ContentTitleText><ContentKind>feature</ContentKind><ContentVersion><Id>urn:uri:7b6616d2-9afe-4d54-a2bb-4f3f71ac6e0c_2012-07-17T04:45:18+00:00</Id><LabelText>7b6616d2-9afe-4d54-a2bb-4f3f71ac6e0c_2012-07-17T04:45:18+00:00</LabelText></ContentVersion><RatingList/><ReelList><Reel><Id>urn:uuid:947716dd-c237-4f31-a6d8-f74990b79c73</Id><AssetList><MainPicture><Id>urn:uuid:93182bd2-b1e8-41a3-b5c8-6e6564273bff</Id><AnnotationText>video.mxf</AnnotationText><EditRate>24 1</EditRate><IntrinsicDuration>24</IntrinsicDuration><EntryPoint>0</EntryPoint><Duration>24</Duration><KeyId>urn:uuid:6af1e0c1-c441-47f8-a502-3efd46b1fa4f</KeyId><FrameRate>24 1</FrameRate><ScreenAspectRatio>32 32</ScreenAspectRatio></MainPicture><MainSound><Id>urn:uuid:822bd341-c751-45b1-94d2-410e4ffcff1b</Id><AnnotationText>audio.mxf</AnnotationText><EditRate>24 1</EditRate><IntrinsicDuration>24</IntrinsicDuration><EntryPoint>0</EntryPoint><Duration>0</Duration><KeyId>urn:uuid:f28b567b-3b9a-417a-aee4-6fc1a2c6a3af</KeyId></MainSound></AssetList></Reel></ReelList><Signer><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>dnQualifier=d95fGDzERNdxfYPgphvAR8A18L4=,CN=CS.smpte-430-2.LEAF.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509SubjectName></dsig:X509Data></Signer><dsig:Signature><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>nxx0sUeTkcxIK9y7+JATMU5MzGg=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>NTsZK+pcfddOjpQC9rkBn0eRDG1D5tVkqvwYd9d577AMj17GxXizxsBa+DadQ3mB
+GiWeoiJ8/VVW9PQ8N28uOLRkv0er8Jzl6UXdASrki/FbMLLRIGT1IMmxurahUBQN
+hXrk7yphM/cGpIIRwQnAyAuG0xO7L3uDUuMhRftDplwGPU52Qa3opEEX1FtxC9TT
+7NrOGIs+Ks3WtUFOe5ZbfLt1McmnYzg6FJdnAEOfv3/AWQCBd1vakONNgoWKmCiK
+/kmeDIMBK4slHfGrauBcn7KVPpLS8lSFgXI1erifibRe4iyANql10qJ+NiYVgdxm
+udPzL8evhgSC8StQOpAy1g==</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIEezCCA2OgAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBijEUMBIGA1UEChMLZXhh
+bXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUub3JnMTUwMwYDVQQDFCwuc21wdGUt
+NDMwLTIuSU5URVJNRURJQVRFLk5PVF9GT1JfUFJPRFVDVElPTjElMCMGA1UELhMc
+Ym10d1RocTNzcmd4SUFlUk1qWDZCRmhnTER3PTAeFw0xMzA3MDgwOTM5MDBaFw0y
+MzA3MDQwOTM5MDBaMIGEMRQwEgYDVQQKEwtleGFtcGxlLm9yZzEUMBIGA1UECxML
+ZXhhbXBsZS5vcmcxLzAtBgNVBAMUJkNTLnNtcHRlLTQzMC0yLkxFQUYuTk9UX0ZP
+Ul9QUk9EVUNUSU9OMSUwIwYDVQQuExxkOTVmR0R6RVJOZHhmWVBncGh2QVI4QTE4
+TDQ9MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4Ai70YT7amWSvXWO
+2LL9HrkNEQkR0HNO4kZS+2v3CnbrlSnSkLgA4rgsmSPNhHHgskr3ljzxH/MugKv3
+tLlSHywcqPxj06SUCvd7aWfUKIGR33XxZwFB9Hc6hCKMcOYxFJISfFxcknSgcmQj
+RPnLTbaCc/i/sOHQiLnZXmTVIe43VrE+zzYJO7BBnU7Xnj1MGTzz7ccooL3dp8iS
+t4E7E3mGGVMyTndIEE3fx8y1tPFigNKdPKBo1fXD7pFkL7idH+DO5Phwf/OSjS4Z
+egBCrb96fRpWvzhh6z7USOe8iKY5xDir5c4UKY15JsVw2ESxkPF9wFpFHCyXt2YS
+kDYbHQIDAQABo4HvMIHsMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgWgMB0GA1Ud
+DgQWBBR33l8YPMRE13F9g+CmG8BHwDXwvjCBrwYDVR0jBIGnMIGkgBRua3BOGrey
+uDEgB5EyNfoEWGAsPKGBiKSBhTCBgjEUMBIGA1UEChMLZXhhbXBsZS5vcmcxFDAS
+BgNVBAsTC2V4YW1wbGUub3JnMS0wKwYDVQQDFCQuc21wdGUtNDMwLTIuUk9PVC5O
+T1RfRk9SX1BST0RVQ1RJT04xJTAjBgNVBC4THG5kTkQ5QS9jT0RvMnJUZHJiTFZt
+ZlFub2FTYz2CAQYwDQYJKoZIhvcNAQELBQADggEBAKTd8vC9j06NL727VdnYZEwa
+D4MUTnv1UW5d/FdQR87WpGV+17CKblWGJtLTfFmV9LwcGlys6ZzrLRYpBf+81vYq
+VUhl7rrU7askIiacSlfYx4riv9KH5JLmyLdo7sjX4dhfj5IH/ilan7le1shjEl0P
+UrEgYX1dt5OOnMpzaIRHU+GWVlkY3M5VDdDfMPstuPJ+MeAP1fH0Ylajhc4O5nmu
+hWfXc9qa5bxOLzNDBOsXS8hbnTpUS1qpqzea5NSogdxGIiyk/OluU1ZJJPQhf0iK
+K6U6e4+TpHKVvqUwQcPUw9TcBGIDkwJTtLF48ZhFI9Gv016SmSwUobgcDA9e97o=</dsig:X509Certificate></dsig:X509Data><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=ndND9A/cODo2rTdrbLVmfQnoaSc=,CN=.smpte-430-2.ROOT.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>6</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIEfzCCA2egAwIBAgIBBjANBgkqhkiG9w0BAQsFADCBgjEUMBIGA1UEChMLZXhh
+bXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUub3JnMS0wKwYDVQQDFCQuc21wdGUt
+NDMwLTIuUk9PVC5OT1RfRk9SX1BST0RVQ1RJT04xJTAjBgNVBC4THG5kTkQ5QS9j
+T0RvMnJUZHJiTFZtZlFub2FTYz0wHhcNMTMwNzA4MDkzODU5WhcNMjMwNzA1MDkz
+ODU5WjCBijEUMBIGA1UEChMLZXhhbXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUu
+b3JnMTUwMwYDVQQDFCwuc21wdGUtNDMwLTIuSU5URVJNRURJQVRFLk5PVF9GT1Jf
+UFJPRFVDVElPTjElMCMGA1UELhMcYm10d1RocTNzcmd4SUFlUk1qWDZCRmhnTER3
+PTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMrCpaiKl7M/NYtKNQAo
+H+zUcnBTNQ6xhRIDxvPAgvcGH4tf0kpXmZ8ppTU/ZZKaFZB+/pIU+9JfiCuuquvw
+4EQnLABr61m6aJlE1v+0ygzZsCyHyiRnp6OyOTrJnyL6ygniX/ggp+7zkuh4upAl
+QUaCDqNbUfs6Wh9BvmaBllvI3PxfaqDlQVgY53Ar991BA0kcFOdd/4ZLqZwhEiiE
+Y1s3ChYLTxlqPM/UxOeRLUphmGmTSKBKc9ppTN+2/04sQJ1Ux+RZ5PmJ4+eAEcW8
+CjKM5EqZAO3EA3u88Do3uZjLXMxSGeJzs3KQX/lVZklFsO5d1eAQm9ZizfCbPPoK
+f2kCAwEAAaOB9TCB8jASBgNVHRMBAf8ECDAGAQH/AgECMAsGA1UdDwQEAwIBBjAd
+BgNVHQ4EFgQUbmtwThq3srgxIAeRMjX6BFhgLDwwga8GA1UdIwSBpzCBpIAUA7Qg
+bb/sj/jyHsjw8TKBB7AIliihgYikgYUwgYIxFDASBgNVBAoTC2V4YW1wbGUub3Jn
+MRQwEgYDVQQLEwtleGFtcGxlLm9yZzEtMCsGA1UEAxQkLnNtcHRlLTQzMC0yLlJP
+T1QuTk9UX0ZPUl9QUk9EVUNUSU9OMSUwIwYDVQQuExxuZE5EOUEvY09EbzJyVGRy
+YkxWbWZRbm9hU2M9ggEFMA0GCSqGSIb3DQEBCwUAA4IBAQBnlzVaMqhuenDQV7Zg
+aMa6IisupI3k9J6Z24fiEOGhCfAp0fiulx2oCSrXlYnJFGe6ndeWWer9UN1h+lAc
+ozKYwxsJx8jSkgwGYX5v8Cn2Sp2/gV5umCcmpZfIExEOZRmjgKzqyr658EyvmrYJ
+nqrig/N8wUWeS5EzMSiE1sVfyIZmUpKhuqmGQUXnftVMCKSrqAh+Au7ndlR77/dm
+ZBJzzX79nn4L9XqghdoFCPRt4rx1CMU26MmiuEzNcYJ3uSJc1SSz5tT69JQvp8Fj
+InhKTMv0wWysEsfE6+aARPtrqAUJBRAG83oP6L0gdJYWJagGFVoZLfjPf+v9JgYZ
+Wo+D</dsig:X509Certificate></dsig:X509Data><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=ndND9A/cODo2rTdrbLVmfQnoaSc=,CN=.smpte-430-2.ROOT.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>5</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIEdzCCA1+gAwIBAgIBBTANBgkqhkiG9w0BAQsFADCBgjEUMBIGA1UEChMLZXhh
+bXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUub3JnMS0wKwYDVQQDFCQuc21wdGUt
+NDMwLTIuUk9PVC5OT1RfRk9SX1BST0RVQ1RJT04xJTAjBgNVBC4THG5kTkQ5QS9j
+T0RvMnJUZHJiTFZtZlFub2FTYz0wHhcNMTMwNzA4MDkzODU4WhcNMjMwNzA2MDkz
+ODU4WjCBgjEUMBIGA1UEChMLZXhhbXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUu
+b3JnMS0wKwYDVQQDFCQuc21wdGUtNDMwLTIuUk9PVC5OT1RfRk9SX1BST0RVQ1RJ
+T04xJTAjBgNVBC4THG5kTkQ5QS9jT0RvMnJUZHJiTFZtZlFub2FTYz0wggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTZ9Xu3AxKzsCf8haW7QtEZEauMUfo
+SkbzUmNZUYOwzuOvfhqSzO1BpRVI8/k3ZzkXR7XsWp8SbPsE17s5WPLwo4uDSro9
+XtRDOFFaZ023Ed9o2Zvoc6bwz8CpnKpiBB1XHMw9Bmi3q886f7Kk0SCsbX9OJeUC
+5/FUfwDSZUs8qjRkXYd2zjxgFGvYbokKSW1ZwkoLIRoJJhScjSnwTd/aAlcenfcw
+DV6ccjOJph4Dsru1NpCm50vi5/PRr00vBXMxdC2YgNyWONM5k8InBiU0uCmWmU5Y
+SRSc9A3cVtrKzP1WHE2978TNFqKpjEa8tgOYualSfI2pMtA23EVG14RJAgMBAAGj
+gfUwgfIwEgYDVR0TAQH/BAgwBgEB/wIBAzALBgNVHQ8EBAMCAQYwHQYDVR0OBBYE
+FAO0IG2/7I/48h7I8PEygQewCJYoMIGvBgNVHSMEgacwgaSAFAO0IG2/7I/48h7I
+8PEygQewCJYooYGIpIGFMIGCMRQwEgYDVQQKEwtleGFtcGxlLm9yZzEUMBIGA1UE
+CxMLZXhhbXBsZS5vcmcxLTArBgNVBAMUJC5zbXB0ZS00MzAtMi5ST09ULk5PVF9G
+T1JfUFJPRFVDVElPTjElMCMGA1UELhMcbmRORDlBL2NPRG8yclRkcmJMVm1mUW5v
+YVNjPYIBBTANBgkqhkiG9w0BAQsFAAOCAQEAp2V3npo0m7Vmdhpr6mk5UybM16Hx
+M99zoKGUpm6k9PYRk8ysEhD7M8hDuwiiFoRJj1+X8V4HLwNU3JTTQzSl88pMvLg8
+Tyl4ICELg9MN/Eyfnu6iyGDfPzcsuv8xZN53211LobqW+HGK8r+slf5GPDILka8r
+GB7sFRjvq3SEGpqupKI9sJFmvHyQplJ1ixrIkSnTEuBFBrDtQj+cjrqlvRw/dReo
+3uELGe5GyvBcP0hDgrvZQmTdCLQfo4998MMhLDyxvD9/D4jpRcCrLzs2uB3Tw3kT
+1KkAjDA/33J1XCZEkb1ArS2L/I12T0DoSQqb17NE3xccY+6iRFXRMFWDIQ==</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo></dsig:Signature></CompositionPlaylist>
index 359f453fed467ec5e1b385e7980f020f11f77612..6b0ae98182c8455647b1eeba6334977f9ed998c7 100644 (file)
@@ -1,55 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<AssetMap xmlns="http://www.smpte-ra.org/schemas/429-9/2007/AM">
-  <Id>urn:uuid:58f161a5-16d1-4896-93df-52a5a330082f</Id>
-  <Creator>OpenDCP 0.0.25</Creator>
-  <VolumeCount>1</VolumeCount>
-  <IssueDate>2012-07-17T04:45:18+00:00</IssueDate>
-  <Issuer>OpenDCP 0.0.25</Issuer>
-  <AssetList>
-    <Asset>
-      <Id>urn:uuid:402c5a88-2512-4465-9c0b-cfa687dbc5d0</Id>
-      <PackingList>true</PackingList>
-      <ChunkList>
-        <Chunk>
-          <Path>402c5a88-2512-4465-9c0b-cfa687dbc5d0_pkl.xml</Path>
-          <VolumeIndex>1</VolumeIndex>
-          <Offset>0</Offset>
-          <Length>1049</Length>
-        </Chunk>
-      </ChunkList>
-    </Asset>
-    <Asset>
-      <Id>urn:uuid:63c3aece-c581-4603-b612-75e43f0c0430</Id>
-      <ChunkList>
-        <Chunk>
-          <Path>63c3aece-c581-4603-b612-75e43f0c0430_cpl.xml</Path>
-          <VolumeIndex>1</VolumeIndex>
-          <Offset>0</Offset>
-          <Length>1526</Length>
-        </Chunk>
-      </ChunkList>
-    </Asset>
-    <Asset>
-      <Id>urn:uuid:2b9b857f-ab4a-440e-a313-1ace0f1cfc95</Id>
-      <ChunkList>
-        <Chunk>
-          <Path>video.mxf</Path>
-          <VolumeIndex>1</VolumeIndex>
-          <Offset>0</Offset>
-          <Length>28840</Length>
-        </Chunk>
-      </ChunkList>
-    </Asset>
-    <Asset>
-      <Id>urn:uuid:aa3fb133-0d18-4083-a039-e441b0788e79</Id>
-      <ChunkList>
-        <Chunk>
-          <Path>audio.mxf</Path>
-          <VolumeIndex>1</VolumeIndex>
-          <Offset>0</Offset>
-          <Length>308398</Length>
-        </Chunk>
-      </ChunkList>
-    </Asset>
-  </AssetList>
-</AssetMap>
+<AssetMap xmlns="http://www.smpte-ra.org/schemas/429-9/2007/AM"><Id>urn:uuid:aa157ca6-e3e3-4b6c-a7b6-50f52fcafb7f</Id><AnnotationText>Created by OpenDCP 0.0.25</AnnotationText><Creator>OpenDCP 0.0.25</Creator><VolumeCount>1</VolumeCount><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><AssetList><Asset><Id>urn:uuid:a12d2c1f-0daa-4a30-a4cd-c4266ac172a7</Id><PackingList>true</PackingList><ChunkList><Chunk><Path>a12d2c1f-0daa-4a30-a4cd-c4266ac172a7_pkl.xml</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>8019</Length></Chunk></ChunkList></Asset><Asset><Id>urn:uuid:7b6616d2-9afe-4d54-a2bb-4f3f71ac6e0c</Id><ChunkList><Chunk><Path>7b6616d2-9afe-4d54-a2bb-4f3f71ac6e0c_cpl.xml</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>8531</Length></Chunk></ChunkList></Asset><Asset><Id>urn:uuid:822bd341-c751-45b1-94d2-410e4ffcff1b</Id><ChunkList><Chunk><Path>audio.mxf</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>308398</Length></Chunk></ChunkList></Asset><Asset><Id>urn:uuid:93182bd2-b1e8-41a3-b5c8-6e6564273bff</Id><ChunkList><Chunk><Path>video.mxf</Path><VolumeIndex>1</VolumeIndex><Offset>0</Offset><Length>28840</Length></Chunk></ChunkList></Asset></AssetList></AssetMap>
index f66c004afae2ea4df20a6359a11295860d5ede58..021685e91f7c2738df1f77105545cc36f758b381 100644 (file)
@@ -1,4 +1,2 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<VolumeIndex xmlns="http://www.smpte-ra.org/schemas/429-9/2007/AM">
-  <Index>1</Index>
-</VolumeIndex>
+<VolumeIndex xmlns="http://www.smpte-ra.org/schemas/429-9/2007/AM"><Index>1</Index></VolumeIndex>
diff --git a/test/ref/DCP/bar/a12d2c1f-0daa-4a30-a4cd-c4266ac172a7_pkl.xml b/test/ref/DCP/bar/a12d2c1f-0daa-4a30-a4cd-c4266ac172a7_pkl.xml
new file mode 100644 (file)
index 0000000..60bc204
--- /dev/null
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PackingList xmlns="http://www.smpte-ra.org/schemas/429-8/2007/PKL" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><Id>urn:uuid:a12d2c1f-0daa-4a30-a4cd-c4266ac172a7</Id><AnnotationText>A Test DCP</AnnotationText><IssueDate>2012-07-17T04:45:18+00:00</IssueDate><Issuer>OpenDCP 0.0.25</Issuer><Creator>OpenDCP 0.0.25</Creator><AssetList><Asset><Id>urn:uuid:822bd341-c751-45b1-94d2-410e4ffcff1b</Id><AnnotationText>audio.mxf</AnnotationText><Hash>00dwsDwm9AGtL2ylcUZzm/UH/P8=</Hash><Size>308398</Size><Type>application/mxf</Type></Asset><Asset><Id>urn:uuid:93182bd2-b1e8-41a3-b5c8-6e6564273bff</Id><AnnotationText>video.mxf</AnnotationText><Hash>twmVEuhyyqVkEQo6tQbCN/V4MuY=</Hash><Size>28840</Size><Type>application/mxf</Type></Asset><Asset><Id>urn:uuid:7b6616d2-9afe-4d54-a2bb-4f3f71ac6e0c</Id><Hash>mTFgIKBQeWMqD6y+8CanXIJj7pQ=</Hash><Size>8531</Size><Type>text/xml</Type></Asset></AssetList><Signer><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509SubjectName>dnQualifier=d95fGDzERNdxfYPgphvAR8A18L4=,CN=CS.smpte-430-2.LEAF.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509SubjectName></dsig:X509Data></Signer><dsig:Signature><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><dsig:Reference URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>/xGgOim2E6rPVUvuWH97evvZ3E0=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>X18JIXvv5fWjLTJPJYPg/KliGBtM1mZvEjaS0m+SUaM26WpTMT52nowtT/6PcGDX
+Qd0Klm6j2YZpXnXbVapyhY9hXpm8h2dTDRR8S3r2fC6lVc6LAEPz6WRhW7F0ltZ7
+LFYnOraZOm0hegih1lM2bPin9rbsrtSguSEAYMP7z0SNAHViJ/eiY4b/va8n1eVe
+bKqmdjN7CrD5OnxobDRSgBLeO9BqtrudPJlk4rCJmXIOxPrzywdRGd18VpoIqdNZ
+hOmkgKZZrCk/QDZGKZLd1pnZ6AxxUl3Qwap+rxuTINNW8rDmKVEO8tLe/swHN/TA
+zxrk+JtqOI/nDK5QRci2nQ==</dsig:SignatureValue><dsig:KeyInfo><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=bmtwThq3srgxIAeRMjX6BFhgLDw=,CN=.smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>7</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIEezCCA2OgAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBijEUMBIGA1UEChMLZXhh
+bXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUub3JnMTUwMwYDVQQDFCwuc21wdGUt
+NDMwLTIuSU5URVJNRURJQVRFLk5PVF9GT1JfUFJPRFVDVElPTjElMCMGA1UELhMc
+Ym10d1RocTNzcmd4SUFlUk1qWDZCRmhnTER3PTAeFw0xMzA3MDgwOTM5MDBaFw0y
+MzA3MDQwOTM5MDBaMIGEMRQwEgYDVQQKEwtleGFtcGxlLm9yZzEUMBIGA1UECxML
+ZXhhbXBsZS5vcmcxLzAtBgNVBAMUJkNTLnNtcHRlLTQzMC0yLkxFQUYuTk9UX0ZP
+Ul9QUk9EVUNUSU9OMSUwIwYDVQQuExxkOTVmR0R6RVJOZHhmWVBncGh2QVI4QTE4
+TDQ9MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4Ai70YT7amWSvXWO
+2LL9HrkNEQkR0HNO4kZS+2v3CnbrlSnSkLgA4rgsmSPNhHHgskr3ljzxH/MugKv3
+tLlSHywcqPxj06SUCvd7aWfUKIGR33XxZwFB9Hc6hCKMcOYxFJISfFxcknSgcmQj
+RPnLTbaCc/i/sOHQiLnZXmTVIe43VrE+zzYJO7BBnU7Xnj1MGTzz7ccooL3dp8iS
+t4E7E3mGGVMyTndIEE3fx8y1tPFigNKdPKBo1fXD7pFkL7idH+DO5Phwf/OSjS4Z
+egBCrb96fRpWvzhh6z7USOe8iKY5xDir5c4UKY15JsVw2ESxkPF9wFpFHCyXt2YS
+kDYbHQIDAQABo4HvMIHsMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgWgMB0GA1Ud
+DgQWBBR33l8YPMRE13F9g+CmG8BHwDXwvjCBrwYDVR0jBIGnMIGkgBRua3BOGrey
+uDEgB5EyNfoEWGAsPKGBiKSBhTCBgjEUMBIGA1UEChMLZXhhbXBsZS5vcmcxFDAS
+BgNVBAsTC2V4YW1wbGUub3JnMS0wKwYDVQQDFCQuc21wdGUtNDMwLTIuUk9PVC5O
+T1RfRk9SX1BST0RVQ1RJT04xJTAjBgNVBC4THG5kTkQ5QS9jT0RvMnJUZHJiTFZt
+ZlFub2FTYz2CAQYwDQYJKoZIhvcNAQELBQADggEBAKTd8vC9j06NL727VdnYZEwa
+D4MUTnv1UW5d/FdQR87WpGV+17CKblWGJtLTfFmV9LwcGlys6ZzrLRYpBf+81vYq
+VUhl7rrU7askIiacSlfYx4riv9KH5JLmyLdo7sjX4dhfj5IH/ilan7le1shjEl0P
+UrEgYX1dt5OOnMpzaIRHU+GWVlkY3M5VDdDfMPstuPJ+MeAP1fH0Ylajhc4O5nmu
+hWfXc9qa5bxOLzNDBOsXS8hbnTpUS1qpqzea5NSogdxGIiyk/OluU1ZJJPQhf0iK
+K6U6e4+TpHKVvqUwQcPUw9TcBGIDkwJTtLF48ZhFI9Gv016SmSwUobgcDA9e97o=</dsig:X509Certificate></dsig:X509Data><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=ndND9A/cODo2rTdrbLVmfQnoaSc=,CN=.smpte-430-2.ROOT.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>6</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIEfzCCA2egAwIBAgIBBjANBgkqhkiG9w0BAQsFADCBgjEUMBIGA1UEChMLZXhh
+bXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUub3JnMS0wKwYDVQQDFCQuc21wdGUt
+NDMwLTIuUk9PVC5OT1RfRk9SX1BST0RVQ1RJT04xJTAjBgNVBC4THG5kTkQ5QS9j
+T0RvMnJUZHJiTFZtZlFub2FTYz0wHhcNMTMwNzA4MDkzODU5WhcNMjMwNzA1MDkz
+ODU5WjCBijEUMBIGA1UEChMLZXhhbXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUu
+b3JnMTUwMwYDVQQDFCwuc21wdGUtNDMwLTIuSU5URVJNRURJQVRFLk5PVF9GT1Jf
+UFJPRFVDVElPTjElMCMGA1UELhMcYm10d1RocTNzcmd4SUFlUk1qWDZCRmhnTER3
+PTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMrCpaiKl7M/NYtKNQAo
+H+zUcnBTNQ6xhRIDxvPAgvcGH4tf0kpXmZ8ppTU/ZZKaFZB+/pIU+9JfiCuuquvw
+4EQnLABr61m6aJlE1v+0ygzZsCyHyiRnp6OyOTrJnyL6ygniX/ggp+7zkuh4upAl
+QUaCDqNbUfs6Wh9BvmaBllvI3PxfaqDlQVgY53Ar991BA0kcFOdd/4ZLqZwhEiiE
+Y1s3ChYLTxlqPM/UxOeRLUphmGmTSKBKc9ppTN+2/04sQJ1Ux+RZ5PmJ4+eAEcW8
+CjKM5EqZAO3EA3u88Do3uZjLXMxSGeJzs3KQX/lVZklFsO5d1eAQm9ZizfCbPPoK
+f2kCAwEAAaOB9TCB8jASBgNVHRMBAf8ECDAGAQH/AgECMAsGA1UdDwQEAwIBBjAd
+BgNVHQ4EFgQUbmtwThq3srgxIAeRMjX6BFhgLDwwga8GA1UdIwSBpzCBpIAUA7Qg
+bb/sj/jyHsjw8TKBB7AIliihgYikgYUwgYIxFDASBgNVBAoTC2V4YW1wbGUub3Jn
+MRQwEgYDVQQLEwtleGFtcGxlLm9yZzEtMCsGA1UEAxQkLnNtcHRlLTQzMC0yLlJP
+T1QuTk9UX0ZPUl9QUk9EVUNUSU9OMSUwIwYDVQQuExxuZE5EOUEvY09EbzJyVGRy
+YkxWbWZRbm9hU2M9ggEFMA0GCSqGSIb3DQEBCwUAA4IBAQBnlzVaMqhuenDQV7Zg
+aMa6IisupI3k9J6Z24fiEOGhCfAp0fiulx2oCSrXlYnJFGe6ndeWWer9UN1h+lAc
+ozKYwxsJx8jSkgwGYX5v8Cn2Sp2/gV5umCcmpZfIExEOZRmjgKzqyr658EyvmrYJ
+nqrig/N8wUWeS5EzMSiE1sVfyIZmUpKhuqmGQUXnftVMCKSrqAh+Au7ndlR77/dm
+ZBJzzX79nn4L9XqghdoFCPRt4rx1CMU26MmiuEzNcYJ3uSJc1SSz5tT69JQvp8Fj
+InhKTMv0wWysEsfE6+aARPtrqAUJBRAG83oP6L0gdJYWJagGFVoZLfjPf+v9JgYZ
+Wo+D</dsig:X509Certificate></dsig:X509Data><dsig:X509Data><dsig:X509IssuerSerial><dsig:X509IssuerName>dnQualifier=ndND9A/cODo2rTdrbLVmfQnoaSc=,CN=.smpte-430-2.ROOT.NOT_FOR_PRODUCTION,OU=example.org,O=example.org</dsig:X509IssuerName><dsig:X509SerialNumber>5</dsig:X509SerialNumber></dsig:X509IssuerSerial><dsig:X509Certificate>MIIEdzCCA1+gAwIBAgIBBTANBgkqhkiG9w0BAQsFADCBgjEUMBIGA1UEChMLZXhh
+bXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUub3JnMS0wKwYDVQQDFCQuc21wdGUt
+NDMwLTIuUk9PVC5OT1RfRk9SX1BST0RVQ1RJT04xJTAjBgNVBC4THG5kTkQ5QS9j
+T0RvMnJUZHJiTFZtZlFub2FTYz0wHhcNMTMwNzA4MDkzODU4WhcNMjMwNzA2MDkz
+ODU4WjCBgjEUMBIGA1UEChMLZXhhbXBsZS5vcmcxFDASBgNVBAsTC2V4YW1wbGUu
+b3JnMS0wKwYDVQQDFCQuc21wdGUtNDMwLTIuUk9PVC5OT1RfRk9SX1BST0RVQ1RJ
+T04xJTAjBgNVBC4THG5kTkQ5QS9jT0RvMnJUZHJiTFZtZlFub2FTYz0wggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTZ9Xu3AxKzsCf8haW7QtEZEauMUfo
+SkbzUmNZUYOwzuOvfhqSzO1BpRVI8/k3ZzkXR7XsWp8SbPsE17s5WPLwo4uDSro9
+XtRDOFFaZ023Ed9o2Zvoc6bwz8CpnKpiBB1XHMw9Bmi3q886f7Kk0SCsbX9OJeUC
+5/FUfwDSZUs8qjRkXYd2zjxgFGvYbokKSW1ZwkoLIRoJJhScjSnwTd/aAlcenfcw
+DV6ccjOJph4Dsru1NpCm50vi5/PRr00vBXMxdC2YgNyWONM5k8InBiU0uCmWmU5Y
+SRSc9A3cVtrKzP1WHE2978TNFqKpjEa8tgOYualSfI2pMtA23EVG14RJAgMBAAGj
+gfUwgfIwEgYDVR0TAQH/BAgwBgEB/wIBAzALBgNVHQ8EBAMCAQYwHQYDVR0OBBYE
+FAO0IG2/7I/48h7I8PEygQewCJYoMIGvBgNVHSMEgacwgaSAFAO0IG2/7I/48h7I
+8PEygQewCJYooYGIpIGFMIGCMRQwEgYDVQQKEwtleGFtcGxlLm9yZzEUMBIGA1UE
+CxMLZXhhbXBsZS5vcmcxLTArBgNVBAMUJC5zbXB0ZS00MzAtMi5ST09ULk5PVF9G
+T1JfUFJPRFVDVElPTjElMCMGA1UELhMcbmRORDlBL2NPRG8yclRkcmJMVm1mUW5v
+YVNjPYIBBTANBgkqhkiG9w0BAQsFAAOCAQEAp2V3npo0m7Vmdhpr6mk5UybM16Hx
+M99zoKGUpm6k9PYRk8ysEhD7M8hDuwiiFoRJj1+X8V4HLwNU3JTTQzSl88pMvLg8
+Tyl4ICELg9MN/Eyfnu6iyGDfPzcsuv8xZN53211LobqW+HGK8r+slf5GPDILka8r
+GB7sFRjvq3SEGpqupKI9sJFmvHyQplJ1ixrIkSnTEuBFBrDtQj+cjrqlvRw/dReo
+3uELGe5GyvBcP0hDgrvZQmTdCLQfo4998MMhLDyxvD9/D4jpRcCrLzs2uB3Tw3kT
+1KkAjDA/33J1XCZEkb1ArS2L/I12T0DoSQqb17NE3xccY+6iRFXRMFWDIQ==</dsig:X509Certificate></dsig:X509Data></dsig:KeyInfo></dsig:Signature></PackingList>
index 1188e5fc1df216a57b165081969dd8057106ab48..9fbf73b8c35bf2f9f496ee569154f414d774212a 100644 (file)
Binary files a/test/ref/DCP/bar/audio.mxf and b/test/ref/DCP/bar/audio.mxf differ
index 20eb6f4a414c5a9773d5ef43d4cff12b4a1d668f..2aae069f56f7f7abf1c9a61a276b26fa9eb12a9c 100644 (file)
Binary files a/test/ref/DCP/bar/video.mxf and b/test/ref/DCP/bar/video.mxf differ
index c7f8bfbdfa22944f0e24448841ab05e80d5ecea7..3a982d1b6d8472651cb34d9834e5c407c76c1435 100644 (file)
@@ -13,32 +13,39 @@ using namespace libdcp;
 
 int
 main (int argc, char* argv[])
-try
 {
-       if (argc < 2) {
-               cerr << "Syntax: " << argv[0] << " <dcp>\n";
-               exit (EXIT_FAILURE);
-       }
-
-       DCP* dcp = new DCP (argv[1]);
-       dcp->read (false);
-       
-       list<shared_ptr<CPL> > cpls = dcp->cpls ();
-       for (list<boost::shared_ptr<CPL> >::iterator i = cpls.begin(); i != cpls.end(); ++i) {
-
-               list<shared_ptr<Reel> > reels = (*i)->reels ();
-               for (list<shared_ptr<Reel> >::iterator j = reels.begin(); j != reels.end(); ++j) {
-
-                       if ((*j)->main_subtitle()) {
-                               (*j)->main_subtitle()->write_xml ();
+       try {
+               if (argc < 2) {
+                       cerr << "Syntax: " << argv[0] << " <dcp>\n";
+                       exit (EXIT_FAILURE);
+               }
+               
+               DCP* dcp = new DCP (argv[1]);
+               dcp->read (false);
+               
+               list<shared_ptr<CPL> > cpls = dcp->cpls ();
+               for (list<boost::shared_ptr<CPL> >::iterator i = cpls.begin(); i != cpls.end(); ++i) {
+                       
+                       list<shared_ptr<Reel> > reels = (*i)->reels ();
+                       for (list<shared_ptr<Reel> >::iterator j = reels.begin(); j != reels.end(); ++j) {
+                               
+                               if ((*j)->main_subtitle()) {
+                                       (*j)->main_subtitle()->write_xml ();
+                               }
                        }
                }
        }
 
+       catch (FileError& e)
+       {
+               cerr << e.what() << " (" << e.filename() << ") when reading " << argv[1] << "\n";
+               exit (EXIT_FAILURE);
+       }
+       catch (DCPReadError& e)
+       {
+               cerr << e.what() << " when reading " << argv[1] << "\n";
+               exit (EXIT_FAILURE);
+       }
+       
        return 0;
 }
-catch (FileError& e)
-{
-       cerr << e.what() << " (" << e.filename() << ")\n";
-       exit (EXIT_FAILURE);
-}
index 72d0c7dd92797392024864c5686ce40394d2b1f2..c58966f490e6cbadf6e9b76d44e3786f31ec4b37 100644 (file)
@@ -46,5 +46,5 @@ wav (libdcp::Channel)
        return "test/data/1s_24-bit_48k_silence.wav";
 }
 
-string test_corpus = "../libdcp-test";
+string private_test = "test/private";
 
index d6691bc0d052191970c49dd08094bc8a94c3a038..47a615d8df46bc7823ef1b3d2872647cacc0934b 100644 (file)
@@ -19,4 +19,4 @@
 
 extern boost::filesystem::path j2c (int);
 extern boost::filesystem::path wav (libdcp::Channel);
-extern std::string test_corpus;
+extern std::string private_test;