Fix --render-test-output-dir to work in TestSuite.

https://crrev.com/c/3956937 introduced the issue where this flag is
consumed by ANGLEPerfTestArgs.cpp logic which runs before the TestSuite
constructor and removes the flag so we end up with an empty
mTestArtifactDirectory in TestSuite.

Bug: angleproject:7755
Change-Id: Ic32d3a2ddceca7842a0aebe5a1e40cbedaedf2eb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4097325
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
This commit is contained in:
Roman Lavrov
2022-12-12 15:31:29 -05:00
committed by Angle LUCI CQ
parent 001ba94e3d
commit 2ce2146b13
3 changed files with 30 additions and 9 deletions

View File

@@ -97,8 +97,8 @@ bool TraceTestArg(int *argc, char **argv, int argIndex)
ParseFlag("--trace-interpreter", argc, argv, argIndex, &gTraceInterpreter) ||
ParseFlag("--interpreter", argc, argv, argIndex, &gTraceInterpreter) ||
ParseIntArg("--screenshot-frame", argc, argv, argIndex, &gScreenshotFrame) ||
ParseCStringArg("--render-test-output-dir", argc, argv, argIndex,
&gRenderTestOutputDir) ||
ParseCStringArgWithHandling("--render-test-output-dir", argc, argv, argIndex,
&gRenderTestOutputDir, ArgHandling::Preserve) ||
ParseCStringArg("--screenshot-dir", argc, argv, argIndex, &gScreenshotDir) ||
ParseCStringArg("--use-angle", argc, argv, argIndex, &gUseANGLE) ||
ParseCStringArg("--use-gl", argc, argv, argIndex, &gUseGL) ||

View File

@@ -176,6 +176,7 @@ bool ParseIntArgWithHandling(const char *flag,
}
*valueOut = static_cast<int>(longValue);
// Note: return value is always false with ArgHandling::Preserve handling
return handling == ArgHandling::Delete;
}
@@ -207,16 +208,27 @@ bool ParseStringArg(const char *flag, int *argc, char **argv, int argIndex, std:
return true;
}
bool ParseCStringArg(const char *flag, int *argc, char **argv, int argIndex, const char **valueOut)
bool ParseCStringArgWithHandling(const char *flag,
int *argc,
char **argv,
int argIndex,
const char **valueOut,
ArgHandling handling)
{
const char *value = GetSingleArg(flag, argc, argv, argIndex, ArgHandling::Delete);
const char *value = GetSingleArg(flag, argc, argv, argIndex, handling);
if (!value)
{
return false;
}
*valueOut = value;
return true;
// Note: return value is always false with ArgHandling::Preserve handling
return handling == ArgHandling::Delete;
}
bool ParseCStringArg(const char *flag, int *argc, char **argv, int argIndex, const char **valueOut)
{
return ParseCStringArgWithHandling(flag, argc, argv, argIndex, valueOut, ArgHandling::Delete);
}
void AddArg(int *argc, char **argv, const char *arg)

View File

@@ -133,16 +133,25 @@ enum ArgHandling
Preserve,
};
bool ParseIntArg(const char *flag, int *argc, char **argv, int argIndex, int *valueOut);
bool ParseFlag(const char *flag, int *argc, char **argv, int argIndex, bool *flagOut);
bool ParseStringArg(const char *flag, int *argc, char **argv, int argIndex, std::string *valueOut);
bool ParseCStringArg(const char *flag, int *argc, char **argv, int argIndex, const char **valueOut);
// Note: return value is always false with ArgHandling::Preserve handling
bool ParseIntArgWithHandling(const char *flag,
int *argc,
char **argv,
int argIndex,
int *valueOut,
ArgHandling handling);
bool ParseIntArg(const char *flag, int *argc, char **argv, int argIndex, int *valueOut);
bool ParseFlag(const char *flag, int *argc, char **argv, int argIndex, bool *flagOut);
bool ParseStringArg(const char *flag, int *argc, char **argv, int argIndex, std::string *valueOut);
bool ParseCStringArg(const char *flag, int *argc, char **argv, int argIndex, const char **valueOut);
bool ParseCStringArgWithHandling(const char *flag,
int *argc,
char **argv,
int argIndex,
const char **valueOut,
ArgHandling handling);
void AddArg(int *argc, char **argv, const char *arg);
uint32_t GetPlatformANGLETypeFromArg(const char *useANGLEArg, uint32_t defaultPlatformType);