ff6046
From 6a8c286e1a45dfa64c48cd4d5a911d4f71de9a16 Mon Sep 17 00:00:00 2001
ff6046
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
ff6046
Date: Fri, 10 Aug 2018 17:15:05 +0200
ff6046
Subject: [PATCH] meson: treat all fuzz cases as unit tests
ff6046
ff6046
318/365 fuzz-bus-message:crash-26bba7182dedc8848939931d9fcefcb7922f2e56:address  OK       0.03 s
ff6046
319/365 fuzz-bus-message:crash-29ed3c202e0ffade3cad42c8bbeb6cc68a21eb8e:address  OK       0.03 s
ff6046
320/365 fuzz-bus-message:crash-b88ad9ecf4aacf4a0caca5b5543953265367f084:address  OK       0.03 s
ff6046
321/365 fuzz-bus-message:crash-c1b37b4729b42c0c05b23cba4eed5d8102498a1e:address  OK       0.03 s
ff6046
322/365 fuzz-bus-message:crash-d8f3941c74219b4c03532c9b244d5ea539c61af5:address  OK       0.03 s
ff6046
323/365 fuzz-bus-message:crash-e1b811da5ca494e494b77c6bd8e1c2f2989425c5:address  OK       0.03 s
ff6046
324/365 fuzz-bus-message:leak-c09c0e2256d43bc5e2d02748c8d8760e7bc25d20:address  OK       0.04 s
ff6046
325/365 fuzz-bus-message:message1:address       OK       0.03 s
ff6046
326/365 fuzz-bus-message:timeout-08ee8f6446a4064db064e8e0b3d220147f7d0b5b:address  OK       0.03 s
ff6046
327/365 fuzz-dhcp-server:discover-existing:address  OK       0.04 s
ff6046
328/365 fuzz-dhcp-server:discover-new:address   OK       0.03 s
ff6046
329/365 fuzz-dhcp-server:release:address        OK       0.04 s
ff6046
330/365 fuzz-dhcp-server:request-existing:address  OK       0.03 s
ff6046
331/365 fuzz-dhcp-server:request-new:address    OK       0.03 s
ff6046
332/365 fuzz-dhcp-server:request-reboot:address  OK       0.03 s
ff6046
333/365 fuzz-dhcp-server:request-renew:address  OK       0.03 s
ff6046
334/365 fuzz-dns-packet:issue-7888:address      OK       0.03 s
ff6046
335/365 fuzz-dns-packet:oss-fuzz-5465:address   OK       0.03 s
ff6046
336/365 fuzz-journal-remote:crash-5a8f03d4c3a46fcded39527084f437e8e4b54b76:address  OK       0.06 s
ff6046
337/365 fuzz-journal-remote:crash-96dee870ea66d03e89ac321eee28ea63a9b9aa45:address  OK       0.04 s
ff6046
338/365 fuzz-journal-remote:invalid-ts.txt:address  OK       0.04 s
ff6046
339/365 fuzz-journal-remote:oss-fuzz-8659:address  OK       0.06 s
ff6046
340/365 fuzz-journal-remote:oss-fuzz-8686:address  OK       0.04 s
ff6046
341/365 fuzz-journal-remote:sample.txt:address  OK       0.07 s
ff6046
342/365 fuzz-unit-file:directives.service:address  OK       0.03 s
ff6046
343/365 fuzz-unit-file:empty.scope:address      OK       0.04 s
ff6046
344/365 fuzz-unit-file:machine.slice:address    OK       0.03 s
ff6046
345/365 fuzz-unit-file:oss-fuzz-6884:address    OK       0.05 s
ff6046
346/365 fuzz-unit-file:oss-fuzz-6885:address    OK       0.03 s
ff6046
347/365 fuzz-unit-file:oss-fuzz-6886:address    OK       0.04 s
ff6046
348/365 fuzz-unit-file:oss-fuzz-6892:address    OK       0.03 s
ff6046
349/365 fuzz-unit-file:oss-fuzz-6897:address    OK       0.05 s
ff6046
350/365 fuzz-unit-file:oss-fuzz-6897-evverx:address  OK       0.04 s
ff6046
351/365 fuzz-unit-file:oss-fuzz-6908:address    OK       0.05 s
ff6046
352/365 fuzz-unit-file:oss-fuzz-6917:address    OK       0.06 s
ff6046
353/365 fuzz-unit-file:oss-fuzz-6977:address    OK       0.08 s
ff6046
354/365 fuzz-unit-file:oss-fuzz-6977-unminimized:address  OK       0.10 s
ff6046
355/365 fuzz-unit-file:oss-fuzz-7004:address    OK       0.03 s
ff6046
356/365 fuzz-unit-file:oss-fuzz-8064:address    OK       0.03 s
ff6046
357/365 fuzz-unit-file:oss-fuzz-8827:address    OK       0.50 s
ff6046
358/365 fuzz-unit-file:proc-sys-fs-binfmt_misc.automount:address  OK       0.03 s
ff6046
359/365 fuzz-unit-file:syslog.socket:address    OK       0.03 s
ff6046
360/365 fuzz-unit-file:systemd-ask-password-console.path:address  OK       0.03 s
ff6046
361/365 fuzz-unit-file:systemd-machined.service:address  OK       0.03 s
ff6046
362/365 fuzz-unit-file:systemd-resolved.service:address  OK       0.03 s
ff6046
363/365 fuzz-unit-file:systemd-tmpfiles-clean.timer:address  OK       0.03 s
ff6046
364/365 fuzz-unit-file:timers.target:address    OK       0.03 s
ff6046
365/365 fuzz-unit-file:var-lib-machines.mount:address  OK       0.04 s
ff6046
ff6046
This gives us slightly nicer coverage in the normal test run.
ff6046
ff6046
When in a git repo, git ls-files is used to get a list of files known to git.
ff6046
This mirrors what update-man-rules does for man files. Only looking at files
ff6046
known to git makes it easier to not forget to commit the test file to git,
ff6046
and also makes bisecting easier if some files are left in repo.
ff6046
ff6046
When outside of a git repo, we expect to be unpacked from a tarball, so just
ff6046
using all files reported by ls is OK.
ff6046
ff6046
(cherry picked from commit e6bad6746151c79a5f408e95714ffa5cea290ab0)
ff6046
ff6046
Resolves: #1696224
ff6046
---
ff6046
 meson.build           |  2 +-
