diff --git a/api/rtc_event_log_output_file_unittest.cc b/api/rtc_event_log_output_file_unittest.cc index 0aff57fbbc..d2f1e1c6b5 100644 --- a/api/rtc_event_log_output_file_unittest.cc +++ b/api/rtc_event_log_output_file_unittest.cc @@ -34,7 +34,8 @@ class RtcEventLogOutputFileTest : public ::testing::Test { protected: std::string GetOutputFilePath() const { auto test_info = ::testing::UnitTest::GetInstance()->current_test_info(); - return test::OutputPath() + test_info->test_case_name() + test_info->name(); + return test::OutputPathWithRandomDirectory() + test_info->test_case_name() + + test_info->name(); } std::string GetOutputFileContents() const { diff --git a/common_audio/BUILD.gn b/common_audio/BUILD.gn index 620d01e6d5..2ae6d32710 100644 --- a/common_audio/BUILD.gn +++ b/common_audio/BUILD.gn @@ -375,7 +375,6 @@ if (rtc_include_tests && !build_with_chromium) { "../rtc_base:checks", "../rtc_base:macromagic", "../rtc_base:rtc_base_tests_utils", - "../rtc_base:ssl", "../rtc_base:stringutils", "../rtc_base:timeutils", "../rtc_base/system:arch", diff --git a/common_audio/wav_file_unittest.cc b/common_audio/wav_file_unittest.cc index 6a0cfdc680..71e4fedf94 100644 --- a/common_audio/wav_file_unittest.cc +++ b/common_audio/wav_file_unittest.cc @@ -17,7 +17,6 @@ #include #include "common_audio/wav_header.h" -#include "rtc_base/helpers.h" #include "test/gtest.h" #include "test/testsupport/file_utils.h" @@ -37,7 +36,7 @@ static const float kSamples[] = {0.0, 10.0, 4e4, -1e9}; // Write a tiny WAV file with the C++ interface and verify the result. TEST(WavWriterTest, MAYBE_CPP) { const std::string outfile = - test::OutputPath() + "wavtest1-" + rtc::CreateRandomUuid() + ".wav"; + test::OutputPathWithRandomDirectory() + "wavtest1.wav"; static const size_t kNumSamples = 3; { WavWriter w(outfile, 14099, 1); @@ -114,7 +113,8 @@ TEST(WavWriterTest, LargeFile) { {WavFile::SampleFormat::kInt16, WavFile::SampleFormat::kFloat}) { for (WavFile::SampleFormat read_format : {WavFile::SampleFormat::kInt16, WavFile::SampleFormat::kFloat}) { - std::string outfile = test::OutputPath() + "wavtest3.wav"; + std::string outfile = + test::OutputPathWithRandomDirectory() + "wavtest3.wav"; float samples[kNumSamples]; for (size_t i = 0; i < kNumSamples; i += kNumChannels) { // A nice periodic beeping sound. @@ -179,7 +179,8 @@ TEST(WavWriterTest, LargeFile) { // Write a tiny WAV file with the C++ interface then read-reset-read. TEST(WavReaderTest, MAYBE_CPPReset) { - const std::string outfile = test::OutputPath() + "wavtest4.wav"; + const std::string outfile = + test::OutputPathWithRandomDirectory() + "wavtest4.wav"; static const size_t kNumSamples = 3; { WavWriter w(outfile, 14099, 1); diff --git a/modules/audio_device/BUILD.gn b/modules/audio_device/BUILD.gn index baba0a36d9..2088e74dcd 100644 --- a/modules/audio_device/BUILD.gn +++ b/modules/audio_device/BUILD.gn @@ -488,7 +488,6 @@ if (rtc_include_tests && !build_with_chromium) { "../../rtc_base:race_checker", "../../rtc_base:rtc_event", "../../rtc_base:safe_conversions", - "../../rtc_base:ssl", "../../rtc_base:timeutils", "../../rtc_base/synchronization:mutex", "../../system_wrappers", diff --git a/modules/audio_device/include/test_audio_device_unittest.cc b/modules/audio_device/include/test_audio_device_unittest.cc index d79697bb52..cca82977e8 100644 --- a/modules/audio_device/include/test_audio_device_unittest.cc +++ b/modules/audio_device/include/test_audio_device_unittest.cc @@ -24,7 +24,6 @@ #include "common_audio/wav_header.h" #include "modules/audio_device/include/audio_device_defines.h" #include "rtc_base/checks.h" -#include "rtc_base/helpers.h" #include "rtc_base/logging.h" #include "rtc_base/synchronization/mutex.h" #include "test/gmock.h" @@ -40,9 +39,9 @@ void RunWavTest(const std::vector& input_samples, const ::testing::TestInfo* const test_info = ::testing::UnitTest::GetInstance()->current_test_info(); - const std::string output_filename = - test::OutputPath() + "BoundedWavFileWriterTest_" + test_info->name() + - "_" + rtc::CreateRandomUuid() + ".wav"; + const std::string output_filename = test::OutputPathWithRandomDirectory() + + "BoundedWavFileWriterTest_" + + test_info->name() + ".wav"; static const size_t kSamplesPerFrame = 8; static const int kSampleRate = kSamplesPerFrame * 100; @@ -137,9 +136,9 @@ TEST(WavFileReaderTest, RepeatedTrueWithSingleFrameFileReadTwice) { static const rtc::BufferT kExpectedSamples(kInputSamples.data(), kInputSamples.size()); - const std::string output_filename = test::OutputPath() + + const std::string output_filename = test::OutputPathWithRandomDirectory() + "WavFileReaderTest_RepeatedTrue_" + - std::to_string(std::rand()) + ".wav"; + ".wav"; static const size_t kSamplesPerFrame = 8; static const int kSampleRate = kSamplesPerFrame * 100; @@ -176,9 +175,9 @@ void RunRawTestNoRepeat(const std::vector& input_samples, const ::testing::TestInfo* const test_info = ::testing::UnitTest::GetInstance()->current_test_info(); - const std::string output_filename = test::OutputPath() + "RawFileTest_" + - test_info->name() + "_" + - std::to_string(std::rand()) + ".raw"; + const std::string output_filename = test::OutputPathWithRandomDirectory() + + "RawFileTest_" + test_info->name() + + ".raw"; static const size_t kSamplesPerFrame = 8; static const int kSampleRate = kSamplesPerFrame * 100; @@ -282,8 +281,8 @@ TEST(RawFileWriterTest, Repeat) { const ::testing::TestInfo* const test_info = ::testing::UnitTest::GetInstance()->current_test_info(); - const std::string output_filename = test::OutputPath() + "RawFileTest_" + - test_info->name() + "_" + + const std::string output_filename = test::OutputPathWithRandomDirectory() + + "RawFileTest_" + test_info->name() + "_" + std::to_string(std::rand()) + ".raw"; static const size_t kSamplesPerFrame = 8; diff --git a/rtc_base/system/file_wrapper_unittest.cc b/rtc_base/system/file_wrapper_unittest.cc index 980b565c73..b83c1df933 100644 --- a/rtc_base/system/file_wrapper_unittest.cc +++ b/rtc_base/system/file_wrapper_unittest.cc @@ -21,7 +21,8 @@ TEST(FileWrapper, FileSize) { std::string test_name = std::string(test_info->test_case_name()) + "_" + test_info->name(); std::replace(test_name.begin(), test_name.end(), '/', '_'); - const std::string temp_filename = test::OutputPath() + test_name; + const std::string temp_filename = + test::OutputPathWithRandomDirectory() + test_name; // Write { diff --git a/test/testsupport/file_utils.cc b/test/testsupport/file_utils.cc index 58ee16282e..afabbaad3f 100644 --- a/test/testsupport/file_utils.cc +++ b/test/testsupport/file_utils.cc @@ -36,7 +36,7 @@ #include // To check for directory existence. #ifndef S_ISDIR // Not defined in stat.h on Windows. -#define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR) +#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) #endif #include @@ -237,7 +237,12 @@ std::string ResourcePath(absl::string_view name, absl::string_view extension) { std::string JoinFilename(absl::string_view dir, absl::string_view name) { RTC_CHECK(!dir.empty()) << "Special cases not implemented."; rtc::StringBuilder os; - os << dir << kPathDelimiter << name; + os << dir; + // If the directory path already ends with a path delimiter don't append it + if (dir.back() != kPathDelimiter.back()) { + os << kPathDelimiter; + } + os << name; return os.Release(); } diff --git a/test/testsupport/file_utils_unittest.cc b/test/testsupport/file_utils_unittest.cc index 8f91d6db7c..1101a63352 100644 --- a/test/testsupport/file_utils_unittest.cc +++ b/test/testsupport/file_utils_unittest.cc @@ -170,8 +170,8 @@ TEST_F(FileUtilsTest, GenerateTempFilename) { #define MAYBE_CreateDir CreateDir #endif TEST_F(FileUtilsTest, MAYBE_CreateDir) { - std::string directory = test::OutputPath() + "fileutils-unittest-empty-dir" + - rtc::CreateRandomUuid(); + std::string directory = + test::OutputPathWithRandomDirectory() + "fileutils-unittest-empty-dir"; // Make sure it's removed if a previous test has failed: remove(directory.c_str()); ASSERT_TRUE(webrtc::test::CreateDir(directory)); @@ -255,8 +255,7 @@ TEST_F(FileUtilsTest, WriteReadDeleteFilesAndDirs) { // Create an empty temporary directory for this test. const std::string temp_directory = - OutputPath() + - Path("TempFileUtilsTestReadDirectory" + rtc::CreateRandomUuid() + "/"); + OutputPathWithRandomDirectory() + Path("TempFileUtilsTestReadDirectory/"); CreateDir(temp_directory); EXPECT_NO_FATAL_FAILURE(CleanDir(temp_directory, &num_deleted_entries)); EXPECT_TRUE(DirExists(temp_directory)); @@ -298,5 +297,15 @@ TEST_F(FileUtilsTest, DirNameStopsAtRoot) { EXPECT_EQ(Path("/"), DirName(Path("/"))); } +TEST_F(FileUtilsTest, JoinFilenameDoesNotAppendExtraPathDelimiterIfExists) { + EXPECT_EQ(JoinFilename(Path("/some/path/"), "file.txt"), + Path("/some/path/file.txt")); +} + +TEST_F(FileUtilsTest, JoinFilenameAppendsPathDelimiterIfMissing) { + EXPECT_EQ(JoinFilename(Path("/some/path"), "file.txt"), + Path("/some/path/file.txt")); +} + } // namespace test } // namespace webrtc diff --git a/test/testsupport/test_artifacts.cc b/test/testsupport/test_artifacts.cc index 6f062e5fe4..b0ab046e63 100644 --- a/test/testsupport/test_artifacts.cc +++ b/test/testsupport/test_artifacts.cc @@ -20,7 +20,7 @@ namespace { const std::string& DefaultArtifactPath() { - static const std::string path = webrtc::test::OutputPath(); + static const std::string path = webrtc::test::OutputPathWithRandomDirectory(); return path; } } // namespace @@ -55,8 +55,11 @@ bool WriteToTestArtifactsDir(const char* filename, return false; } - FileWrapper output = FileWrapper::OpenWriteOnly( - JoinFilename(absl::GetFlag(FLAGS_test_artifacts_dir), filename)); + std::string full_path = + JoinFilename(absl::GetFlag(FLAGS_test_artifacts_dir), filename); + FileWrapper output = FileWrapper::OpenWriteOnly(full_path); + + RTC_LOG(LS_INFO) << "Writing test artifacts in: " << full_path; return output.is_open() && output.Write(buffer, length); }