Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions official/utils/testing/scripts/presubmit.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#!/bin/bash
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to provide a command to run this from anywhere in the repo. For instance:
alias lint_and_test=$(git rev-parse --show-toplevel)/official/utils/testing/scripts/presubmit.sh
Either in the README or in this file.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have usage example on the top of the script.


# Presubmit script that run tests and lint under local environment.
# Make sure that tensorflow and pylint is installed.
# usage: models >: ./official/utils/testing/scripts/presubmit.sh
# usage: models >: ./official/utils/testing/scripts/presubmit.sh lint py2_test py3_test
set +x

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR/../../../.."
MODEL_ROOT="$(pwd)"

export PYTHONPATH="$PYTHONPATH:${MODEL_ROOT}"

cd official

lint() {
local exit_code=0

RC_FILE="utils/testing/pylint.rcfile"

echo "===========Running lint test============"
for file in `find . -name '*.py' ! -name '*test.py' -print`
do
echo "Linting ${file}"
pylint --rcfile="${RC_FILE}" "${file}" || exit_code=$?
done

# More lenient for test files.
for file in `find . -name '*test.py' -print`
do
echo "Linting ${file}"
pylint --rcfile="${RC_FILE}" --disable=missing-docstring,protected-access "${file}" || exit_code=$?
done

return "${exit_code}"
}

py_test() {
local PY_BINARY="$1"
local exit_code=0

echo "===========Running Python test============"

for test_file in `find . -name '*test.py' -print`
do
echo "Testing ${test_file}"
${PY_BINARY} "${test_file}" || exit_code=$?
done

return "${exit_code}"
}

py2_test() {
local PY_BINARY=$(which python2)
return $(py_test "${PY_BINARY}")
}

py3_test() {
local PY_BINARY=$(which python3)
return $(py_test "${PY_BINARY}")
}

test_result=0

if [ "$#" -eq 0 ]; then
TESTS="lint py2_test py3_test"
else
TESTS="$@"
fi

for t in "${TESTS}"; do
${t} || test_result=$?
done

exit "${test_result}"