You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.3 KiB

#!/bin/sh
set -o noglob
set -o errexit
5 years ago
set -o nounset
IFS='
'
mkdir -p src/student
5 years ago
cd src/student
if test "$REPOSITORY"; then
password=$(cat)
git clone --quiet --depth=1 --shallow-submodules https://root:"${password}"@"$REPOSITORY" .
else
first_file=$(echo "$EXPECTED_FILES" | cut -d' ' -f1)
mkdir -p "$(dirname "$first_file")"
cat > "$first_file"
fi
set +o nounset # TODO: Remove me after this variable is always set in all/tester/main.go
if test "$SKIP_FORMATTING"; then
s=$(goimports -d .)
if test "$s"; then
echo 'Your Go files are not correctly formatted :'
echo
echo '$ goimports -d .'
echo "$s"
exit 1
fi
fi
set -o nounset # TODO: Remove me after this variable is always set in all/tester/main.go
if find . -type f -name '*.go' -exec grep -qE 'print(ln)?\(' {} +; then
echo "Your Go files cannot use print & println builtins"
exit 1
fi
5 years ago
# Check restrictions
4 years ago
if test "$ALLOWED_FUNCTIONS" && test "$EXPECTED_FILES"; then
IFS=' '
first_file=$(echo "$EXPECTED_FILES" | cut -d' ' -f1)
# shellcheck disable=SC2086
rc "$first_file" $ALLOWED_FUNCTIONS
5 years ago
fi
4 years ago
IFS='
'
5 years ago
# Compile and run test
5 years ago
cd
5 years ago
GOPATH=$HOME:$GOPATH
if command -v "${EXERCISE}_test" >/dev/null 2>&1; then
5 years ago
# The exercise is a program
go build "./src/student/$EXERCISE"
"${EXERCISE}_test"
5 years ago
else
# The exercise is a function
go build "func/${EXERCISE}_test"
"./${EXERCISE}_test"
5 years ago
fi