77 lines
2.7 KiB
Bash
Executable File
77 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright 2014 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# Verify there is no CPRINTS("....\n", ...) statements added to the code.
|
|
upstream_branch="$(git rev-parse --abbrev-ref --symbolic-full-name @{u} \
|
|
2>/dev/null)"
|
|
if [[ -z ${upstream_branch} ]]; then
|
|
echo "Current branch does not have an upstream branch" >&2
|
|
exit 1
|
|
fi
|
|
# This will print the offending CPRINTS invocations, if any, and the names of
|
|
# the files they are in.
|
|
if git diff "${upstream_branch}" HEAD | grep -e '^+\(.*CPRINTS(.*\\n"\|++\)' |
|
|
grep CPRINTS -B1 >&2 ; then
|
|
echo "error: CPRINTS strings should not include newline characters" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Verify that all targets were built and all tests passed after the latest
|
|
# source code modification.
|
|
if [[ ! -e .tests-passed ]]; then
|
|
echo 'Unit tests have not passed. Please run "make buildall -j".'
|
|
exit 1
|
|
fi
|
|
|
|
# Directories that need to be tested by separate unit tests.
|
|
unittest_dirs="util/ec3po/ extra/stack_analyzer/"
|
|
|
|
changed=$(find ${PRESUBMIT_FILES} -newer .tests-passed)
|
|
# Filter out unittest_dirs files from changed files. They're handled separately.
|
|
for dir in $unittest_dirs; do
|
|
changed=$(echo "${changed}" | grep -v "${dir}")
|
|
done
|
|
# Filter out flash_ec since it's not part of any unit tests.
|
|
changed=$(echo "${changed}" | grep -v util/flash_ec)
|
|
# Filter out uart_stress_tester
|
|
changed=$(echo "${changed}" | grep -v util/uart_stress_tester.py)
|
|
# Filter out this file itself.
|
|
changed=$(echo "${changed}" | grep -v util/presubmit_check.sh)
|
|
# Filter out the OWNERS file.
|
|
changed=$(echo "${changed}" | grep -v OWNERS)
|
|
# Filter out the README.md file.
|
|
changed=$(echo "${changed}" | grep -v README.md)
|
|
# Filter out the navbar.md file.
|
|
changed=$(echo "${changed}" | grep -v navbar.md)
|
|
# Filter out markdown docs/ directory
|
|
changed=$(echo "${changed}" | grep -v docs/)
|
|
if [[ -n "${changed}" ]]; then
|
|
echo "Files have changed since last time unit tests passed:"
|
|
echo "${changed}" | sed -e 's/^/ /'
|
|
echo 'Please run "make buildall -j".'
|
|
exit 1
|
|
fi
|
|
|
|
for dir in $unittest_dirs; do
|
|
dir_files=$(echo "${PRESUBMIT_FILES}" | grep "${dir}")
|
|
if [[ -z "${dir_files}" ]]; then
|
|
continue
|
|
fi
|
|
|
|
if [[ ! -e "${dir}/.tests-passed" ]]; then
|
|
echo "Unit tests have not passed. Please run \"${dir}run_tests.sh\"."
|
|
exit 1
|
|
fi
|
|
|
|
changed_files=$(find ${dir_files} -newer "${dir}/.tests-passed")
|
|
if [[ -n "${changed_files}" ]] && [[ -n "${dir_files}" ]]; then
|
|
echo "Files have changed since last time unit tests passed:"
|
|
echo "${changed_files}" | sed -e 's/^/ /'
|
|
echo "Please run \"${dir}run_tests.sh\"."
|
|
exit 1
|
|
fi
|
|
done
|