diff --git a/ci/appveyor/tests.cmd b/ci/appveyor/tests.cmd index 3983b2607ddcc050e52b84a23fc811daa90b028f..a2029cc5d5442022e4959cc771f92e0845de1efc 100644 --- a/ci/appveyor/tests.cmd +++ b/ci/appveyor/tests.cmd @@ -11,6 +11,6 @@ pyrcc5 -version lrelease -version -python -m unittest discover --start-directory src/sakia/tests -t src +python setup.py test if %errorlevel% neq 0 exit /b 1 \ No newline at end of file diff --git a/ci/travis/build.sh b/ci/travis/build.sh index 3efe79543b56704a3102c126aaf32d62de40b5d6..b044d97633282d00e3f30724827ccfd4089922b7 100755 --- a/ci/travis/build.sh +++ b/ci/travis/build.sh @@ -23,6 +23,5 @@ then elif [ $TRAVIS_OS_NAME == "linux" ] then python setup.py build - cp $HOME/.pyenv/versions/$PYENV_PYTHON_VERSION/lib/libpython3.*m.so.1.0 build/exe.linux-x86_64-3.*/ fi diff --git a/ci/travis/test.sh b/ci/travis/test.sh index b5c4fd2a41217e3e26b307d496cbb88bc53400ba..f8de170e798250b4fc0bbb8dbc2c6103b9b4b41a 100755 --- a/ci/travis/test.sh +++ b/ci/travis/test.sh @@ -14,5 +14,5 @@ then sleep 3 fi -coverage run --source=sakia.core,sakia.gui,sakia.models python -m unittest discover --start-directory src/sakia/tests -t src +coverage run --source=sakia.core,sakia.gui,sakia.models python setup.py test diff --git a/setup.py b/setup.py index 825b1954ca1de85132371b9fd1419f516cc2ab3f..7ae85bc41d9735f9635b693e17c01387d49dd3e9 100644 --- a/setup.py +++ b/setup.py @@ -3,123 +3,124 @@ from cx_Freeze import setup, Executable from PyQt5 import QtCore from os import listdir from os.path import isfile, join +import unittest -############################################################################# -# preparation des options sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'src'))) -print(sys.path) -print("Environnement:") -print(os.environ) -includes = ["sip", "re", "json", "logging", - "hashlib", "os", "urllib", - "ucoinpy", "pylibscrypt", "aiohttp", "asyncio", - "quamash", "jsonschema"] -exclude = ['.git'] -packages = ["libnacl", "encodings"] - -includefiles = [] -zipincludes = [] - -if sys.platform == "win32": - app = QtCore.QCoreApplication(sys.argv) - libEGL_path = "" - libsodium_path = "" - print(QtCore.QCoreApplication.libraryPaths()) - for path in QtCore.QCoreApplication.libraryPaths(): - if os.path.isfile(os.path.join(os.path.dirname(path), "libEGL.dll")): - libEGL_path = os.path.join(os.path.dirname(path), "libEGL.dll") - - if 'CONDA_DEFAULT_ENV' in os.environ: - # Check if we are in Conda env - schemas = os.path.join(site.getsitepackages()[1], "jsonschema", "schemas") +if "test" in sys.argv: + runner = unittest.TextTestRunner().run(unittest.defaultTestLoader.discover(start_dir='sakia.tests', + pattern='test_*')) + sys.exit(not runner.wasSuccessful()) +else: + print(sys.path) + print("Environnement:") + print(os.environ) + includes = ["sip", "re", "json", "logging", + "hashlib", "os", "urllib", + "ucoinpy", "pylibscrypt", "aiohttp", "asyncio", + "quamash", "jsonschema"] + exclude = ['.git'] + packages = ["libnacl", "encodings"] + + includefiles = [] + zipincludes = [] + + if sys.platform == "win32": + app = QtCore.QCoreApplication(sys.argv) + libEGL_path = "" + libsodium_path = "" + print(QtCore.QCoreApplication.libraryPaths()) + for path in QtCore.QCoreApplication.libraryPaths(): + if os.path.isfile(os.path.join(os.path.dirname(path), "libEGL.dll")): + libEGL_path = os.path.join(os.path.dirname(path), "libEGL.dll") + + if 'CONDA_DEFAULT_ENV' in os.environ: + # Check if we are in Conda env + schemas = os.path.join(site.getsitepackages()[1], "jsonschema", "schemas") + + onlyfiles = [ f for f in listdir(schemas) if isfile(join(schemas,f)) ] + for f in onlyfiles: + zipincludes.append((os.path.join(schemas, f), os.path.join("jsonschema", "schemas", f))) + + path = QtCore.QCoreApplication.libraryPaths()[0] + libEGL_path = os.path.join(path, "Scripts", "libEGL.dll") + libsodium_path = os.path.join(path, "Scripts", "libsodium.dll") + + files = lambda mypath: [ f for f in os.listdir(mypath) if os.path.isfile(os.path.join(mypath,f)) ] + for f in files(os.path.join(path, "Scripts", "plugins", "platforms")): + includefiles.append((os.path.join(path, "Scripts", "plugins", "platforms", f), os.path.join("platforms", f) )) + + for f in files(os.path.join(path, "Scripts", "plugins", "imageformats")): + includefiles.append((os.path.join(path, "Scripts", "plugins", "imageformats", f), os.path.join("imageformats", f) )) + + for f in files(os.path.join(path, "Scripts", "plugins", "iconengines")): + includefiles.append((os.path.join(path, "Scripts", "plugins", "iconengines", f), os.path.join("iconengines", f) )) + includefiles.append(libEGL_path) + includefiles.append(libsodium_path) + else: + schemas = os.path.join(site.getsitepackages()[0], "jsonschema", "schemas") onlyfiles = [ f for f in listdir(schemas) if isfile(join(schemas,f)) ] for f in onlyfiles: zipincludes.append((os.path.join(schemas, f), os.path.join("jsonschema", "schemas", f))) - path = QtCore.QCoreApplication.libraryPaths()[0] - libEGL_path = os.path.join(path, "Scripts", "libEGL.dll") - libsodium_path = os.path.join(path, "Scripts", "libsodium.dll") - - files = lambda mypath: [ f for f in os.listdir(mypath) if os.path.isfile(os.path.join(mypath,f)) ] - for f in files(os.path.join(path, "Scripts", "plugins", "platforms")): - includefiles.append((os.path.join(path, "Scripts", "plugins", "platforms", f), os.path.join("platforms", f) )) - - for f in files(os.path.join(path, "Scripts", "plugins", "imageformats")): - includefiles.append((os.path.join(path, "Scripts", "plugins", "imageformats", f), os.path.join("imageformats", f) )) - - for f in files(os.path.join(path, "Scripts", "plugins", "iconengines")): - includefiles.append((os.path.join(path, "Scripts", "plugins", "iconengines", f), os.path.join("iconengines", f) )) - includefiles.append(libEGL_path) - includefiles.append(libsodium_path) -else: - schemas = os.path.join(site.getsitepackages()[0], "jsonschema", "schemas") - onlyfiles = [ f for f in listdir(schemas) if isfile(join(schemas,f)) ] - for f in onlyfiles: - zipincludes.append((os.path.join(schemas, f), os.path.join("jsonschema", "schemas", f))) - -if sys.platform == "darwin": - info = subprocess.check_output(["brew", "info", "libsodium"]) - info = info.decode().splitlines(keepends=False) - if len(info) > 1: - library_path = info[3].split(" ")[0] - libsodium_path = os.path.join(library_path, "lib", - "libsodium.dylib") - includefiles.append((libsodium_path, "lib/libsodium.dylib")) - print(libsodium_path) - else: - print("Erreur : libsodium not found. Please install it with brew install libsodium.") - - qtconf_path = os.path.join(os.path.dirname(__file__), "res/osx/qt.conf") - includefiles.append((qtconf_path, "qt.conf")) - -print("Includes : ") -print(includes) -print("Excludes : ") -print(exclude) -print("Include files : ") -print(includefiles) -print("Zip files : ") -print(zipincludes) -print("Packages : ") -print(packages) -print("Sys.path : ") -print(sys.path) - -options = {"path": sys.path, - "includes": includes, - "include_files": includefiles, - "excludes": exclude, - "packages": packages, - "zip_includes": zipincludes - } - -############################################################################# -# preparation des cibles -base = None -file_type="" -icon="sakia.png" -if sys.platform == "win32": - base = "Win32GUI" - file_type=".exe" - icon="sakia.ico" - -target = Executable( - script = "src/sakia/main.py", - targetName="sakia"+file_type, - base = base, - icon = icon, - ) - -############################################################################# -# creation du setup -setup( - name = "sakia", - version = "0.11.2", - description = "UCoin client", - author = "Inso", - options = {"build_exe": options}, - executables = [target] - ) + if sys.platform == "darwin": + info = subprocess.check_output(["brew", "info", "libsodium"]) + info = info.decode().splitlines(keepends=False) + if len(info) > 1: + library_path = info[3].split(" ")[0] + libsodium_path = os.path.join(library_path, "lib", + "libsodium.dylib") + includefiles.append((libsodium_path, "lib/libsodium.dylib")) + print(libsodium_path) + else: + print("Erreur : libsodium not found. Please install it with brew install libsodium.") + + qtconf_path = os.path.join(os.path.dirname(__file__), "res/osx/qt.conf") + includefiles.append((qtconf_path, "qt.conf")) + + print("Includes : ") + print(includes) + print("Excludes : ") + print(exclude) + print("Include files : ") + print(includefiles) + print("Zip files : ") + print(zipincludes) + print("Packages : ") + print(packages) + print("Sys.path : ") + print(sys.path) + + options = {"path": sys.path, + "includes": includes, + "include_files": includefiles, + "excludes": exclude, + "packages": packages, + "zip_includes": zipincludes + } + + base = None + file_type="" + icon="sakia.png" + if sys.platform == "win32": + base = "Win32GUI" + file_type=".exe" + icon="sakia.ico" + + target = Executable( + script = "src/sakia/main.py", + targetName="sakia"+file_type, + base = base, + icon = icon, + ) + + setup( + name = "sakia", + version = "0.11.2", + description = "UCoin client", + author = "Inso", + options = {"build_exe": options}, + executables = [target] + )