summaryrefslogtreecommitdiff
path: root/tools/check-directives.sh
diff options
context:
space:
mode:
authorEvgeny Vereshchagin <evvers@ya.ru>2018-11-28 04:50:04 +0100
committerEvgeny Vereshchagin <evvers@ya.ru>2018-11-28 05:12:58 +0100
commita2ab58da1a6f0b6c51537d92c40208c2e00b97e9 (patch)
treed8852a44f7273fce6df980f1d2d3780e957265dc /tools/check-directives.sh
parent466a2bee94ccd2518c8b22299509adefb29cd15d (diff)
downloadsystemd-a2ab58da1a6f0b6c51537d92c40208c2e00b97e9.tar.gz
travis: make sure that *.perf and directives.* files are in sync
New features are constantly added to networkd. Apparently, not everybody knows that the "directives" files should be updated too to make the fuzzers aware of them.
Diffstat (limited to 'tools/check-directives.sh')
-rwxr-xr-xtools/check-directives.sh21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/check-directives.sh b/tools/check-directives.sh
new file mode 100755
index 0000000000..e2fd38898f
--- /dev/null
+++ b/tools/check-directives.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+set -e
+
+function generate_directives() {
+ perl -aF'/[\s,]+/' -ne '
+ if (my ($s, $d) = ($F[0] =~ /^([^\s\.]+)\.([^\s\.]+)$/)) { $d{$s}{"$d="} = 1; }
+ END { while (my ($key, $value) = each %d) {
+ printf "[%s]\n%s\n", $key, join("\n", keys(%$value))
+ }}' "$1"
+}
+
+if [[ $(generate_directives src/network/networkd-network-gperf.gperf | wc -l) -ne $(wc -l <test/fuzz/fuzz-network-parser/directives.network) ]]; then
+ echo "Looks like test/fuzz/fuzz-network-parser/directives.network hasn't been updated"
+ exit 1
+fi
+
+if [[ $(generate_directives src/network/netdev/netdev-gperf.gperf | wc -l) -ne $(wc -l <test/fuzz/fuzz-netdev-parser/directives.netdev) ]]; then
+ echo "Looks like test/fuzz/fuzz-netdev-parser/directives.netdev hasn't been updated"
+ exit 1
+fi