// Copyright 2016 The Chromium Embedded Framework Authors. Portions copyright // 2011 The Chromium Authors. All rights reserved. Use of this source code is // governed by a BSD-style license that can be found in the LICENSE file. #include #include "include/cef_file_util.h" #include "include/wrapper/cef_scoped_temp_dir.h" #include "tests/gtest/include/gtest/gtest.h" TEST(ScopedTempDir, FullPath) { CefString test_path; CefCreateNewTempDirectory("scoped_temp_dir", test_path); // Against an existing dir, it should get destroyed when leaving scope. EXPECT_TRUE(CefDirectoryExists(test_path)); { CefScopedTempDir dir; EXPECT_TRUE(dir.Set(test_path)); EXPECT_TRUE(dir.IsValid()); } EXPECT_FALSE(CefDirectoryExists(test_path)); { CefScopedTempDir dir; EXPECT_TRUE(dir.Set(test_path)); // Now the dir doesn't exist, so ensure that it gets created. EXPECT_TRUE(CefDirectoryExists(test_path)); // When we call Take(), it shouldn't get destroyed when leaving scope. CefString path = dir.Take(); EXPECT_STREQ(path.ToString().c_str(), test_path.ToString().c_str()); EXPECT_FALSE(dir.IsValid()); } EXPECT_TRUE(CefDirectoryExists(test_path)); // Clean up. { CefScopedTempDir dir; EXPECT_TRUE(dir.Set(test_path)); } EXPECT_FALSE(CefDirectoryExists(test_path)); } TEST(ScopedTempDir, TempDir) { // In this case, just verify that a directory was created and that it's a // child of TempDir. CefString test_path; { CefScopedTempDir dir; EXPECT_TRUE(dir.CreateUniqueTempDir()); test_path = dir.GetPath(); EXPECT_TRUE(CefDirectoryExists(test_path)); CefString tmp_dir; EXPECT_TRUE(CefGetTempDirectory(tmp_dir)); EXPECT_TRUE(test_path.ToString().find(tmp_dir.ToString()) != std::string::npos); } EXPECT_FALSE(CefDirectoryExists(test_path)); } TEST(ScopedTempDir, UniqueTempDirUnderPath) { // Create a path which will contain a unique temp path. CefString base_path; ASSERT_TRUE(CefCreateNewTempDirectory("base_dir", base_path)); CefString test_path; { CefScopedTempDir dir; EXPECT_TRUE(dir.CreateUniqueTempDirUnderPath(base_path)); test_path = dir.GetPath(); EXPECT_TRUE(CefDirectoryExists(test_path)); EXPECT_TRUE(test_path.ToString().find(base_path.ToString()) == 0); } EXPECT_FALSE(CefDirectoryExists(test_path)); CefDeleteFile(base_path, true); } TEST(ScopedTempDir, MultipleInvocations) { CefScopedTempDir dir; EXPECT_TRUE(dir.CreateUniqueTempDir()); EXPECT_FALSE(dir.CreateUniqueTempDir()); EXPECT_TRUE(dir.Delete()); EXPECT_TRUE(dir.CreateUniqueTempDir()); EXPECT_FALSE(dir.CreateUniqueTempDir()); CefScopedTempDir other_dir; EXPECT_TRUE(other_dir.Set(dir.Take())); EXPECT_TRUE(dir.CreateUniqueTempDir()); EXPECT_FALSE(dir.CreateUniqueTempDir()); EXPECT_FALSE(other_dir.CreateUniqueTempDir()); }