Benjamin Drung 468dbc7746 ubuntutools/test: Introduce get_source_files function
The flake8 and pylint unittest use the same logic to determine the source
files. Therefore put this logic in one function.
2018-10-06 17:16:12 +02:00

56 lines
2.1 KiB
Python

# Test suite for ubuntutools
#
# Copyright (C) 2010, Stefano Rivera <stefanor@ubuntu.com>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
import os
import sys
import setup
if sys.version_info < (2, 7):
import unittest2 as unittest
else:
import unittest
def discover():
# import __main__ triggers code re-execution
__main__ = sys.modules['__main__']
setupDir = os.path.abspath(os.path.dirname(__main__.__file__))
return unittest.defaultTestLoader.discover(setupDir)
def get_source_files():
"""Return a list of sources files/directories (to check with flake8/pylint)"""
modules = ["ubuntutools"]
py_files = ["setup.py"]
files = []
for code_file in setup.scripts + modules + py_files:
is_script = code_file in setup.scripts
if not os.path.exists(code_file): # pragma: no cover
# The alternative path is needed for Debian's pybuild
alternative = os.path.join(os.environ.get("OLDPWD", ""), code_file)
code_file = alternative if os.path.exists(alternative) else code_file
if is_script:
with open(code_file, "rb") as script_file:
shebang = script_file.readline().decode("utf-8")
if ((sys.version_info[0] == 3 and "python3" in shebang)
or ("python" in shebang and "python3" not in shebang)):
files.append(code_file)
else:
files.append(code_file)
return files