diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..831ccc27 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,9 @@ +language: python +python: + - '2.7' +install: pip install -r ci/requirements.txt +script: + - PYTHONPATH=test-packages pylint --rcfile=ci/pylintrc qubes + - ./run-tests --no-syslog + +# vim: ts=2 sts=2 sw=2 et diff --git a/ci/pylintrc b/ci/pylintrc new file mode 100644 index 00000000..a9c607f8 --- /dev/null +++ b/ci/pylintrc @@ -0,0 +1,195 @@ +[MASTER] +persistent=no +ignore=tests,backup.py + +[MESSAGES CONTROL] +# abstract-class-little-used: see http://www.logilab.org/ticket/111138 +disable= + abstract-class-little-used, + bad-continuation, + cyclic-import, + duplicate-code, + file-ignored, + fixme, + locally-disabled, + locally-enabled, + logging-format-interpolation, + missing-docstring, + star-args + +[REPORTS] + +# Set the output format. Available formats are text, parseable, colorized, msvs +# (visual studio) and html +output-format=colorized + +#files-output=no +reports=yes + +[TYPECHECK] +ignored-classes= + VMProperty, + libvirt,libvirtError, + dbus,SystemBus + +ignore-mixin-members=yes +generated-members= + iter_entry_points, + Element,ElementTree,QName,parse,tostring + +[BASIC] + +# List of builtins function names that should not be used, separated by a comma +bad-functions=filter,apply,input + +# Regular expression which should only match correct module names +module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ + +# Regular expression which should only match correct module level names +const-rgx=(([A-Za-z_][A-Za-z0-9_]*)|(__.*__))$ + +# Regular expression which should only match correct class names +class-rgx=([A-Z_][a-zA-Z0-9]+|TC_\d\d_[a-zA-Z0-9_]+)$ + +# Regular expression which should only match correct function names +function-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct method names +method-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct instance attribute names +attr-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct argument names +argument-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct variable names +variable-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct list comprehension / +# generator expression variable names +inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ + +# Good variable names which should always be accepted, separated by a comma +good-names=e,i,j,k,m,p,ex,Run,_,log,vm,xc,xs,ip,fd,fh,rw,st,tb + +# Bad variable names which should always be refused, separated by a comma +bad-names=foo,bar,baz,toto,tutu,tata + +# Regular expression which should only match functions or classes name which do +# not require a docstring +no-docstring-rgx=__.*__ + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME,FIX,XXX,TODO + + +[FORMAT] + +# Maximum number of characters on a single line. +max-line-length=80 + +# Maximum number of lines in a module +max-module-lines=3000 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + + +[VARIABLES] + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# A regular expression matching the beginning of the name of dummy variables +# (i.e. not used). +dummy-variables-rgx=_|dummy + + +[SIMILARITIES] + +# Minimum lines number of a similarity. +min-similarity-lines=4 + +# Ignore comments when computing similarities. +ignore-comments=yes + +# Ignore docstrings when computing similarities. +ignore-docstrings=yes + + +[CLASSES] + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__,__new__,setUp + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + + +[IMPORTS] + +# Deprecated modules which should not be used, separated by a comma +deprecated-modules=regsub,TERMIOS,Bastion,rexec + +# Create a graph of every (i.e. internal and external) dependencies in the +# given file (report RP0402 must not be disabled) +import-graph= + +# Create a graph of external dependencies in the given file (report RP0402 must +# not be disabled) +ext-import-graph= + +# Create a graph of internal dependencies in the given file (report RP0402 must +# not be disabled) +int-import-graph= + + +[DESIGN] + +# Maximum number of arguments for function / method +max-args=35 + +# Argument names that match this expression will be ignored. Default to name +# with leading underscore +ignored-argument-names=_.* + +# Maximum number of locals for function / method body +# Let's have max-args + 5 +max-locals=40 + +# Maximum number of return / yield for function / method body +max-returns=6 + +# Maximum number of branch for function / method body +# 4x the default value +max-branches=48 + +# Maximum number of statements in function / method body +# Double default +max-statements=100 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of attributes for a class (see R0902). +max-attributes=15 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=100 + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when being caught. Defaults to +# "Exception" +overgeneral-exceptions=Exception,EnvironmentError + +# vim: ft=conf diff --git a/ci/requirements.txt b/ci/requirements.txt new file mode 100644 index 00000000..a702822e --- /dev/null +++ b/ci/requirements.txt @@ -0,0 +1,7 @@ +# WARNING: those requirements are used only for travis-ci.org +# they SHOULD NOT be used under normal conditions; use system package manager +docutils +jinja2 +lxml +pylint +sphinx diff --git a/run-tests b/run-tests index e6fc8a03..85ed63ee 100755 --- a/run-tests +++ b/run-tests @@ -7,4 +7,4 @@ PYTHONPATH="${TESTPYTHONPATH}:${PYTHONPATH}" export PYTHONPATH "${PYTHON}" setup.py egg_info --egg-base "${TESTPYTHONPATH}" -"${PYTHON}" -m qubes.tests.run +"${PYTHON}" -m qubes.tests.run "$@"