| Index: testing/libfuzzer/fuzzer_test.gni
|
| diff --git a/testing/libfuzzer/fuzzer_test.gni b/testing/libfuzzer/fuzzer_test.gni
|
| index 2064f6cf024c9abdabf346bd22cee094650908bc..d767287c54c1be84e8fb90eb9ae1e59a78f8c24b 100644
|
| --- a/testing/libfuzzer/fuzzer_test.gni
|
| +++ b/testing/libfuzzer/fuzzer_test.gni
|
| @@ -11,7 +11,8 @@ import("//testing/test.gni")
|
| # visible for testing only.
|
| template("fuzzer_test_launcher") {
|
| assert(defined(invoker.fuzzer_name), "need fuzzer_name in $target_name.")
|
| - assert(defined(invoker.dict), "need dict in $target_name.")
|
| + assert(defined(invoker.dict) || defined(invoker.params),
|
| + "need dict or params in $target_name.")
|
|
|
| generated_script = "$root_build_dir/$target_name"
|
|
|
| @@ -22,9 +23,19 @@ template("fuzzer_test_launcher") {
|
| invoker.fuzzer_name,
|
| "--launcher",
|
| rebase_path(generated_script, root_build_dir),
|
| - "--dict",
|
| - rebase_path("$root_build_dir/" + invoker.dict, root_build_dir),
|
| ]
|
| + if (defined(invoker.dict)) {
|
| + args += [
|
| + "--dict",
|
| + rebase_path("$root_build_dir/" + invoker.dict, root_build_dir),
|
| + ]
|
| + }
|
| + if (defined(invoker.params)) {
|
| + args += [
|
| + "--params",
|
| + "\"" + invoker.params + "\"",
|
| + ]
|
| + }
|
| outputs = [
|
| generated_script,
|
| ]
|
| @@ -39,13 +50,14 @@ template("fuzzer_test_launcher") {
|
| # - deps - test dependencies
|
| # - additional_configs - additional configs to be used for compilation
|
| # - dict - a dictionary file for the fuzzer.
|
| +# - params - custom parameters for the fuzzer (e.g. some -max_len or -timeout).
|
| #
|
| # If use_libfuzzer gn flag is defined, then proper fuzzer would be build.
|
| # Without use_libfuzzer a unit-test style binary would be built on linux
|
| # and the whole target is a no-op otherwise.
|
| #
|
| # The template wraps test() target with appropriate dependencies.
|
| -# If any test run-time options are present (dict), then a launcher
|
| +# If any test run-time options are present (dict or params), then a launcher
|
| # file would be generated with <fuzzer_name>.sh name in root output
|
| # dir (next to test).
|
| template("fuzzer_test") {
|
| @@ -63,32 +75,39 @@ template("fuzzer_test") {
|
| test_data += invoker.data
|
| }
|
|
|
| - if (defined(invoker.dict)) {
|
| + if (defined(invoker.dict) || defined(invoker.params)) {
|
| fuzzer_name = target_name
|
| launcher_name = target_name + ".sh"
|
|
|
| - # Copy dictionary to output
|
| - copy(target_name + "_dict_copy") {
|
| - sources = [
|
| - invoker.dict,
|
| - ]
|
| - outputs = [
|
| - "$root_build_dir/" + invoker.dict,
|
| - ]
|
| + if (defined(invoker.dict)) {
|
| + # Copy dictionary to output
|
| + copy(target_name + "_dict_copy") {
|
| + sources = [
|
| + invoker.dict,
|
| + ]
|
| + outputs = [
|
| + "$root_build_dir/" + invoker.dict,
|
| + ]
|
| + }
|
| }
|
|
|
| fuzzer_test_launcher(launcher_name) {
|
| - dict = invoker.dict
|
| + forward_variables_from(invoker,
|
| + [
|
| + "dict",
|
| + "params",
|
| + ])
|
| }
|
|
|
| - test_deps += [
|
| - ":$launcher_name",
|
| - ":" + fuzzer_name + "_dict_copy",
|
| - ]
|
| - test_data += [
|
| - invoker.dict,
|
| - ":$launcher_name",
|
| - ]
|
| + test_deps += [ ":$launcher_name" ]
|
| + if (defined(invoker.dict)) {
|
| + test_deps += [ ":" + fuzzer_name + "_dict_copy" ]
|
| + }
|
| +
|
| + if (defined(invoker.dict)) {
|
| + test_data += [ invoker.dict ]
|
| + }
|
| + test_data += [ ":$launcher_name" ]
|
| }
|
|
|
| test(target_name) {
|
| @@ -118,6 +137,9 @@ template("fuzzer_test") {
|
| if (defined(invoker.dict)) {
|
| assert(invoker.dict == [] || invoker.dict != [])
|
| }
|
| + if (defined(invoker.params)) {
|
| + assert(invoker.params == [] || invoker.params != [])
|
| + }
|
|
|
| group(target_name) {
|
| }
|
|
|