hanami-controller/script/ci

88 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
prepare_build() {
if [ -d coverage ]; then
rm -rf coverage
fi
}
print_ruby_version() {
echo "Using $(ruby -v)"
echo
}
run_code_quality_checks() {
# bundle exec rubocop .
true
}
run_unit_tests() {
bundle exec rake spec:unit
}
run_isolation_tests() {
local pwd=$PWD
local root="$pwd/spec/isolation"
for test in $(find $root -name '*_spec.rb')
do
run_isolation_test $test
if [ $? -ne 0 ]; then
local exit_code=$?
echo "Failing test: $test"
exit $exit_code
fi
done
}
run_integration_tests() {
local pwd=$PWD
local root="$pwd/spec/integration"
for test in $(find $root -name '*_spec.rb')
do
run_test $test
if [ $? -ne 0 ]; then
local exit_code=$?
echo "Failing test: $test"
exit $exit_code
fi
done
}
run_isolation_test() {
local test=$1
local hash="$(shasum "$test" | cut -b 1-40)"
printf "\n\n\nRunning: $test\n"
CI=true SIMPLECOV_COMMAND_NAME=$hash ruby $test --options spec/isolation/.rspec
}
run_test() {
local test=$1
local hash="$(shasum "$test" | cut -b 1-40)"
printf "\n\n\nRunning: $test\n"
CI=true SIMPLECOV_COMMAND_NAME=$hash bundle exec rspec $test
}
upload_code_coverage() {
bundle exec rake codecov:upload
}
main() {
prepare_build &&
print_ruby_version &&
run_code_quality_checks &&
run_unit_tests &&
run_isolation_tests &&
run_integration_tests &&
upload_code_coverage
}
main