diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 00000000..dd8fbf27 --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,21 @@ +on: + push: + branches: [master] + pull_request: +name: CI +jobs: + testing: + runs-on: ubuntu-latest + container: + image: ghcr.io/andyholmes/flatter/gnome:47 + options: --privileged + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + - name: Build + uses: andyholmes/flatter@main + with: + files: dev.tchx84.Portfolio.json + run-tests: true diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml deleted file mode 100644 index 2144c04d..00000000 --- a/.github/workflows/qa.yml +++ /dev/null @@ -1,12 +0,0 @@ -on: - push: - branches: [master] - pull_request: -name: CI -jobs: - testing: - runs-on: ubuntu-latest - name: testing - steps: - - uses: actions/checkout@master - - uses: tchx84/gtk-apps-testing-docker-action@python3 diff --git a/data/meson.build b/data/meson.build index 4c809433..75f35856 100644 --- a/data/meson.build +++ b/data/meson.build @@ -30,10 +30,10 @@ install_data('dev.tchx84.Portfolio-symbolic.svg', install_dir: join_paths(get_option('datadir'), 'icons/hicolor/symbolic/apps') ) -appstream_util = find_program('appstream-util', required: false) -if appstream_util.found() - test('Validate appstream file', appstream_util, - args: ['validate', '--nonet', appstream_file] +appstreamcli = find_program('appstreamcli', required: false) +if appstreamcli.found() + test('Validate appstream file', appstreamcli, + args: ['validate', '--no-net', '--explain', appstream_file] ) endif diff --git a/dev.tchx84.Portfolio.json b/dev.tchx84.Portfolio.json index 3dd9d49d..71834c2c 100644 --- a/dev.tchx84.Portfolio.json +++ b/dev.tchx84.Portfolio.json @@ -1,7 +1,7 @@ { "app-id" : "dev.tchx84.Portfolio", "runtime" : "org.gnome.Platform", - "runtime-version" : "45", + "runtime-version" : "47", "sdk" : "org.gnome.Sdk", "separate-locales": false, "command" : "dev.tchx84.Portfolio", @@ -28,6 +28,7 @@ "*.a" ], "modules" : [ + "tests/requirements.json", { "name" : "portfolio", "builddir" : true, diff --git a/tests/requirements.json b/tests/requirements.json new file mode 100644 index 00000000..fa844b6e --- /dev/null +++ b/tests/requirements.json @@ -0,0 +1,190 @@ +{ + "name": "requirements", + "buildsystem": "simple", + "build-commands": [], + "modules": [ + { + "name": "python3-pyflakes", + "buildsystem": "simple", + "build-commands": [ + "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"pyflakes\"" + ], + "sources": [ + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/d4/d7/f1b7db88d8e4417c5d47adad627a93547f44bdc9028372dbd2313f34a855/pyflakes-3.2.0-py2.py3-none-any.whl", + "sha256": "84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a" + } + ], + "cleanup": [ + "*" + ] + }, + { + "name": "python3-black", + "buildsystem": "simple", + "build-commands": [ + "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"black\"" + ], + "sources": [ + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/04/b0/46fb0d4e00372f4a86a6f8efa3cb193c9f64863615e39010b1477e010578/black-24.8.0.tar.gz", + "sha256": "2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", + "sha256": "ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", + "sha256": "4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", + "sha256": "73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/6b/be/0f2f4a5e8adc114a02b63d92bf8edbfa24db6fc602fca83c885af2479e0e/editables-0.5-py3-none-any.whl", + "sha256": "61e5ffa82629e0d8bfe09bc44a07db3c1ab8ed1ce78a6980732870f19b5e7d4c" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/0c/8b/90e80904fdc24ce33f6fc6f35ebd2232fe731a8528a22008458cf197bc4d/hatchling-1.25.0-py3-none-any.whl", + "sha256": "b47948e45d4d973034584dd4cb39c14b6a70227cf287ab7ec0ad7983408a882c" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", + "sha256": "5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", + "sha256": "a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", + "sha256": "44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/b6/7a/e0edec9c8905e851d52076bbc41890603e2ba97cf64966bc1498f2244fd2/trove_classifiers-2024.9.12-py3-none-any.whl", + "sha256": "f88a27a892891c87c5f8bbdf110710ae9e0a4725ea8e0fb45f1bcadf088a491f" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/82/0f/6cbd9976160bc334add63bc2e7a58b1433a31b34b7cda6c5de6dd983d9a7/hatch_vcs-0.4.0-py3-none-any.whl", + "sha256": "b8a2b6bee54cf6f9fc93762db73890017ae59c9081d1038a41f16235ceaf8b2c" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/a0/b9/1906bfeb30f2fc13bb39bf7ddb8749784c05faadbd18a21cf141ba37bff2/setuptools_scm-8.1.0-py3-none-any.whl", + "sha256": "897a3226a6fd4a6eb2f068745e49733261a21f70b1bb28fce0339feb978d9af3" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", + "sha256": "04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/5e/a0/9a7ec6559225e96aa2efb5ab7ef4bf17c42940122a21828c3dce5f62b595/hatch_fancy_pypi_readme-24.1.0-py3-none-any.whl", + "sha256": "26ec5c7cfd9f604eff0ae6c927d7b197b220706dca203f0aad1928abc81f3a46" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/27/b8/f21073fde99492b33ca357876430822e4800cdf522011f18041351dfa74b/setuptools-75.1.0.tar.gz", + "sha256": "d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/b7/a0/95e9e962c5fd9da11c1e28aa4c0d8210ab277b1ada951d2aee336b505813/wheel-0.44.0.tar.gz", + "sha256": "a29c3f2817e95ab89aa4660681ad547c0e9547f20e75b0562fe7723c9a2a9d49" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/38/45/618e84e49a6c51e5dd15565ec2fcd82ab273434f236b8f108f065ded517a/flit_core-3.9.0-py3-none-any.whl", + "sha256": "7aada352fb0c7f5538c4fafeddf314d3a6a92ee8e2b1de70482329e42de70301" + } + ], + "cleanup": [ + "*" + ] + }, + { + "name": "python3-pytest", + "buildsystem": "simple", + "build-commands": [ + "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"pytest\"" + ], + "sources": [ + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", + "sha256": "b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", + "sha256": "5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", + "sha256": "44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", + "sha256": "a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2" + } + ], + "cleanup": [ + "*" + ] + }, + { + "name": "python3-pytest-timeout", + "buildsystem": "simple", + "build-commands": [ + "pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"pytest-timeout\"" + ], + "sources": [ + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", + "sha256": "b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", + "sha256": "5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", + "sha256": "44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", + "sha256": "a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2" + }, + { + "type": "file", + "url": "https://files.pythonhosted.org/packages/03/27/14af9ef8321f5edc7527e47def2a21d8118c6f329a9342cc61387a0c0599/pytest_timeout-2.3.1-py3-none-any.whl", + "sha256": "68188cb703edfc6a18fad98dc25a3c61e9f24d644b0b70f33af545219fc7813e" + } + ], + "cleanup": [ + "*" + ] + } + ] +} diff --git a/tests/requirements.txt b/tests/requirements.txt deleted file mode 100644 index e13a1c4b..00000000 --- a/tests/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -black -pyflakes -pytest -pytest-timeout -PyGObject