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:

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
|
||||
|
Reference in New Issue
Block a user