mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
CircleCI: Adds pylint test for all python files in test/ directory.
This commit is contained in:
committed by
chriseth
parent
7a194ffdab
commit
05b4ac0d29
Executable
+56
@@ -0,0 +1,56 @@
|
||||
#! /usr/bin/env python3
|
||||
|
||||
"""
|
||||
Performs pylint on all python files in the project repo's test directory recursively.
|
||||
|
||||
This script is meant to be run from the CI but can also be easily in local dev environment,
|
||||
where you can optionally pass `-d` as command line argument to let this script abort on first error.
|
||||
"""
|
||||
|
||||
from os import path, walk, system
|
||||
from sys import argv, exit as brexit
|
||||
|
||||
PROJECT_ROOT = path.dirname(path.realpath(__file__))
|
||||
PYLINT_RCFILE = "{}/pylintrc".format(PROJECT_ROOT)
|
||||
|
||||
SGR_INFO = "\033[1;32m"
|
||||
SGR_CLEAR = "\033[0m"
|
||||
|
||||
def pylint_all_filenames(dev_mode, rootdirs):
|
||||
""" Performs pylint on all python files within given root directory (recursively). """
|
||||
filenames = []
|
||||
for rootdir in rootdirs:
|
||||
for rootpath, _, filenames_w in walk(rootdir):
|
||||
for filename in filenames_w:
|
||||
if filename.endswith('.py'):
|
||||
filenames.append(path.join(rootpath, filename))
|
||||
|
||||
checked_count = 0
|
||||
failed = []
|
||||
for filename in filenames:
|
||||
checked_count += 1
|
||||
cmdline = "pylint --rcfile=\"{}\" \"{}\"".format(PYLINT_RCFILE, filename)
|
||||
print("{}[{}/{}] Running pylint on file: {}{}".format(SGR_INFO, checked_count, len(filenames),
|
||||
filename, SGR_CLEAR))
|
||||
exit_code = system(cmdline)
|
||||
if exit_code != 0:
|
||||
if dev_mode:
|
||||
return 1, checked_count
|
||||
else:
|
||||
failed.append(filename)
|
||||
|
||||
return len(failed), len(filenames)
|
||||
|
||||
def main():
|
||||
"""" Collects all python script root dirs and runs pylint on them. """
|
||||
dev_mode = len(argv) == 2 and argv[1] == "-d"
|
||||
failed_count, total_count = pylint_all_filenames(dev_mode, [
|
||||
path.abspath(path.dirname(__file__) + "/../scripts"),
|
||||
path.abspath(path.dirname(__file__) + "/../test")])
|
||||
if failed_count != 0:
|
||||
brexit("pylint failed on {}/{} files.".format(failed_count, total_count))
|
||||
else:
|
||||
print("Successfully tested {} files.".format(total_count))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user