0

Add a unit test for ParsePpdCapabilities() littering temp files.

Add the PrintBackendCupsHelperTest.NoTempFileLeftBehind test case to
demonstrate ParsePpdCapabilities() is currently leaving temp files
behind.

Bug: 1245412
Change-Id: Iea319a089ec0f5e50f9b8eaaa570614e59615b0a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3860630
Reviewed-by: Alan Screen <awscreen@chromium.org>
Commit-Queue: Alan Screen <awscreen@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1040159}
This commit is contained in:
Lei Zhang
2022-08-28 03:03:02 +00:00
committed by Chromium LUCI CQ
parent 0ebb796996
commit 48e389e7a3

@ -4,6 +4,9 @@
#include "printing/backend/cups_helper.h"
#include "base/files/file_util.h"
#include "base/files/scoped_temp_dir.h"
#include "base/scoped_environment_variable_override.h"
#include "base/strings/stringprintf.h"
#include "build/build_config.h"
#include "printing/backend/print_backend.h"
@ -638,4 +641,32 @@ TEST(PrintBackendCupsHelperTest, PpdSetsDestOptions) {
cupsFreeDests(num_dests, dest);
}
// For crbug.com/1245412
TEST(PrintBackendCupsHelperTest, NoTempFileLeftBehind) {
// Create a temp dir and set it as the global temp dir, so
// ParsePpdCapabilities() will put its temporary files there.
base::ScopedTempDir temp_dir;
ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
EXPECT_TRUE(base::IsDirectoryEmpty(temp_dir.GetPath()));
{
#if BUILDFLAG(IS_MAC)
const char kTempDirEnvVar[] = "MAC_CHROMIUM_TMPDIR";
#else
const char kTempDirEnvVar[] = "TMPDIR";
#endif
base::ScopedEnvironmentVariableOverride env_override(
kTempDirEnvVar, temp_dir.GetPath().value());
// Make sure ParsePpdCapabilities() does some work and succeeds.
PrinterSemanticCapsAndDefaults dummy_caps;
EXPECT_TRUE(ParsePpdCapabilities(
/*dest=*/nullptr, /*locale=*/"",
GeneratePpdResolutionTestData("Resolution").c_str(), &dummy_caps));
}
// TODO(crbug.com/1245412): This should return true.
EXPECT_FALSE(base::IsDirectoryEmpty(temp_dir.GetPath()));
}
} // namespace printing