2016-11-15 18:56:02 +01:00
|
|
|
// 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 <string>
|
|
|
|
|
|
|
|
#include "include/cef_file_util.h"
|
|
|
|
#include "include/wrapper/cef_scoped_temp_dir.h"
|
2016-11-18 00:52:42 +01:00
|
|
|
#include "tests/gtest/include/gtest/gtest.h"
|
2016-11-15 18:56:02 +01:00
|
|
|
|
|
|
|
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());
|
|
|
|
}
|