diff options
-rw-r--r-- | test/other_tools/utils/archive_usage.test.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/test/other_tools/utils/archive_usage.test.cpp b/test/other_tools/utils/archive_usage.test.cpp index cfbbc5ae..732798a8 100644 --- a/test/other_tools/utils/archive_usage.test.cpp +++ b/test/other_tools/utils/archive_usage.test.cpp @@ -409,6 +409,18 @@ TEST_CASE("ArchiveOps", "[archive_ops]") { compare_extracted(test_dir_tar_gz); } + SECTION("Extract tar.gz to disk via compression auto detect") { + REQUIRE(FileSystemManager::RemoveDirectory(test_dir_tar_gz, + /*recursively=*/true)); + REQUIRE(FileSystemManager::CreateDirectory(test_dir_tar_gz)); + res = ArchiveOps::ExtractArchive( + ArchiveType::kArchiveTypeTar, filename_tar_gz, "."); + if (res != std::nullopt) { + FAIL(*res); + } + compare_extracted(test_dir_tar_gz); + } + if (FileSystemManager::IsExecutable("/usr/bin/tar") and FileSystemManager::IsExecutable("/usr/bin/gzip")) { REQUIRE(FileSystemManager::RemoveDirectory(test_dir_tar_gz, @@ -454,6 +466,18 @@ TEST_CASE("ArchiveOps", "[archive_ops]") { compare_extracted(test_dir_tar_bz2); } + SECTION("Extract tar.bz2 to disk via compression auto detect") { + REQUIRE(FileSystemManager::RemoveDirectory(test_dir_tar_bz2, + /*recursively=*/true)); + REQUIRE(FileSystemManager::CreateDirectory(test_dir_tar_bz2)); + res = ArchiveOps::ExtractArchive( + ArchiveType::kArchiveTypeTar, filename_tar_bz2, "."); + if (res != std::nullopt) { + FAIL(*res); + } + compare_extracted(test_dir_tar_bz2); + } + if (FileSystemManager::IsExecutable("/usr/bin/tar") and FileSystemManager::IsExecutable("/usr/bin/bzip2")) { REQUIRE(FileSystemManager::RemoveDirectory(test_dir_tar_bz2, @@ -469,6 +493,63 @@ TEST_CASE("ArchiveOps", "[archive_ops]") { } } + SECTION("Write tar.xz") { + std::string test_dir_tar_xz{"ops_test_tar_xz"}; + std::string filename_tar_xz{"test.tar.xz"}; + + REQUIRE(FileSystemManager::RemoveDirectory(test_dir_tar_xz, + /*recursively=*/true)); + REQUIRE(FileSystemManager::CreateDirectory(test_dir_tar_xz)); + + create_files(test_dir_tar_xz); + + res = ArchiveOps::CreateArchive(ArchiveType::kArchiveTypeTarXz, + filename_tar_xz, + test_dir_tar_xz, + "."); + if (res != std::nullopt) { + FAIL(*res); + } + + SECTION("Extract tar.xz to disk") { + REQUIRE(FileSystemManager::RemoveDirectory(test_dir_tar_xz, + /*recursively=*/true)); + REQUIRE(FileSystemManager::CreateDirectory(test_dir_tar_xz)); + res = ArchiveOps::ExtractArchive( + ArchiveType::kArchiveTypeTarXz, filename_tar_xz, "."); + if (res != std::nullopt) { + FAIL(*res); + } + compare_extracted(test_dir_tar_xz); + } + + SECTION("Extract tar.xz to disk via compression auto detect") { + REQUIRE(FileSystemManager::RemoveDirectory(test_dir_tar_xz, + /*recursively=*/true)); + REQUIRE(FileSystemManager::CreateDirectory(test_dir_tar_xz)); + res = ArchiveOps::ExtractArchive( + ArchiveType::kArchiveTypeTar, filename_tar_xz, "."); + if (res != std::nullopt) { + FAIL(*res); + } + compare_extracted(test_dir_tar_xz); + } + + if (FileSystemManager::IsExecutable("/usr/bin/tar") and + FileSystemManager::IsExecutable("/usr/bin/xz")) { + REQUIRE(FileSystemManager::RemoveDirectory(test_dir_tar_xz, + /*recursively=*/true)); + REQUIRE(FileSystemManager::CreateDirectory(test_dir_tar_xz)); + + SECTION("Extract via system tar and bzip2") { + REQUIRE( + system(("/usr/bin/tar xJf " + filename_tar_xz).c_str()) == + 0); + compare_extracted(test_dir_tar_xz); + } + } + } + SECTION("Write zip") { std::string test_dir_zip{"ops_test_zip"}; std::string filename_zip{"test.zip"}; |