Index: testing/libfuzzer/fuzzer_test.gni |
diff --git a/testing/libfuzzer/fuzzer_test.gni b/testing/libfuzzer/fuzzer_test.gni |
index 2064f6cf024c9abdabf346bd22cee094650908bc..5313faa9e3ba2487cd9b29992d929fda6fbe5881 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,40 @@ 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 |
+ if (defined(invoker.dict)) { |
aizatsky
2016/02/16 18:25:05
use forward_variables_from (see below).
mmoroz
2016/02/17 10:36:48
Done.
Didn't know that, thanks!
|
+ dict = invoker.dict |
+ } |
+ if (defined(invoker.params)) { |
+ params = invoker.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 +138,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) { |
} |