From 47e33136ba8c4eb332f4f676afe25745934016c2 Mon Sep 17 00:00:00 2001 From: Stefano Ortolani Date: Mon, 16 Dec 2024 14:34:43 +0000 Subject: [PATCH] Fix test CI/CD --- .github/workflows/python-ci-tests.yml | 31 +++++++++++++++++++-- .pre-commit-config.yaml | 4 +-- setup.py | 9 ++++++ stix2/test/v21/test_datastore_filesystem.py | 2 ++ tox.ini | 8 +++--- 5 files changed, 46 insertions(+), 8 deletions(-) diff --git a/.github/workflows/python-ci-tests.yml b/.github/workflows/python-ci-tests.yml index 47f860e1..b0c45ba8 100644 --- a/.github/workflows/python-ci-tests.yml +++ b/.github/workflows/python-ci-tests.yml @@ -4,12 +4,12 @@ name: cti-python-stix2 test harness on: [push, pull_request] jobs: - build: + test: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.8, 3.9, '3.10', '3.11', '3.12'] + python-version: ['3.9', '3.10', '3.11', '3.12'] name: Python ${{ matrix.python-version }} Build steps: @@ -32,3 +32,30 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: false # optional (default = false) verbose: true # optional (default = false) + - name: Upload package artifcat + if: ${{ matrix.python-version == '3.12' }} + uses: actions/upload-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + publish-to-test-pypi: + runs-on: ubuntu-latest + needs: test + + permissions: + id-token: write + + steps: + - name: Download dist files + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + - name: Publish to Test PyPI + if: ${{ github.event_name == 'push' }} + uses: pypa/gh-action-pypi-publish@release/v1 + with: + skip-existing: true + repository-url: https://test.pypi.org/legacy/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c39aaf6d..a4166a6e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v3.4.0 + rev: v4.5.0 hooks: - id: trailing-whitespace - id: check-merge-conflict @@ -9,7 +9,7 @@ repos: hooks: - id: add-trailing-comma - repo: https://github.com/PyCQA/flake8 - rev: 3.8.4 + rev: 7.0.0 hooks: - id: flake8 name: Check project styling diff --git a/setup.py b/setup.py index d0d8fe77..808623de 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,8 @@ #!/usr/bin/env python from codecs import open +from importlib import metadata import os.path +import sys from setuptools import find_packages, setup @@ -22,6 +24,13 @@ def get_long_description(): return f.read() +try: + metadata.version("stix2") + sys.exit("Error: 'stix2' is installed. Uninstall it before proceeding.") +except metadata.PackageNotFoundError: + pass + + setup( name='misp-lib-stix2', version=get_version(), diff --git a/stix2/test/v21/test_datastore_filesystem.py b/stix2/test/v21/test_datastore_filesystem.py index 39b45578..037146e6 100644 --- a/stix2/test/v21/test_datastore_filesystem.py +++ b/stix2/test/v21/test_datastore_filesystem.py @@ -151,6 +151,7 @@ def test_filesystem_source_bad_stix_file(fs_source, bad_stix_files): except STIXError as e: assert "Can't parse object with no 'type' property" in str(e) + def test_filesystem_sink_add_pretty_true(fs_sink, fs_source): """Test adding a STIX object with pretty=True.""" camp1 = stix2.v21.Campaign( @@ -169,6 +170,7 @@ def test_filesystem_sink_add_pretty_true(fs_sink, fs_source): os.remove(filepath) + def test_filesystem_sink_add_pretty_false(fs_sink, fs_source): """Test adding a STIX object with pretty=False.""" camp1 = stix2.v21.Campaign( diff --git a/tox.ini b/tox.ini index bc7bd5b6..e7450057 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38,py39,py310,py311,py312,packaging,pre-commit-check +envlist = py39,py310,py311,py312,packaging,pre-commit-check [testenv] deps = @@ -18,6 +18,7 @@ passenv = GITHUB_* [testenv:packaging] deps = + setuptools twine commands = python setup.py sdist bdist_wheel --universal @@ -31,8 +32,7 @@ commands = [gh-actions] python = - 3.8: py38 3.9: py39 3.10: py310 - 3.11: py311, packaging, pre-commit-check - 3.12: py312 + 3.11: py311 + 3.12: py312, packaging, pre-commit-check