mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-11 01:06:01 +03:00
832e9c6e02
For each .cpp file in the test suite data, there is a .ast file that represents the "known good" baseline of the parser result. Each .cpp file goes through the parser, and the result of invoking `ASTNode::dump()` on the root node is compared to the baseline to find regressions. We also check that there were no parser errors when parsing the .cpp files.
60 lines
2.0 KiB
Bash
Executable File
60 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
|
|
cd "${script_path}/.." || exit 1
|
|
|
|
if [ "$#" -eq "1" ]; then
|
|
mapfile -t files < <(
|
|
git ls-files -- \
|
|
'*.cpp' \
|
|
'*.h' \
|
|
':!:Base' \
|
|
':!:Kernel/FileSystem/ext2_fs.h' \
|
|
':!:Userland/Libraries/LibC/syslog.h' \
|
|
':!:Userland/DevTools/HackStudio/LanguageServers/Cpp/Tests/*' \
|
|
':!:Userland/Libraries/LibCpp/Tests/*'
|
|
)
|
|
else
|
|
files=()
|
|
for file in "${@:2}"; do
|
|
if [[ "${file}" == *".cpp" || "${file}" == *".h" ]]; then
|
|
files+=("${file}")
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if (( ${#files[@]} )); then
|
|
CLANG_FORMAT=false
|
|
if command -v clang-format-11 >/dev/null 2>&1 ; then
|
|
CLANG_FORMAT=clang-format-11
|
|
elif command -v clang-format >/dev/null 2>&1 ; then
|
|
CLANG_FORMAT=clang-format
|
|
if ! "${CLANG_FORMAT}" --version | grep -qF ' 11.' ; then
|
|
echo "You are using '$("${CLANG_FORMAT}" --version)', which appears to not be clang-format 11."
|
|
echo "It is very likely that the resulting changes are not what you wanted."
|
|
fi
|
|
else
|
|
echo "clang-format-11 is not available, but C or C++ files need linting! Either skip this script, or install clang-format-11."
|
|
echo "(If you install a package 'clang-format', please make sure it's version 11.)"
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$#" -gt "0" ] && [ "x--overwrite-inplace" = "x$1" ] ; then
|
|
true # The only way to run this script.
|
|
else
|
|
# Note that this branch also covers --help, -h, -help, -?, etc.
|
|
echo "USAGE: $0 --overwrite-inplace"
|
|
echo "The argument is necessary to make you aware that this *will* overwrite your local files."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Using ${CLANG_FORMAT}"
|
|
|
|
"${CLANG_FORMAT}" -style=file -i "${files[@]}"
|
|
echo "Maybe some files have changed. Sorry, but clang-format doesn't indicate what happened."
|
|
else
|
|
echo "No .cpp or .h files to check."
|
|
fi
|