ff6046
 test/fuzz/meson.build | 48 ++++++++++++++++++-------------------------
ff6046
 2 files changed, 21 insertions(+), 29 deletions(-)
ff6046
ff6046
diff --git a/meson.build b/meson.build
ff6046
index fe161e5ec5..04b461dcd4 100644
ff6046
--- a/meson.build
ff6046
+++ b/meson.build
ff6046
@@ -2804,7 +2804,7 @@ foreach tuple : sanitizers
ff6046
                                 test('@0@:@1@:@2@'.format(b, c, sanitizer),
ff6046
                                      env,
ff6046
                                      args : [exe.full_path(),
ff6046
-                                             join_paths(meson.source_root(), 'test/fuzz', p)])
ff6046
+                                             join_paths(meson.source_root(), p)])
ff6046
                         endif
ff6046
                 endforeach
ff6046
         endif
ff6046
diff --git a/test/fuzz/meson.build b/test/fuzz/meson.build
ff6046
index b98436a4af..56d0f69660 100644
ff6046
--- a/test/fuzz/meson.build
ff6046
+++ b/test/fuzz/meson.build
ff6046
@@ -11,31 +11,23 @@ sanitize_address = custom_target(
ff6046
 
ff6046
 sanitizers = [['address', sanitize_address]]
ff6046
 
ff6046
-fuzz_regression_tests = '''
ff6046
-        fuzz-dns-packet/issue-7888
ff6046
-        fuzz-dns-packet/oss-fuzz-5465
ff6046
-        fuzz-journal-remote/crash-5a8f03d4c3a46fcded39527084f437e8e4b54b76
ff6046
-        fuzz-journal-remote/crash-96dee870ea66d03e89ac321eee28ea63a9b9aa45
ff6046
-        fuzz-journal-remote/oss-fuzz-8659
ff6046
-        fuzz-journal-remote/oss-fuzz-8686
ff6046
-        fuzz-journald-syslog/github-9795
ff6046
-        fuzz-journald-syslog/github-9820
ff6046
-        fuzz-journald-syslog/github-9827
ff6046
-        fuzz-journald-syslog/github-9829
ff6046
-        fuzz-ndisc-rs/timeout-2815b773c712fa33bea62f541dfa3017c64ea2f1
ff6046
-        fuzz-ndisc-rs/timeout-61fff7fd1e5dcc07e1b656baab29065ce634ad5b
ff6046
-        fuzz-unit-file/oss-fuzz-6884
ff6046
-        fuzz-unit-file/oss-fuzz-6885
ff6046
-        fuzz-unit-file/oss-fuzz-6886
ff6046
-        fuzz-unit-file/oss-fuzz-6892
ff6046
-        fuzz-unit-file/oss-fuzz-6897
ff6046
-        fuzz-unit-file/oss-fuzz-6897-evverx
ff6046
-        fuzz-unit-file/oss-fuzz-6908
ff6046
-        fuzz-unit-file/oss-fuzz-6917
ff6046
-        fuzz-unit-file/oss-fuzz-6977
ff6046
-        fuzz-unit-file/oss-fuzz-6977-unminimized
ff6046
-        fuzz-unit-file/oss-fuzz-7004
ff6046
-        fuzz-unit-file/oss-fuzz-8064
ff6046
-        fuzz-unit-file/oss-fuzz-8827
ff6046
-        fuzz-unit-file/oss-fuzz-10007
ff6046
-'''.split()
ff6046
+if git.found()
ff6046
+        out = run_command(
ff6046
+                git,
ff6046
+                '--git-dir=@0@/.git'.format(meson.source_root()),
ff6046
+                 'ls-files', ':/test/fuzz/*/*')
ff6046
+else
ff6046
+        out = run_command(
ff6046
+                'sh', '-c', 'ls @0@/*/*'.format(meson.current_source_dir()))
ff6046
+endif
ff6046
+
ff6046
+fuzz_regression_tests = []
ff6046
+foreach p : out.stdout().split()
ff6046
+        # Remove the last entry which is ''.
ff6046
+        #
ff6046
+        # Also, backslashes get mangled, so skip test. See
ff6046
+        # https://github.com/mesonbuild/meson/issues/1564.
ff6046
+        if not p.contains('\\')
ff6046
+                fuzz_regression_tests += p
ff6046
+        endif
ff6046
+endforeach