mirror of
https://github.com/ostreedev/ostree.git
synced 2024-12-22 17:35:55 +03:00
45 lines
1.3 KiB
Bash
Executable File
45 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Tests that validate structure of the source code;
|
|
# can be run without building it.
|
|
set -euo pipefail
|
|
|
|
# Don't hard require Rust
|
|
if command -v cargo >/dev/null; then
|
|
echo -n "checking rustfmt... "
|
|
for crate in $(find -iname Cargo.toml); do
|
|
if ! cargo fmt --manifest-path ${crate} -- --check; then
|
|
echo "cargo fmt failed; run: cd $(dirname ${crate}) && cargo fmt" 1>&2
|
|
exit 1
|
|
fi
|
|
done
|
|
echo "ok"
|
|
fi
|
|
|
|
if command -v clang-format; then
|
|
clang_ver=$(clang-format --version)
|
|
clang_min_ver=15
|
|
version_re=" version ([0-9]+)."
|
|
if [[ $clang_ver =~ $version_re ]]; then
|
|
if test "${BASH_REMATCH[1]}" -ge "${clang_min_ver}"; then
|
|
echo -n "checking clang-format... "
|
|
git ls-files '**.c' '**.cxx' '**.h' '**.hpp' | xargs clang-format --Werror --dry-run
|
|
echo "ok"
|
|
else
|
|
echo "notice: clang-format ${clang_ver}" is too old
|
|
fi
|
|
else
|
|
echo "failed to parse clang-format version ${clang_ver}" 1>&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo -n 'grep-based static analysis... '
|
|
patterns=(glnx_fd_close)
|
|
for pat in "${patterns[@]}"; do
|
|
if git grep "${pat}" | grep -v codestyle\.sh; then
|
|
echo "Files matched prohibited pattern: ${pat}" 1>&2
|
|
exit 1
|
|
fi
|
|
done
|
|
echo ok
|