From b985bae7c432a2c8189585a17f54e538b4198297 Mon Sep 17 00:00:00 2001 From: Eric Harney Date: Fri, 28 Aug 2015 14:32:30 -0400 Subject: [PATCH] Detect addition of executable files When running pep8 checks, fail if executable files have accidentally been added. Change-Id: Ia0efa629acf794f8e0e9b78de24b5385776c1e66 --- run_tests.sh | 1 + tools/check_exec.py | 42 ++++++++++++++++++++++++++++++++++++++++++ tox.ini | 1 + 3 files changed, 44 insertions(+) create mode 100755 tools/check_exec.py 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