mirror of
https://github.com/ostreedev/ostree.git
synced 2024-12-25 01:34:34 +03:00
305db981d4
This is inspired by the [Coccinelle](http://coccinelle.lip6.fr/) usage in systemd. I also took it a bit further and added infrastructure to have spatches which should never apply. This acts as a blacklist. The reason to do the latter is that coccinelle is *way* more powerful than the regular expresssions we have in `make syntax-check`. I started with blacklisting `g_error_free()` directly. The reason that's bad is it leaves a dangling pointer. Closes: #754 Approved by: jlebon
30 lines
736 B
Bash
Executable File
30 lines
736 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Run the .cocci files in the tests directory; these act
|
|
# as a blacklist.
|
|
|
|
set -euo pipefail
|
|
|
|
. $(dirname $0)/libtest.sh
|
|
|
|
if ! spatch --version 2>/dev/null; then
|
|
skip "no spatch; get it from http://coccinelle.lip6.fr/"
|
|
fi
|
|
|
|
if test -z "${OSTREE_UNINSTALLED_SRCDIR:-}"; then
|
|
skip "running installed?"
|
|
fi
|
|
|
|
coccitests=$(ls $(dirname $0)/coccinelle/*.cocci)
|
|
echo "1.."$(echo ${coccitests} | wc -l)
|
|
|
|
for cocci in $(dirname $0)/coccinelle/*.cocci; do
|
|
echo "Running: ${cocci}"
|
|
spatch --very-quiet --dir ${OSTREE_UNINSTALLED_SRCDIR} ${cocci} > cocci.out
|
|
if test -s cocci.out; then
|
|
sed -e 's/^/# /' < cocci.out >&2
|
|
fatal "Failed semantic patch: ${cocci}"
|
|
fi
|
|
echo ok ${cocci}
|
|
done
|