From c9053d752509461d3f78cfeaf73d3c493bf3aec6 Mon Sep 17 00:00:00 2001 From: jarbasai Date: Mon, 14 Feb 2022 21:26:36 +0000 Subject: [PATCH] license tests workflow --- .github/workflows/build_tests.yml | 33 +++++++++++++++++ .github/workflows/license_tests.yml | 35 ++++++++++++++++++ test/license_tests.py | 55 +++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 .github/workflows/build_tests.yml create mode 100644 .github/workflows/license_tests.yml create mode 100644 test/license_tests.py diff --git a/.github/workflows/build_tests.yml b/.github/workflows/build_tests.yml new file mode 100644 index 0000000..63529b4 --- /dev/null +++ b/.github/workflows/build_tests.yml @@ -0,0 +1,33 @@ +name: Run Build Tests +on: + push: + workflow_dispatch: + +jobs: + build_tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.head_ref }} + - name: Setup Python + uses: actions/setup-python@v1 + with: + python-version: 3.8 + - name: Install Build Tools + run: | + python -m pip install build wheel + - name: Install System Dependencies + run: | + sudo apt-get update + sudo apt install python3-dev swig libssl-dev libfann-dev portaudio19-dev libpulse-dev + - name: Build Distribution Packages + run: | + python setup.py bdist_wheel + - name: Install tflite_runtime workaround tflit bug + run: | + pip3 install numpy + pip3 install --extra-index-url https://google-coral.github.io/py-repo/ tflite_runtime + - name: Install core repo + run: | + pip install .[audio-backend,mark1,stt,tts,skills_minimal,skills,gui,bus,all] diff --git a/.github/workflows/license_tests.yml b/.github/workflows/license_tests.yml new file mode 100644 index 0000000..561e773 --- /dev/null +++ b/.github/workflows/license_tests.yml @@ -0,0 +1,35 @@ +name: Run License Tests +on: + push: + workflow_dispatch: + +jobs: + license_tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.head_ref }} + - name: Setup Python + uses: actions/setup-python@v1 + with: + python-version: 3.8 + - name: Install Build Tools + run: | + python -m pip install build wheel + - name: Install System Dependencies + run: | + sudo apt-get update + sudo apt install python3-dev swig libssl-dev + - name: Install core repo + run: | + pip install . + - name: Install licheck + run: | + pip install git+https://github.com/NeonJarbas/lichecker + - name: Install test dependencies + run: | + pip install pytest pytest-timeout pytest-cov + - name: Test Licenses + run: | + pytest test/license_tests.py \ No newline at end of file diff --git a/test/license_tests.py b/test/license_tests.py new file mode 100644 index 0000000..1fe4569 --- /dev/null +++ b/test/license_tests.py @@ -0,0 +1,55 @@ +import unittest +from pprint import pprint + +from lichecker import LicenseChecker + +# these packages dont define license in setup.py +# manually verified and injected +license_overrides = { + "kthread": "MIT", + 'yt-dlp': "Unlicense", + 'pyxdg': 'GPL-2.0', + 'ptyprocess': 'ISC license', + 'psutil': 'BSD3' +} +# explicitly allow these packages that would fail otherwise +whitelist = [ + 'idna' # BSD-like +] + +# validation flags +allow_nonfree = False +allow_viral = False +allow_unknown = False +allow_unlicense = True +allow_ambiguous = False + +pkg_name = "PySychonaut" + + +class TestLicensing(unittest.TestCase): + @classmethod + def setUpClass(self): + licheck = LicenseChecker(pkg_name, + license_overrides=license_overrides, + whitelisted_packages=whitelist, + allow_ambiguous=allow_ambiguous, + allow_unlicense=allow_unlicense, + allow_unknown=allow_unknown, + allow_viral=allow_viral, + allow_nonfree=allow_nonfree) + print("Package", pkg_name) + print("Version", licheck.version) + print("License", licheck.license) + print("Transient Requirements (dependencies of dependencies)") + pprint(licheck.transient_dependencies) + self.licheck = licheck + + def test_license_compliance(self): + print("Package Versions") + pprint(self.licheck.versions) + + print("Dependency Licenses") + pprint(self.licheck.licenses) + + self.licheck.validate()