Skip to content

Commit

Permalink
Plug temp dir leak in HeadlessBrowserTest.UserDataDir.
Browse files Browse the repository at this point in the history
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: Sami Kyöstilä <skyostil@chromium.org>
Cr-Commit-Position: refs/heads/master@{#707759}
  • Loading branch information
GregTho authored and Commit Bot committed Oct 21, 2019
1 parent 85bedbb commit e31461d
Showing 1 changed file with 35 additions and 16 deletions.
51 changes: 35 additions & 16 deletions headless/lib/headless_browser_context_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -150,25 +150,44 @@ class HeadlessBrowserContextIsolationTest
// TODO(https://crbug.com/930356): Re-enable test.
DISABLED_HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessBrowserContextIsolationTest);

IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, UserDataDir) {
// We do not want to bother with posting tasks to create a temp dir.
// Just allow IO from main thread for now.
base::ThreadRestrictions::SetIOAllowed(true);
class HeadlessBrowserUserDataDirTest : public HeadlessBrowserTest {
protected:
HeadlessBrowserUserDataDirTest() = default;
~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;
ASSERT_TRUE(user_data_dir.CreateUniqueTempDir());
// The newly created temp directory should be empty.
EXPECT_TRUE(base::IsDirectoryEmpty(user_data_dir()));

// Newly created temp directory should be empty.
EXPECT_TRUE(base::IsDirectoryEmpty(user_data_dir.GetPath()));
HeadlessBrowserTest::SetUp();
}

HeadlessBrowserContext* browser_context =
browser()
->CreateBrowserContextBuilder()
.SetUserDataDir(user_data_dir.GetPath())
.SetIncognitoMode(false)
.Build();
private:
base::ScopedTempDir user_data_dir_;
};

IN_PROC_BROWSER_TEST_F(HeadlessBrowserUserDataDirTest, Do) {
// 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 =
browser_context->CreateWebContentsBuilder()
Expand All @@ -180,7 +199,7 @@ IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, UserDataDir) {
// Something should be written to this directory.
// If it is not the case, more complex page may be needed.
// 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) {
Expand Down

0 comments on commit e31461d

Please sign in to comment.