From 888d4713f61da2ed7efed2b6610ec1f2ed7f088a Mon Sep 17 00:00:00 2001 From: Gabriel Landau <42078554+gabriellandau@users.noreply.github.com> Date: Tue, 7 Jan 2025 18:20:08 -0500 Subject: [PATCH] Add gtest validating `mz_os_get_file_date` works on ADS --- test/CMakeLists.txt | 4 ++++ test/test_file.cc | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 test/test_file.cc diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 0e244d45..9a477a98 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -58,6 +58,10 @@ if(NOT MZ_COMPRESS_ONLY AND NOT MZ_DECOMPRESS_ONLY) list(APPEND TEST_SRCS test_stream_compress.cc) endif() +if(MSVC) + list(APPEND TEST_SRCS test_file.cc) +endif() + add_executable(gtest_minizip test_main.cc ${TEST_SRCS}) target_compile_definitions(gtest_minizip PRIVATE ${STDLIB_DEF} ${MINIZIP_DEF}) target_include_directories(gtest_minizip PRIVATE diff --git a/test/test_file.cc b/test/test_file.cc new file mode 100644 index 00000000..6b179657 --- /dev/null +++ b/test/test_file.cc @@ -0,0 +1,44 @@ +/* test_file.cc - Test file functionality + part of the minizip-ng project + + Copyright (C) Nathan Moinvaziri + https://github.com/zlib-ng/minizip-ng + + This program is distributed under the terms of the same license as zlib. + See the accompanying LICENSE file for the full text of the license. +*/ + +#include "mz.h" +#include "mz_os.h" + +#include +#include +#include + +TEST(os, get_file_date_ads) { + const std::string main_stream_name = "minizip_ads_test"; + const std::string ads_name = main_stream_name + ":ads"; + const std::string ads_contents = "Alternate Data Stream"; + + // Create main stream + std::ofstream main_stream(main_stream_name); + main_stream.close(); + + // Attach ADS + std::ofstream ads(ads_name); + ads << ads_contents; + ads.close(); + + // Get file date + time_t modified_date = 0; + time_t accessed_date = 0; + time_t creation_date = 0; + + EXPECT_EQ(MZ_OK, mz_os_get_file_date(ads_name.c_str(), &modified_date, &accessed_date, &creation_date)); + + std::remove(main_stream_name.c_str()); + + ASSERT_GT(modified_date, 0); + ASSERT_GT(accessed_date, 0); + ASSERT_GT(creation_date, 0); +}