diff --git a/run_tests.sh b/run_tests.sh index 7d5a324480b..db32c57eb1e 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -185,6 +185,7 @@ function run_pep8 { warn_on_flake8_without_venv bash -c "${wrapper} flake8" ${wrapper} bash tools/config/check_uptodate.sh --checkonly + ${wrapper} tools/check_exec.py cinder || exit 1 } diff --git a/tools/check_exec.py b/tools/check_exec.py new file mode 100755 index 00000000000..d423f3d9ae6 --- /dev/null +++ b/tools/check_exec.py @@ -0,0 +1,42 @@ +#!/usr/bin/python +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# Print a list and return with error if any executable files are found. +# Compatible with both python 2 and 3. + +import os.path +import stat +import sys + +if len(sys.argv) < 2: + print("Usage: %s " % sys.argv[0]) + sys.exit(1) + +directory = sys.argv[1] + +executable = [] + +for root, mydir, myfile in os.walk(directory): + for f in myfile: + path = os.path.join(root, f) + mode = os.lstat(path).st_mode + if stat.S_IXUSR & mode: + executable.append(path) + +if executable: + print("Executable files found:") + for f in executable: + print(f) + + sys.exit(1) diff --git a/tox.ini b/tox.ini index b026e036b0f..4eea5df4c4f 100644 --- a/tox.ini +++ b/tox.ini @@ -112,6 +112,7 @@ commands = # Check that .po and .pot files are valid: bash -c "find cinder -type f -regex '.*\.pot?' -print0|xargs -0 -n 1 msgfmt --check-format -o /dev/null" {toxinidir}/tools/config/check_uptodate.sh --checkonly + {toxinidir}/tools/check_exec.py {toxinidir}/cinder [testenv:pylint] deps = -r{toxinidir}/requirements.txt