Commit e31461de authored by Greg Thompson's avatar Greg Thompson Committed by Commit Bot

Plug temp dir leak in HeadlessBrowserTest.UserDataDir.

The User Data dir cannot be cleanly deleted at the end of the main test
function, as there remain files in-use within the directory at that
point. Rather, scope the temp dir to the lifetime of the test harness so
that it can be cleaned up after the test has been spun down.

Bug: 546640
Change-Id: Id942c785bb6c84c40079bc4bde10fad4c7b16d15
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1870113
Auto-Submit: Greg Thompson <grt@chromium.org>
Commit-Queue: Sami Kyöstilä <skyostil@chromium.org>
Reviewed-by: default avatarSami Kyöstilä <skyostil@chromium.org>
Cr-Commit-Position: refs/heads/master@{#707759}
parent 85bedbb5
...@@ -150,25 +150,44 @@ class HeadlessBrowserContextIsolationTest ...@@ -150,25 +150,44 @@ class HeadlessBrowserContextIsolationTest
// TODO(https://crbug.com/930356): Re-enable test. // TODO(https://crbug.com/930356): Re-enable test.
DISABLED_HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessBrowserContextIsolationTest); DISABLED_HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessBrowserContextIsolationTest);
IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, UserDataDir) { class HeadlessBrowserUserDataDirTest : public HeadlessBrowserTest {
// We do not want to bother with posting tasks to create a temp dir. protected:
// Just allow IO from main thread for now. HeadlessBrowserUserDataDirTest() = default;
base::ThreadRestrictions::SetIOAllowed(true); ~HeadlessBrowserUserDataDirTest() override = default;
HeadlessBrowserUserDataDirTest(const HeadlessBrowserUserDataDirTest&) =
delete;
HeadlessBrowserUserDataDirTest& operator=(
const HeadlessBrowserUserDataDirTest&) = delete;
const base::FilePath& user_data_dir() const {
return user_data_dir_.GetPath();
}
EXPECT_TRUE(embedded_test_server()->Start()); // HeadlessBrowserTest:
void SetUp() override {
ASSERT_TRUE(user_data_dir_.CreateUniqueTempDir());
base::ScopedTempDir user_data_dir; // The newly created temp directory should be empty.
ASSERT_TRUE(user_data_dir.CreateUniqueTempDir()); EXPECT_TRUE(base::IsDirectoryEmpty(user_data_dir()));
// Newly created temp directory should be empty. HeadlessBrowserTest::SetUp();
EXPECT_TRUE(base::IsDirectoryEmpty(user_data_dir.GetPath())); }
HeadlessBrowserContext* browser_context = private:
browser() base::ScopedTempDir user_data_dir_;
->CreateBrowserContextBuilder() };
.SetUserDataDir(user_data_dir.GetPath())
.SetIncognitoMode(false) IN_PROC_BROWSER_TEST_F(HeadlessBrowserUserDataDirTest, Do) {
.Build(); // Allow IO from the main thread.
base::ThreadRestrictions::SetIOAllowed(true);
EXPECT_TRUE(embedded_test_server()->Start());
HeadlessBrowserContext* browser_context = browser()
->CreateBrowserContextBuilder()
.SetUserDataDir(user_data_dir())
.SetIncognitoMode(false)
.Build();
HeadlessWebContents* web_contents = HeadlessWebContents* web_contents =
browser_context->CreateWebContentsBuilder() browser_context->CreateWebContentsBuilder()
...@@ -180,7 +199,7 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, UserDataDir) { ...@@ -180,7 +199,7 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, UserDataDir) {
// Something should be written to this directory. // Something should be written to this directory.
// If it is not the case, more complex page may be needed. // If it is not the case, more complex page may be needed.
// ServiceWorkers may be a good option. // ServiceWorkers may be a good option.
EXPECT_FALSE(base::IsDirectoryEmpty(user_data_dir.GetPath())); EXPECT_FALSE(base::IsDirectoryEmpty(user_data_dir()));
} }
IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, IncognitoMode) { IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, IncognitoMode) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment