Files
mgmt/test/test-yamlfmt.sh
Joe Groocock 5af1dcb8b1 test: Add in_ci utility test function
in_ci checks for environment variables set by a selection of CI systems
and returns true if the test appears to be running in CI. Additionally
it can test for specific CI systems, and returns true if the CI system
is listed.

Deduplicate existing environment checks for Travis and Jenkins.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-02-12 16:44:11 +00:00

66 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# check for any yaml files that aren't properly formatted
exit 0 # i give up, we're skipping this entirely, help wanted to fix this
echo running "$0"
set -o errexit
set -o nounset
set -o pipefail
#ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )" # dir!
ROOT=$(dirname "${BASH_SOURCE}")/..
cd "${ROOT}"
. test/util.sh
#if in_ci travis jenkins; then
# echo "Travis and Jenkins give wonky results here, skipping test!"
# exit 0
#fi
RUBY=`command -v ruby 2>/dev/null`
if [ -z $RUBY ]; then
fail_test "The 'ruby' utility can't be found."
fi
$RUBY -e "require 'yaml'" 2>/dev/null || fail_test "The ruby 'yaml' library can't be found."
if $RUBY -e "puts RUBY_VERSION" | grep -q ^1 ; then
echo "SKIPPING - cannot test YAML formatting with Ruby 1.x"
exit 0
fi
# eg: 2.3.3p222 -> 2.3.3
version="`$RUBY --version | cut -f2 -d' ' | cut -f1 -d'p'`"
major="`echo $version | cut -f1 -d'.'`"
minor="`echo $version | cut -f2 -d'.'`"
point="`echo $version | cut -f3 -d'.'`"
echo "Found Ruby version: `$RUBY --version`"
if [ "$major" -lt 2 ]; then
echo "Skipping yamlfmt - cannot test YAML formatting with Ruby < 2.x"
exit 0
fi
if [ "$major" -eq 2 ] && [ "$minor" -lt 1 ] ; then
echo "Skipping yamlfmt - cannot test YAML formatting with Ruby < 2.1"
exit 0
fi
find_files() {
git ls-files | grep '\.yaml$'
}
bad_files=$(
for i in $(find_files); do
if ! diff -q <( ruby -e "require 'yaml'; puts YAML.load_file('$i').to_yaml.each_line.map(&:rstrip).join(10.chr)+10.chr" 2>/dev/null ) <( cat "$i" ) &>/dev/null; then
echo "$i"
fi
done
)
if [[ -n "${bad_files}" ]]; then
fail_test "The following yaml files are not properly formatted: ${bad_files}"
fi
echo 'PASS'