/* Copyright (C) 2020-2021 Carl Hetherington This file is part of DCP-o-matic. DCP-o-matic 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. DCP-o-matic 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 DCP-o-matic. If not, see . */ /** @file test/zipper_test.cc * @brief Test Zipper class. * @ingroup selfcontained */ #include "lib/exceptions.h" #include "lib/zipper.h" #include "test.h" #include #include #include #include /** Basic test of Zipper working normally */ BOOST_AUTO_TEST_CASE (zipper_test1) { boost::system::error_code ec; boost::filesystem::remove ("build/test/zipped.zip", ec); Zipper zipper ("build/test/zipped.zip"); zipper.add ("foo.txt", "1234567890"); zipper.add ("bar.txt", "xxxxxxCCCCbbbbbbb1"); zipper.close (); /* Make sure we aren't in a UNC current working directory otherwise the use of cmd.exe * in system() below will fail. */ boost::filesystem::current_path(dcp::filesystem::unfix_long_path(boost::filesystem::current_path())); boost::filesystem::remove_all ("build/test/zipper_test1", ec); #ifdef DCPOMATIC_WINDOWS /* unzip on windows crashes every so often (with a return code -1073740940, for some reason) * so try using the built-in tar which can unzip things. */ boost::filesystem::create_directories ("build/test/zipper_test1"); int const r = system ("tar -xf build\\test\\zipped.zip -C build\\test\\zipper_test1"); #else int const r = system ("unzip build/test/zipped.zip -d build/test/zipper_test1"); #endif BOOST_REQUIRE_EQUAL (r, 0); BOOST_CHECK_EQUAL (dcp::file_to_string("build/test/zipper_test1/foo.txt"), "1234567890"); BOOST_CHECK_EQUAL (dcp::file_to_string("build/test/zipper_test1/bar.txt"), "xxxxxxCCCCbbbbbbb1"); } /** Test failure when trying to overwrite a file */ BOOST_AUTO_TEST_CASE (zipper_test2, * boost::unit_test::depends_on("zipper_test1")) { BOOST_CHECK_THROW (Zipper("build/test/zipped.zip"), FileError); }