mirror of
https://github.com/cryptoadvance/specter-desktop.git
synced 2026-08-13 12:33:29 +02:00
Chore: refurbish release infrastructure (#2198)
* change release infra * syntax error * fix buildscript (hopefully) * fix pip generation too * fix build (hopefully) * fix bloated sdid (mainly MANIFEST.in) * adjust tests, remove importlib_meta * fix dependency issue in release jobs * fix tests and remove pytest.ini entirely * fix install_noded script * fix test * fix tests * stupid versioin parsing does not work! * try to fix version guessing * and again
This commit is contained in:
parent
d00b628838
commit
ef364ce1bc
26 changed files with 206 additions and 183 deletions
|
|
@ -9,7 +9,7 @@ prep_stuff_template: &PREP_STUFF_TEMPLATE
|
||||||
bitcoind_installation_cache:
|
bitcoind_installation_cache:
|
||||||
folder: ./tests/bitcoin
|
folder: ./tests/bitcoin
|
||||||
fingerprint_script:
|
fingerprint_script:
|
||||||
- cat pytest.ini | grep "addopts = " | cut -d'=' -f2 | sed 's/--/+/g' | tr '+' '\n' | grep bitcoin | cut -d' ' -f2
|
- cat pyproject.toml | grep "addopts = " | cut -d'=' -f2 | sed 's/--/+/g' | tr '+' '\n' | grep bitcoin | cut -d' ' -f2
|
||||||
- cat tests/bitcoin_gitrev_pinned 2> /dev/null || true
|
- cat tests/bitcoin_gitrev_pinned 2> /dev/null || true
|
||||||
- cat /etc/os-release | grep VERSION
|
- cat /etc/os-release | grep VERSION
|
||||||
- cat ./tests/install_noded.sh
|
- cat ./tests/install_noded.sh
|
||||||
|
|
@ -18,7 +18,7 @@ prep_stuff_template: &PREP_STUFF_TEMPLATE
|
||||||
elementsd_installation_cache:
|
elementsd_installation_cache:
|
||||||
folder: ./tests/elements
|
folder: ./tests/elements
|
||||||
fingerprint_script:
|
fingerprint_script:
|
||||||
- cat pytest.ini | grep "addopts = " | cut -d'=' -f2 | sed 's/--/+/g' | tr '+' '\n' | grep elements | cut -d' ' -f2
|
- cat pyproject.toml | grep "addopts = " | cut -d'=' -f2 | sed 's/--/+/g' | tr '+' '\n' | grep elements | cut -d' ' -f2
|
||||||
- cat tests/elements_gitrev_pinned 2> /dev/null || true
|
- cat tests/elements_gitrev_pinned 2> /dev/null || true
|
||||||
- cat /etc/os-release | grep VERSION
|
- cat /etc/os-release | grep VERSION
|
||||||
- cat ./tests/install_noded.sh
|
- cat ./tests/install_noded.sh
|
||||||
|
|
@ -44,11 +44,11 @@ prep_stuff_template: &PREP_STUFF_TEMPLATE
|
||||||
|
|
||||||
pip_script:
|
pip_script:
|
||||||
#folder: /tmp/cirrus-ci-build/.env
|
#folder: /tmp/cirrus-ci-build/.env
|
||||||
#fingerprint_script: echo muh && cat requirements.txt && cat test_requirements.txt
|
#fingerprint_script: echo muh && cat requirements.txt
|
||||||
#populate_script:
|
#populate_script:
|
||||||
- virtualenv --python=python .env
|
- virtualenv --python=python .env
|
||||||
- source ./.env/bin/activate
|
- source ./.env/bin/activate
|
||||||
- pip3 install -r requirements.txt --require-hashes && pip3 install -r test_requirements.txt
|
- pip3 install -r requirements.txt --require-hashes && pip3 install -e ".[test]"
|
||||||
install_script:
|
install_script:
|
||||||
- source ./.env/bin/activate
|
- source ./.env/bin/activate
|
||||||
- pip3 install -e .
|
- pip3 install -e .
|
||||||
|
|
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -35,6 +35,7 @@ tests/bitcoin*
|
||||||
tests/elements*
|
tests/elements*
|
||||||
token.sh
|
token.sh
|
||||||
src/cryptoadvance/specter/translations/**/messages.mo
|
src/cryptoadvance/specter/translations/**/messages.mo
|
||||||
|
src/cryptoadvance/specter/_version.py
|
||||||
tests/elements
|
tests/elements
|
||||||
signing_dir
|
signing_dir
|
||||||
site
|
site
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ cache:
|
||||||
- key:
|
- key:
|
||||||
files:
|
files:
|
||||||
- ./requirements.txt
|
- ./requirements.txt
|
||||||
- ./test_requirements.txt
|
|
||||||
prefix: "$CI_JOB_NAME"
|
prefix: "$CI_JOB_NAME"
|
||||||
paths:
|
paths:
|
||||||
- .cache/pip
|
- .cache/pip
|
||||||
|
|
@ -57,7 +56,7 @@ check:
|
||||||
script:
|
script:
|
||||||
- pip3 install -r requirements.txt
|
- pip3 install -r requirements.txt
|
||||||
- pip3 install -e .
|
- pip3 install -e .
|
||||||
- pip3 install -r test_requirements.txt
|
- pip3 install -e ".[test]"
|
||||||
- python3 setup.py install # compiles babel stuff as well (might make pip install obsolete)
|
- python3 setup.py install # compiles babel stuff as well (might make pip install obsolete)
|
||||||
- py.test --cov-report term --cov cryptoadvance
|
- py.test --cov-report term --cov cryptoadvance
|
||||||
|
|
||||||
|
|
@ -67,7 +66,7 @@ check:
|
||||||
script:
|
script:
|
||||||
# start the server in the background
|
# start the server in the background
|
||||||
- pip3 install -e .
|
- pip3 install -e .
|
||||||
- pip3 install -r test_requirements.txt
|
- pip3 install -e ".[test]"
|
||||||
- python3 setup.py install # compiles babel stuff as well (might make pip install obsolete)
|
- python3 setup.py install # compiles babel stuff as well (might make pip install obsolete)
|
||||||
- npm i
|
- npm i
|
||||||
- ./utils/test-cypress.sh --docker --debug run
|
- ./utils/test-cypress.sh --docker --debug run
|
||||||
|
|
@ -84,16 +83,11 @@ release_pip:
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
script:
|
script:
|
||||||
- pip3 install setuptools wheel twine
|
- pip3 install -e .
|
||||||
- pip3 install -r test_requirements.txt
|
- pip3 install -e ".[test]"
|
||||||
- python3 setup.py install
|
- pip3 install .
|
||||||
# verifying the version number follows vx.y.z (e.g. "v1.2.3")
|
- pip3 install build==0.10.0 twine
|
||||||
- if ! [[ $CI_COMMIT_TAG =~ ^v(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(-pre(0|[1-9][0-9]*))? ]]; then exit 1; fi
|
- python3 -m build
|
||||||
# set version number in setup.py
|
|
||||||
- echo Releasing $CI_COMMIT_TAG
|
|
||||||
- sed -i "s/version=\".*/version=\"$CI_COMMIT_TAG\",/" setup.py
|
|
||||||
- cat setup.py
|
|
||||||
- python3 setup.py sdist bdist_wheel
|
|
||||||
- ls -l dist
|
- ls -l dist
|
||||||
# twine reads the password from the env-var TWINE_PASSWORD
|
# twine reads the password from the env-var TWINE_PASSWORD
|
||||||
# Either testing it or doing the real thing depending on which gitlab-project we're running:
|
# Either testing it or doing the real thing depending on which gitlab-project we're running:
|
||||||
|
|
@ -126,17 +120,7 @@ release_binary_windows:
|
||||||
- pip install virtualenv
|
- pip install virtualenv
|
||||||
- virtualenv --python=python3 .env
|
- virtualenv --python=python3 .env
|
||||||
- .\.env\Scripts\activate
|
- .\.env\Scripts\activate
|
||||||
- pip install -r test_requirements.txt || echo "why the heck does this fail with:"
|
- pip3 install -e ".[test]"
|
||||||
# Collecting distlib<1,>=0.3.6
|
|
||||||
# Downloading distlib-0.3.6-py2.py3-none-any.whl (468 kB)
|
|
||||||
# ------------------------------------- 468.5/468.5 kB 30.6 MB/s eta 0:00:00
|
|
||||||
# ERROR: To modify pip, please run the following command:
|
|
||||||
# C:\gitlab-runner\builds\xPkLDUk2\0\k9ert\specter-desktop\.env\Scripts\python.exe -m pip install -r test_requirements.txt
|
|
||||||
# Uploading artifacts for failed job
|
|
||||||
|
|
||||||
# That error message above doesn't even help a bit
|
|
||||||
# However it seems that if you do that yet another time, it doesn't fail!
|
|
||||||
- pip install -r test_requirements.txt -vv
|
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# This script won't execute if the script before that fails
|
# This script won't execute if the script before that fails
|
||||||
|
|
@ -167,7 +151,7 @@ release_electron_linux_windows:
|
||||||
stage: releasing
|
stage: releasing
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
dependencies:
|
needs:
|
||||||
- release_binary_windows
|
- release_binary_windows
|
||||||
before_script:
|
before_script:
|
||||||
- python3 -V # Print out python version for debugging
|
- python3 -V # Print out python version for debugging
|
||||||
|
|
@ -177,7 +161,7 @@ release_electron_linux_windows:
|
||||||
# Only difference to default befor_script: (ToDo fix this)
|
# Only difference to default befor_script: (ToDo fix this)
|
||||||
- python3 -m virtualenv --python=python3 .env
|
- python3 -m virtualenv --python=python3 .env
|
||||||
- source .env/bin/activate
|
- source .env/bin/activate
|
||||||
- pip3 install -r test_requirements.txt
|
- pip3 install -e ".[test]"
|
||||||
script:
|
script:
|
||||||
- echo "Releasing for ${CI_PROJECT_ROOT_NAMESPACE}"
|
- echo "Releasing for ${CI_PROJECT_ROOT_NAMESPACE}"
|
||||||
- export CI_PROJECT_ROOT_NAMESPACE # needed in the build-script to download the right windows-binary
|
- export CI_PROJECT_ROOT_NAMESPACE # needed in the build-script to download the right windows-binary
|
||||||
|
|
@ -227,7 +211,7 @@ release_signatures:
|
||||||
- pip3 install --upgrade virtualenv
|
- pip3 install --upgrade virtualenv
|
||||||
- virtualenv --python=python3 .env
|
- virtualenv --python=python3 .env
|
||||||
- source .env/bin/activate
|
- source .env/bin/activate
|
||||||
- pip3 install -r test_requirements.txt
|
- pip3 install -e ".[test]"
|
||||||
- ./utils/artifact_signer.sh init # prepare .gnupg
|
- ./utils/artifact_signer.sh init # prepare .gnupg
|
||||||
script:
|
script:
|
||||||
- python3 -m utils.release-helper download # downloads the job-artifacts from gitlab
|
- python3 -m utils.release-helper download # downloads the job-artifacts from gitlab
|
||||||
|
|
|
||||||
10
MANIFEST.in
10
MANIFEST.in
|
|
@ -9,3 +9,13 @@ recursive-include src/cryptoadvance/specter/services/*/static *
|
||||||
recursive-include src/cryptoadvance/specter/translations/*/LC_MESSAGES *.mo
|
recursive-include src/cryptoadvance/specter/translations/*/LC_MESSAGES *.mo
|
||||||
recursive-include src/cryptoadvance/specter/translations/*/LC_MESSAGES *.po
|
recursive-include src/cryptoadvance/specter/translations/*/LC_MESSAGES *.po
|
||||||
include requirements.txt
|
include requirements.txt
|
||||||
|
|
||||||
|
# just by using using `setuptools_scm` it modifies the way files are added to the sdist.
|
||||||
|
# This was a cause of major headache in order to avoid large binaries e.g. in
|
||||||
|
# `pyinstaller/bitcoind` to not be added. See also this
|
||||||
|
# [chapter](https://github.com/pypa/setuptools_scm/#file-finders-hook-makes-most-of-manifestin-unnecessary)
|
||||||
|
# ... which might make the above not necessary but the below very needed:
|
||||||
|
exclude .gitattributes .gitignore pyinstaller .pre-commit.config.yaml
|
||||||
|
prune pyinstaller/bitcoind
|
||||||
|
prune pyinstaller/torbrowser
|
||||||
|
prune .github
|
||||||
|
|
@ -6,7 +6,7 @@ docker push registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:v2
|
||||||
```
|
```
|
||||||
Here the version is v23.0 but that's just an example. This folder just explains how the image is created. Which image is USED is specified:
|
Here the version is v23.0 but that's just an example. This folder just explains how the image is created. Which image is USED is specified:
|
||||||
|
|
||||||
* In the case of tests in pytest.ini in the addopts-line (MIGHT be different in different branches)
|
* In the case of tests in pyproject.toml in the addopts-line (MIGHT be different in different branches)
|
||||||
* in the case of running
|
* in the case of running
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@ If you're not interested in elements, you can skip the liquid specific tests as
|
||||||
|
|
||||||
Set up the dependencies:
|
Set up the dependencies:
|
||||||
```sh
|
```sh
|
||||||
pip3 install -r test_requirements.txt
|
pip3 install -e ".[test]"
|
||||||
pip3 install -e .
|
pip3 install -e .
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ echo " --> Activating virtualenv"
|
||||||
call .\.buildenv\Scripts\activate
|
call .\.buildenv\Scripts\activate
|
||||||
|
|
||||||
echo " --> Installing test-requirement"
|
echo " --> Installing test-requirement"
|
||||||
pip3 install -r test_requirements.txt
|
pip3 install -e ".[test]"
|
||||||
|
|
||||||
echo " --> Setting version in setup.py"
|
echo " --> Setting version in setup.py"
|
||||||
python .\utils\release-helper.py set_setup_py_version %1%
|
python .\utils\release-helper.py set_setup_py_version %1%
|
||||||
|
|
|
||||||
87
pyproject.toml
Normal file
87
pyproject.toml
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
[build-system]
|
||||||
|
requires = [
|
||||||
|
"setuptools<=65.7.0",
|
||||||
|
"setuptools_scm[toml]>=6.2",
|
||||||
|
"babel",
|
||||||
|
"build==0.10.0",
|
||||||
|
"wheel",
|
||||||
|
"twine"
|
||||||
|
]
|
||||||
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "cryptoadvance.specter"
|
||||||
|
|
||||||
|
authors = [
|
||||||
|
{ name="Stepan Snigirev"},
|
||||||
|
{ name="k9ert"},
|
||||||
|
]
|
||||||
|
description = "A GUI for Bitcoin Core & Electrum optimised to work with airgapped hardware wallets"
|
||||||
|
|
||||||
|
urls = { Homepage = "https://github.com/cryptoadvance/spectrum" }
|
||||||
|
readme = "README.md"
|
||||||
|
license = {file = "LICENSE"}
|
||||||
|
|
||||||
|
|
||||||
|
requires-python = ">=3.7,<4.0"
|
||||||
|
|
||||||
|
dynamic = ["dependencies", "version"]
|
||||||
|
|
||||||
|
classifiers =[
|
||||||
|
'Programming Language :: Python :: 3',
|
||||||
|
'License :: OSI Approved :: MIT License',
|
||||||
|
'Operating System :: OS Independent',
|
||||||
|
'Framework :: Flask',
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.scripts]
|
||||||
|
specter="cryptoadvance.specter.cli:entry_point"
|
||||||
|
|
||||||
|
[tool.setuptools_scm]
|
||||||
|
write_to = "src/cryptoadvance/specter/_version.py"
|
||||||
|
version_scheme = "python-simplified-semver"
|
||||||
|
|
||||||
|
[tool.pytest.ini_options]
|
||||||
|
norecursedirs = "tests/bitcoin* tests/elements* tests/xtestdata_testextensions"
|
||||||
|
|
||||||
|
log_format = "[%(levelname)8s] %(message)s %(name)s (%(filename)s:%(lineno)s)"
|
||||||
|
addopts = "--bitcoind-version v22.0.0 --elementsd-version v0.21.0.2"
|
||||||
|
markers = [
|
||||||
|
"slow: mark test as slow.",
|
||||||
|
"elm: mark test as elementsd dependent",
|
||||||
|
"bottleneck: mark a test as so ressource intensive that it can create a bottleneck where the test just fails due to a lack of ressources",
|
||||||
|
"threading: test needs threading to work"
|
||||||
|
]
|
||||||
|
|
||||||
|
filterwarnings = [
|
||||||
|
"ignore::DeprecationWarning:bitbox02[.*]"
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.setuptools]
|
||||||
|
#include-package-data = false
|
||||||
|
package-dir = {'' = 'src'}
|
||||||
|
|
||||||
|
[tool.setuptools.packages.find]
|
||||||
|
where = ["src"]
|
||||||
|
include = ["cryptoadvance.*"]
|
||||||
|
|
||||||
|
[tool.setuptools.exclude-package-data]
|
||||||
|
mypkg = ["pyinstaller"]
|
||||||
|
|
||||||
|
[tool.setuptools.dynamic]
|
||||||
|
dependencies = {file = ["requirements.in"]}
|
||||||
|
|
||||||
|
[project.optional-dependencies]
|
||||||
|
test = [
|
||||||
|
"black==22.3.0",
|
||||||
|
"pre-commit==2.13.0",
|
||||||
|
"pip-tools==5.5.0",
|
||||||
|
"pytest==7.1.2",
|
||||||
|
"PySocks==1.7.1",
|
||||||
|
"pytest-cov==2.10.1",
|
||||||
|
"mock==4.0.2",
|
||||||
|
"babel==2.10.3",
|
||||||
|
"python-gitlab==2.10.1",
|
||||||
|
# requirements for stuff in ./utils
|
||||||
|
"requests==2.26.0",
|
||||||
|
]
|
||||||
17
pytest.ini
17
pytest.ini
|
|
@ -1,17 +0,0 @@
|
||||||
[pytest]
|
|
||||||
norecursedirs = tests/bitcoin* tests/elements* tests/xtestdata_testextensions
|
|
||||||
log_format = [%(levelname)8s] %(message)s %(name)s (%(filename)s:%(lineno)s)
|
|
||||||
addopts = --bitcoind-version v22.0.0 --elementsd-version v0.21.0.2
|
|
||||||
markers =
|
|
||||||
slow: mark test as slow.
|
|
||||||
elm: mark test as elementsd dependent
|
|
||||||
bottleneck: mark a test as so ressource intensive that it can create a bottleneck where the test just fails due to a lack of ressources
|
|
||||||
threading: test needs threading to work
|
|
||||||
|
|
||||||
# If you need live logging to debug, uncomment the next line
|
|
||||||
# log_cli = True
|
|
||||||
# Then set the desired logging level on the command line, for example:
|
|
||||||
# pytest --log-cli-level INFO
|
|
||||||
|
|
||||||
filterwarnings =
|
|
||||||
ignore::DeprecationWarning:bitbox02[.*]
|
|
||||||
|
|
@ -9,7 +9,6 @@ Flask-Login==0.5.0
|
||||||
Flask-RESTful==0.3.9
|
Flask-RESTful==0.3.9
|
||||||
Flask-HTTPAuth==4.4.0
|
Flask-HTTPAuth==4.4.0
|
||||||
hwi==2.1.1
|
hwi==2.1.1
|
||||||
importlib_metadata==4.8.1
|
|
||||||
python-dotenv==0.13.0
|
python-dotenv==0.13.0
|
||||||
requests==2.26.0
|
requests==2.26.0
|
||||||
pysocks==1.7.1
|
pysocks==1.7.1
|
||||||
|
|
|
||||||
|
|
@ -321,10 +321,6 @@ idna==3.4 \
|
||||||
--hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \
|
--hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \
|
||||||
--hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2
|
--hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2
|
||||||
# via requests
|
# via requests
|
||||||
importlib_metadata==4.8.1 \
|
|
||||||
--hash=sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15 \
|
|
||||||
--hash=sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1
|
|
||||||
# via -r requirements.in
|
|
||||||
itsdangerous==2.1.2 \
|
itsdangerous==2.1.2 \
|
||||||
--hash=sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44 \
|
--hash=sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44 \
|
||||||
--hash=sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a
|
--hash=sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a
|
||||||
|
|
@ -686,9 +682,9 @@ specterext-exfund==0.1.7 \
|
||||||
specterext-faucet==0.1.2 \
|
specterext-faucet==0.1.2 \
|
||||||
--hash=sha256:86db78a6c41688152cfeec14efafd6d06c97e6edd9735461ee897495f90cb2e8
|
--hash=sha256:86db78a6c41688152cfeec14efafd6d06c97e6edd9735461ee897495f90cb2e8
|
||||||
# via -r requirements.in
|
# via -r requirements.in
|
||||||
specterext-stacktrack==0.3.0 \
|
specterext-stacktrack==0.2.1 \
|
||||||
--hash=sha256:14f96f1f552f57ba017b8bc642f07343edbb1abafe09e03bbaae179d78d7ce23 \
|
--hash=sha256:28729d1a981d8c061902b3d26baefc723d286aecea4d203ed729d1c89a9de267 \
|
||||||
--hash=sha256:9e2946185730aab377951e83a27d8791a34e0f031e44f15991212b6b85722ca0
|
--hash=sha256:34a5e9da8a3cb7a4c8b7bc4e0a417a043150e608a7261e56d84fbfba9af15b8a
|
||||||
# via -r requirements.in
|
# via -r requirements.in
|
||||||
sqlalchemy==1.4.42 \
|
sqlalchemy==1.4.42 \
|
||||||
--hash=sha256:04f2598c70ea4a29b12d429a80fad3a5202d56dce19dd4916cc46a965a5ca2e9 \
|
--hash=sha256:04f2598c70ea4a29b12d429a80fad3a5202d56dce19dd4916cc46a965a5ca2e9 \
|
||||||
|
|
@ -775,10 +771,6 @@ wtforms==3.0.1 \
|
||||||
--hash=sha256:6b351bbb12dd58af57ffef05bc78425d08d1914e0fd68ee14143b7ade023c5bc \
|
--hash=sha256:6b351bbb12dd58af57ffef05bc78425d08d1914e0fd68ee14143b7ade023c5bc \
|
||||||
--hash=sha256:837f2f0e0ca79481b92884962b914eba4e72b7a2daaf1f939c890ed0124b834b
|
--hash=sha256:837f2f0e0ca79481b92884962b914eba4e72b7a2daaf1f939c890ed0124b834b
|
||||||
# via flask-wtf
|
# via flask-wtf
|
||||||
zipp==3.10.0 \
|
|
||||||
--hash=sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1 \
|
|
||||||
--hash=sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8
|
|
||||||
# via importlib-metadata
|
|
||||||
|
|
||||||
# WARNING: The following packages were not pinned, but pip requires them to be
|
# WARNING: The following packages were not pinned, but pip requires them to be
|
||||||
# pinned when the requirements file includes hashes. Consider using the --allow-unsafe flag.
|
# pinned when the requirements file includes hashes. Consider using the --allow-unsafe flag.
|
||||||
|
|
|
||||||
26
setup.py
26
setup.py
|
|
@ -32,36 +32,14 @@ for req in install_reqs:
|
||||||
continue
|
continue
|
||||||
reqs.append(str(req).rstrip(" \\"))
|
reqs.append(str(req).rstrip(" \\"))
|
||||||
|
|
||||||
|
|
||||||
with open("README.md", "r") as fh:
|
|
||||||
long_description = fh.read()
|
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="cryptoadvance.specter",
|
|
||||||
version="vx.y.z-get-replaced-by-release-script",
|
|
||||||
author="Stepan Snigirev, Kim Neunert",
|
|
||||||
author_email="snigirev.stepan@gmail.com, kim.neunert@gmail.com",
|
|
||||||
description="A GUI for Bitcoin Core optimised to work with airgapped hardware wallets",
|
|
||||||
long_description=long_description,
|
|
||||||
long_description_content_type="text/markdown",
|
|
||||||
url="https://github.com/cryptoadvance/specter-desktop",
|
|
||||||
packages=find_namespace_packages("src", include=["cryptoadvance.*"]),
|
|
||||||
package_dir={"": "src"},
|
|
||||||
package_data={
|
package_data={
|
||||||
"": [
|
"": [
|
||||||
"translations/*/LC_MESSAGES/messages.mo",
|
"translations/*/LC_MESSAGES/messages.mo",
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
# take METADATA.in into account, include that stuff as well (static/templates)
|
# take METADATA.in into account, include that stuff as well (static/templates)
|
||||||
include_package_data=True,
|
|
||||||
install_requires=reqs,
|
install_requires=reqs,
|
||||||
classifiers=[
|
|
||||||
"Programming Language :: Python :: 3",
|
|
||||||
"License :: OSI Approved :: MIT License",
|
|
||||||
"Operating System :: OS Independent",
|
|
||||||
"Framework :: Flask",
|
|
||||||
],
|
|
||||||
python_requires=">=3.7,<4.0",
|
|
||||||
cmdclass={
|
cmdclass={
|
||||||
"install": InstallWithBabelCompile,
|
"install": InstallWithBabelCompile,
|
||||||
# The rest is convenience but not strictly necessary for the automation:
|
# The rest is convenience but not strictly necessary for the automation:
|
||||||
|
|
@ -70,8 +48,4 @@ setup(
|
||||||
"init_catalog": babel.init_catalog,
|
"init_catalog": babel.init_catalog,
|
||||||
"update_catalog": babel.update_catalog,
|
"update_catalog": babel.update_catalog,
|
||||||
},
|
},
|
||||||
entry_points="""
|
|
||||||
[console_scripts]
|
|
||||||
specter=cryptoadvance.specter.cli:entry_point
|
|
||||||
""",
|
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,6 @@ def grep(file_location, search_line):
|
||||||
"""returns true if any like in that file endswith search_line"""
|
"""returns true if any like in that file endswith search_line"""
|
||||||
with open(file_location, "r") as the_file:
|
with open(file_location, "r") as the_file:
|
||||||
for line in the_file.readlines():
|
for line in the_file.readlines():
|
||||||
if line.strip().endswith(search_line):
|
if line.strip().__contains__(search_line):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ from urllib.error import HTTPError
|
||||||
import requests
|
import requests
|
||||||
from requests.exceptions import ConnectionError
|
from requests.exceptions import ConnectionError
|
||||||
from urllib3.exceptions import NewConnectionError
|
from urllib3.exceptions import NewConnectionError
|
||||||
import importlib_metadata
|
|
||||||
|
|
||||||
from cryptoadvance.specter.specter_error import SpecterError
|
from cryptoadvance.specter.specter_error import SpecterError
|
||||||
|
|
||||||
|
|
@ -60,18 +59,6 @@ class VersionChecker:
|
||||||
)
|
)
|
||||||
time.sleep(dt)
|
time.sleep(dt)
|
||||||
|
|
||||||
def _get_current_version(self):
|
|
||||||
current = "unknown"
|
|
||||||
if self.installation_type == "app":
|
|
||||||
current = VersionChecker._version_txt_content()
|
|
||||||
else:
|
|
||||||
current = importlib_metadata.version(self.name)
|
|
||||||
if current == None:
|
|
||||||
current = "custom"
|
|
||||||
if current == "vx.y.z-get-replaced-by-release-script":
|
|
||||||
current = "custom"
|
|
||||||
return current
|
|
||||||
|
|
||||||
def _get_binary_version(self):
|
def _get_binary_version(self):
|
||||||
"""
|
"""
|
||||||
Get binary version: current, latest.
|
Get binary version: current, latest.
|
||||||
|
|
@ -172,12 +159,15 @@ class VersionChecker:
|
||||||
return latest
|
return latest
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _version_txt_content(cls):
|
def _get_current_version(self):
|
||||||
version_file = "version.txt"
|
"""Returns the version found in cryptoadvance.specter._version or "unknown"
|
||||||
if getattr(sys, "frozen", False):
|
if that doesn't exist
|
||||||
version_file = os.path.join(sys._MEIPASS, "version.txt")
|
"""
|
||||||
with open(version_file) as f:
|
try:
|
||||||
return f.read().strip()
|
from cryptoadvance.specter._version import version
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
return "unknown"
|
||||||
|
return "v" + version
|
||||||
|
|
||||||
|
|
||||||
def compare(version1: str, version2: str) -> int:
|
def compare(version1: str, version2: str) -> int:
|
||||||
|
|
@ -223,20 +213,34 @@ def compare(version1: str, version2: str) -> int:
|
||||||
|
|
||||||
|
|
||||||
def _parse_version(version: str) -> dict:
|
def _parse_version(version: str) -> dict:
|
||||||
"""Parses version-strings like v1.5.6-pre5 and returns a dict"""
|
"""Parses version-strings like v1.5.6-pre5 and returns a dict
|
||||||
if version[0] == "v":
|
This also parses something like:
|
||||||
version = version[1:]
|
2.0.0rc20.dev0+ga99ede2a.d20230215
|
||||||
version = version.replace("rc", "-pre")
|
but ignores the stuff behind the postfix (which is good enough for our use cases)
|
||||||
version_ar = version.split(".")
|
see also: https://github.com/pypa/setuptools_scm/#default-versioning-scheme
|
||||||
if len(version_ar) != 3:
|
"""
|
||||||
raise SpecterError(f"version {version} does not have 3 separated digits")
|
try:
|
||||||
postfix = ""
|
|
||||||
if "-" in version_ar[2]:
|
if version[0] == "v":
|
||||||
postfix = version_ar[2].split("-")[1]
|
version = version[1:]
|
||||||
version_ar[2] = version_ar[2].split("-")[0]
|
version = version.replace("rc", "-pre")
|
||||||
return {
|
version_ar = version.split(".")
|
||||||
"major": int(version_ar[0]),
|
if len(version_ar) == 5 or len(version_ar) == 4:
|
||||||
"minor": int(version_ar[1]),
|
version_ar = version_ar[0:3]
|
||||||
"patch": int(version_ar[2]),
|
if len(version_ar) != 3:
|
||||||
"postfix": postfix,
|
raise SpecterError(
|
||||||
}
|
f"version {version} does not have 3 separated digits but {len(version_ar)}"
|
||||||
|
)
|
||||||
|
postfix = ""
|
||||||
|
if "-" in version_ar[2]:
|
||||||
|
postfix = version_ar[2].split("-")[1]
|
||||||
|
version_ar[2] = version_ar[2].split("-")[0]
|
||||||
|
return {
|
||||||
|
"major": int(version_ar[0]),
|
||||||
|
"minor": int(version_ar[1]),
|
||||||
|
"patch": int(version_ar[2]),
|
||||||
|
"postfix": postfix,
|
||||||
|
}
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"{str(e)} parsing version {version} ")
|
||||||
|
raise e
|
||||||
|
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
# requirements for testing
|
|
||||||
black==22.3.0
|
|
||||||
pre-commit==2.13.0
|
|
||||||
pip-tools==5.5.0
|
|
||||||
pytest==7.1.2
|
|
||||||
PySocks==1.7.1
|
|
||||||
pytest-cov==2.10.1
|
|
||||||
mock==4.0.2
|
|
||||||
babel==2.10.3
|
|
||||||
python-gitlab==2.10.1
|
|
||||||
# requirements for stuff in ./utils
|
|
||||||
requests==2.26.0
|
|
||||||
|
|
@ -131,7 +131,7 @@ def instantiate_bitcoind_controller(
|
||||||
running_version = bitcoind_controller.version()
|
running_version = bitcoind_controller.version()
|
||||||
requested_version = request.config.getoption("--bitcoind-version")
|
requested_version = request.config.getoption("--bitcoind-version")
|
||||||
assert running_version == requested_version, (
|
assert running_version == requested_version, (
|
||||||
"Please make sure that the Bitcoind-version (%s) matches with the version in pytest.ini (%s)"
|
"Please make sure that the Bitcoind-version (%s) matches with the version in pyproject.toml (%s)"
|
||||||
% (running_version, requested_version)
|
% (running_version, requested_version)
|
||||||
)
|
)
|
||||||
return bitcoind_controller
|
return bitcoind_controller
|
||||||
|
|
@ -157,7 +157,7 @@ def instantiate_elementsd_controller(request, rpcport=18643, extra_args=[]):
|
||||||
running_version = elementsd_controller.version()
|
running_version = elementsd_controller.version()
|
||||||
requested_version = request.config.getoption("--elementsd-version")
|
requested_version = request.config.getoption("--elementsd-version")
|
||||||
assert running_version == requested_version, (
|
assert running_version == requested_version, (
|
||||||
"Please make sure that the elementsd-version (%s) matches with the version in pytest.ini (%s)"
|
"Please make sure that the elementsd-version (%s) matches with the version in pyproject.toml (%s)"
|
||||||
% (running_version, requested_version)
|
% (running_version, requested_version)
|
||||||
)
|
)
|
||||||
return elementsd_controller
|
return elementsd_controller
|
||||||
|
|
|
||||||
|
|
@ -32,17 +32,17 @@ function maybe_update {
|
||||||
# Determine if we need to pull. From https://stackoverflow.com/a/3278427
|
# Determine if we need to pull. From https://stackoverflow.com/a/3278427
|
||||||
UPSTREAM=origin/master
|
UPSTREAM=origin/master
|
||||||
LOCAL=$(git describe --all | sed 's/heads\///' | sed 's/tags\///') # gives either a tag or "master"
|
LOCAL=$(git describe --all | sed 's/heads\///' | sed 's/tags\///') # gives either a tag or "master"
|
||||||
if cat ../../pytest.ini | grep "addopts = --${node_impl}d-version" ; then
|
if cat ../../pyproject.toml | grep "addopts = --${node_impl}d-version" ; then
|
||||||
# in this case, we use the expected version from the test also as the tag to be checked out
|
# in this case, we use the expected version from the test also as the tag to be checked out
|
||||||
# i admit that this is REALLY ugly. Happy for any recommendations to do that more easy
|
# i admit that this is REALLY ugly. Happy for any recommendations to do that more easy
|
||||||
PINNED=$(cat ../../pytest.ini | grep "addopts = " | cut -d'=' -f2 | sed 's/--/+/g' | tr '+' '\n' | grep ${node_impl} | cut -d' ' -f2)
|
PINNED=$(cat ../../pyproject.toml | grep "addopts = " | cut -d'=' -f2 | sed 's/--/+/g' | tr '+' '\n' | grep ${node_impl} | cut -d' ' -f2)
|
||||||
if [ "$node_impl" = "elements" ]; then
|
if [ "$node_impl" = "elements" ]; then
|
||||||
# in the case of elements, the tags have a "elements-" prefix
|
# in the case of elements, the tags have a "elements-" prefix
|
||||||
PINNED=$(echo "$PINNED" | sed 's/v//' | sed 's/^/elements-/')
|
PINNED=$(echo "$PINNED" | sed 's/v//' | sed 's/^/elements-/')
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# the version in pytest.ini is (also) used to check the version via getnetworkinfo()["subversion"]
|
# the version in pyproject.toml is (also) used to check the version via getnetworkinfo()["subversion"]
|
||||||
# However, this might not be a valid git rev. So we need another way to specify the git-rev used
|
# However, this might not be a valid git rev. So we need another way to specify the git-rev used
|
||||||
# as we want to be able to test against specific commits
|
# as we want to be able to test against specific commits
|
||||||
if [ -f ../${node_impl}_gitrev_pinned ]; then
|
if [ -f ../${node_impl}_gitrev_pinned ]; then
|
||||||
|
|
@ -78,14 +78,14 @@ function maybe_update {
|
||||||
|
|
||||||
function calc_pytestinit_nodeimpl_version {
|
function calc_pytestinit_nodeimpl_version {
|
||||||
|
|
||||||
# returns the version of $node_impl from pytest.ini from a line which looks like:
|
# returns the version of $node_impl from pyproject.toml from a line which looks like:
|
||||||
# addopts = --bitcoind-version v22.0 --elementsd-version v0.20.99
|
# addopts = --bitcoind-version v22.0 --elementsd-version v0.20.99
|
||||||
# special treatments for bitcoin and elements necessary, see below
|
# special treatments for bitcoin and elements necessary, see below
|
||||||
local node_impl=$1
|
local node_impl=$1
|
||||||
if cat ../pytest.ini | grep -q "${node_impl}d-version" ; then
|
if cat ../pyproject.toml | grep -q "${node_impl}d-version" ; then
|
||||||
# in this case, we use the expected version from the test also as the tag to be checked out
|
# in this case, we use the expected version from the test also as the tag to be checked out
|
||||||
# i admit that this is REALLY ugly. Happy for any recommendations to do that more easy
|
# i admit that this is REALLY ugly. Happy for any recommendations to do that more easy
|
||||||
PINNED=$(cat ../pytest.ini | grep "addopts = " | cut -d'=' -f2 | sed 's/--/+/g' | tr '+' '\n' | grep ${node_impl} | cut -d' ' -f2)
|
PINNED=$(cat ../pyproject.toml | grep "addopts = " | grep -oP "${node_impl}d-version \K\S+" | cut -d'"' -f1)
|
||||||
|
|
||||||
if [ "$node_impl" = "elements" ]; then
|
if [ "$node_impl" = "elements" ]; then
|
||||||
# in the case of elements, the tags have a "elements-" prefix
|
# in the case of elements, the tags have a "elements-" prefix
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ mock_config_dict = {
|
||||||
@patch("cryptoadvance.specter.cli.cli_server.create_app")
|
@patch("cryptoadvance.specter.cli.cli_server.create_app")
|
||||||
@patch("cryptoadvance.specter.cli.cli_server.init_app")
|
@patch("cryptoadvance.specter.cli.cli_server.init_app")
|
||||||
def test_server_host_and_port(init_app, create_app, caplog):
|
def test_server_host_and_port(init_app, create_app, caplog):
|
||||||
"""This test will fail if you have turned on live-logging in pytest.ini (log_cli = 1 )"""
|
"""This test will fail if you have turned on live-logging in pyproject.toml (log_cli = 1 )"""
|
||||||
caplog.set_level(logging.DEBUG)
|
caplog.set_level(logging.DEBUG)
|
||||||
mock_app = MagicMock()
|
mock_app = MagicMock()
|
||||||
mock_app.config = MagicMock()
|
mock_app.config = MagicMock()
|
||||||
|
|
@ -53,7 +53,7 @@ def test_server_host_and_port(init_app, create_app, caplog):
|
||||||
@patch("cryptoadvance.specter.cli.cli_server.create_app")
|
@patch("cryptoadvance.specter.cli.cli_server.create_app")
|
||||||
@patch("cryptoadvance.specter.cli.cli_server.init_app")
|
@patch("cryptoadvance.specter.cli.cli_server.init_app")
|
||||||
def test_server_host_and_port(init_app, create_app, caplog):
|
def test_server_host_and_port(init_app, create_app, caplog):
|
||||||
"""This test will fail if you have turned on live-logging in pytest.ini (log_cli = 1 )"""
|
"""This test will fail if you have turned on live-logging in pyproject.toml (log_cli = 1 )"""
|
||||||
caplog.set_level(logging.DEBUG)
|
caplog.set_level(logging.DEBUG)
|
||||||
mock_app = MagicMock()
|
mock_app = MagicMock()
|
||||||
mock_app.config = MagicMock()
|
mock_app.config = MagicMock()
|
||||||
|
|
@ -93,7 +93,7 @@ def test_server_host_and_port(init_app, create_app, caplog):
|
||||||
@patch("cryptoadvance.specter.cli.cli_server.create_app")
|
@patch("cryptoadvance.specter.cli.cli_server.create_app")
|
||||||
@patch("cryptoadvance.specter.cli.cli_server.init_app")
|
@patch("cryptoadvance.specter.cli.cli_server.init_app")
|
||||||
def test_server_debug(init_app, create_app, caplog):
|
def test_server_debug(init_app, create_app, caplog):
|
||||||
"""This test will fail if you have turned on live-logging in pytest.ini (log_cli = 1 )"""
|
"""This test will fail if you have turned on live-logging in pyproject.toml (log_cli = 1 )"""
|
||||||
caplog.set_level(logging.DEBUG)
|
caplog.set_level(logging.DEBUG)
|
||||||
runner = CliRunner()
|
runner = CliRunner()
|
||||||
result = runner.invoke(server, ["--debug", "--no-filelog"])
|
result = runner.invoke(server, ["--debug", "--no-filelog"])
|
||||||
|
|
@ -109,7 +109,7 @@ def test_server_debug(init_app, create_app, caplog):
|
||||||
@patch("cryptoadvance.specter.cli.cli_server.create_app")
|
@patch("cryptoadvance.specter.cli.cli_server.create_app")
|
||||||
@patch("cryptoadvance.specter.cli.cli_server.init_app")
|
@patch("cryptoadvance.specter.cli.cli_server.init_app")
|
||||||
def test_server_datafolder(init_app, create_app, caplog):
|
def test_server_datafolder(init_app, create_app, caplog):
|
||||||
"""This test will fail if you have turned on live-logging in pytest.ini (log_cli = 1 )"""
|
"""This test will fail if you have turned on live-logging in pyproject.toml (log_cli = 1 )"""
|
||||||
caplog.set_level(logging.DEBUG)
|
caplog.set_level(logging.DEBUG)
|
||||||
mock_app = MagicMock()
|
mock_app = MagicMock()
|
||||||
mock_app.config = MagicMock()
|
mock_app.config = MagicMock()
|
||||||
|
|
@ -135,7 +135,7 @@ def test_server_datafolder(init_app, create_app, caplog):
|
||||||
@patch("cryptoadvance.specter.cli.cli_server.create_app")
|
@patch("cryptoadvance.specter.cli.cli_server.create_app")
|
||||||
@patch("cryptoadvance.specter.cli.cli_server.init_app")
|
@patch("cryptoadvance.specter.cli.cli_server.init_app")
|
||||||
def test_server_config(init_app, create_app, caplog):
|
def test_server_config(init_app, create_app, caplog):
|
||||||
"""This test will fail if you have turned on live-logging in pytest.ini (log_cli = 1 )"""
|
"""This test will fail if you have turned on live-logging in pyproject.toml (log_cli = 1 )"""
|
||||||
caplog.set_level(logging.DEBUG)
|
caplog.set_level(logging.DEBUG)
|
||||||
mock_app = MagicMock()
|
mock_app = MagicMock()
|
||||||
mock_app.config = MagicMock()
|
mock_app.config = MagicMock()
|
||||||
|
|
|
||||||
|
|
@ -26,4 +26,4 @@ def test_last_lines(caplog):
|
||||||
def test_grep():
|
def test_grep():
|
||||||
from cryptoadvance.specter.util.shell import grep
|
from cryptoadvance.specter.util.shell import grep
|
||||||
|
|
||||||
assert grep("./setup.py", 'name="cryptoadvance.specter",')
|
assert grep("./pyproject.toml", 'name = "cryptoadvance.specter"')
|
||||||
|
|
|
||||||
|
|
@ -13,19 +13,16 @@ from mock import Mock, patch, PropertyMock
|
||||||
"cryptoadvance.specter.util.version.VersionChecker.installation_type",
|
"cryptoadvance.specter.util.version.VersionChecker.installation_type",
|
||||||
new_callable=PropertyMock,
|
new_callable=PropertyMock,
|
||||||
)
|
)
|
||||||
@patch("cryptoadvance.specter.util.version.importlib_metadata.version")
|
@patch("cryptoadvance.specter.util.version.VersionChecker._get_current_version")
|
||||||
@patch("cryptoadvance.specter.util.version.VersionChecker._version_txt_content")
|
|
||||||
def test_VersionChecker(
|
def test_VersionChecker(
|
||||||
VersionChecker_version_txt_content,
|
mock_get_current_version,
|
||||||
imp_lib_mock,
|
|
||||||
mock_installation_type,
|
mock_installation_type,
|
||||||
mock_latest,
|
mock_latest,
|
||||||
caplog,
|
caplog,
|
||||||
):
|
):
|
||||||
mock_latest.return_value = "v9.10.21"
|
mock_latest.return_value = "v9.10.21"
|
||||||
imp_lib_mock.return_value = "1.2.3"
|
|
||||||
VersionChecker_version_txt_content.return_value = "2.3.4"
|
|
||||||
mock_installation_type.return_value = "pip"
|
mock_installation_type.return_value = "pip"
|
||||||
|
mock_get_current_version.return_value = "1.2.3"
|
||||||
|
|
||||||
# We're mocking cryptoadvance by another package because that package is installed but not cryptoadvance.specter
|
# We're mocking cryptoadvance by another package because that package is installed but not cryptoadvance.specter
|
||||||
vc = VersionChecker(name="joke")
|
vc = VersionChecker(name="joke")
|
||||||
|
|
@ -37,18 +34,17 @@ def test_VersionChecker(
|
||||||
assert vc._get_binary_version() == (
|
assert vc._get_binary_version() == (
|
||||||
"1.2.3",
|
"1.2.3",
|
||||||
"v9.10.21",
|
"v9.10.21",
|
||||||
) # will break with a new release
|
)
|
||||||
# assert vc._get_pip_version() == ("1.2.3", "v5.3.0") # Might break anytime
|
|
||||||
# assert vc.info == "h"
|
|
||||||
|
|
||||||
|
# Same tests with "app"
|
||||||
mock_installation_type.return_value = "app"
|
mock_installation_type.return_value = "app"
|
||||||
vc = VersionChecker(name="joke")
|
vc = VersionChecker(name="joke")
|
||||||
assert vc.installation_type == "app"
|
assert vc.installation_type == "app"
|
||||||
assert vc._get_current_version() == "2.3.4"
|
assert vc._get_current_version() == "1.2.3"
|
||||||
assert vc.current == "2.3.4"
|
assert vc.current == "1.2.3"
|
||||||
|
|
||||||
assert vc._get_binary_version() == (
|
assert vc._get_binary_version() == (
|
||||||
"2.3.4",
|
"1.2.3",
|
||||||
"v9.10.21",
|
"v9.10.21",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -58,11 +54,7 @@ def test_VersionChecker(
|
||||||
"cryptoadvance.specter.util.version.VersionChecker.installation_type",
|
"cryptoadvance.specter.util.version.VersionChecker.installation_type",
|
||||||
new_callable=PropertyMock,
|
new_callable=PropertyMock,
|
||||||
)
|
)
|
||||||
@patch("cryptoadvance.specter.util.version.importlib_metadata.version")
|
|
||||||
@patch("cryptoadvance.specter.util.version.VersionChecker._version_txt_content")
|
|
||||||
def test_VersionChecker_get_binary_version(
|
def test_VersionChecker_get_binary_version(
|
||||||
VersionChecker_version_txt_content,
|
|
||||||
imp_lib_mock,
|
|
||||||
mock_installation_type,
|
mock_installation_type,
|
||||||
mock_requests_session: MagicMock,
|
mock_requests_session: MagicMock,
|
||||||
caplog,
|
caplog,
|
||||||
|
|
@ -105,6 +97,18 @@ def test_parse_version():
|
||||||
"patch": 5,
|
"patch": 5,
|
||||||
"postfix": "pre12",
|
"postfix": "pre12",
|
||||||
}
|
}
|
||||||
|
assert _parse_version("2.0.0rc20.dev0+ga99ede2a.d20230215") == {
|
||||||
|
"major": 2,
|
||||||
|
"minor": 0,
|
||||||
|
"patch": 0,
|
||||||
|
"postfix": "pre20",
|
||||||
|
}
|
||||||
|
assert _parse_version("2.0.0.dev1897+gcccf4a9") == {
|
||||||
|
"major": 2,
|
||||||
|
"minor": 0,
|
||||||
|
"patch": 0,
|
||||||
|
"postfix": "",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_compare():
|
def test_compare():
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ def instantiate_bitcoind_controller(request, rpcport=18543, extra_args=[]):
|
||||||
running_version = bitcoind_controller.version()
|
running_version = bitcoind_controller.version()
|
||||||
requested_version = request.config.getoption("--bitcoind-version")
|
requested_version = request.config.getoption("--bitcoind-version")
|
||||||
assert running_version == requested_version, (
|
assert running_version == requested_version, (
|
||||||
"Please make sure that the Bitcoind-version (%s) matches with the version in pytest.ini (%s)"
|
"Please make sure that the Bitcoind-version (%s) matches with the version in pyproject.toml (%s)"
|
||||||
% (running_version, requested_version)
|
% (running_version, requested_version)
|
||||||
)
|
)
|
||||||
return bitcoind_controller
|
return bitcoind_controller
|
||||||
|
|
@ -146,7 +146,7 @@ def instantiate_elementsd_controller(request, rpcport=18643, extra_args=[]):
|
||||||
running_version = elementsd_controller.version()
|
running_version = elementsd_controller.version()
|
||||||
requested_version = request.config.getoption("--elementsd-version")
|
requested_version = request.config.getoption("--elementsd-version")
|
||||||
assert running_version == requested_version, (
|
assert running_version == requested_version, (
|
||||||
"Please make sure that the elementsd-version (%s) matches with the version in pytest.ini (%s)"
|
"Please make sure that the elementsd-version (%s) matches with the version in pyproject.toml (%s)"
|
||||||
% (running_version, requested_version)
|
% (running_version, requested_version)
|
||||||
)
|
)
|
||||||
return elementsd_controller
|
return elementsd_controller
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ def instantiate_bitcoind_controller(request, rpcport=18543, extra_args=[]):
|
||||||
running_version = bitcoind_controller.version()
|
running_version = bitcoind_controller.version()
|
||||||
requested_version = request.config.getoption("--bitcoind-version")
|
requested_version = request.config.getoption("--bitcoind-version")
|
||||||
assert running_version == requested_version, (
|
assert running_version == requested_version, (
|
||||||
"Please make sure that the Bitcoind-version (%s) matches with the version in pytest.ini (%s)"
|
"Please make sure that the Bitcoind-version (%s) matches with the version in pyproject.toml (%s)"
|
||||||
% (running_version, requested_version)
|
% (running_version, requested_version)
|
||||||
)
|
)
|
||||||
return bitcoind_controller
|
return bitcoind_controller
|
||||||
|
|
@ -143,7 +143,7 @@ def instantiate_elementsd_controller(request, rpcport=18643, extra_args=[]):
|
||||||
running_version = elementsd_controller.version()
|
running_version = elementsd_controller.version()
|
||||||
requested_version = request.config.getoption("--elementsd-version")
|
requested_version = request.config.getoption("--elementsd-version")
|
||||||
assert running_version == requested_version, (
|
assert running_version == requested_version, (
|
||||||
"Please make sure that the elementsd-version (%s) matches with the version in pytest.ini (%s)"
|
"Please make sure that the elementsd-version (%s) matches with the version in pyproject.toml (%s)"
|
||||||
% (running_version, requested_version)
|
% (running_version, requested_version)
|
||||||
)
|
)
|
||||||
return elementsd_controller
|
return elementsd_controller
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ def instantiate_bitcoind_controller(docker, request, rpcport=18543, extra_args=[
|
||||||
running_version = bitcoind_controller.version()
|
running_version = bitcoind_controller.version()
|
||||||
requested_version = request.config.getoption("--bitcoind-version")
|
requested_version = request.config.getoption("--bitcoind-version")
|
||||||
assert running_version == requested_version, (
|
assert running_version == requested_version, (
|
||||||
"Please make sure that the Bitcoind-version (%s) matches with the version in pytest.ini (%s)"
|
"Please make sure that the Bitcoind-version (%s) matches with the version in pyproject.toml (%s)"
|
||||||
% (running_version, requested_version)
|
% (running_version, requested_version)
|
||||||
)
|
)
|
||||||
return bitcoind_controller
|
return bitcoind_controller
|
||||||
|
|
@ -142,7 +142,7 @@ def instantiate_elementsd_controller(request, rpcport=18643, extra_args=[]):
|
||||||
running_version = elementsd_controller.version()
|
running_version = elementsd_controller.version()
|
||||||
requested_version = request.config.getoption("--elementsd-version")
|
requested_version = request.config.getoption("--elementsd-version")
|
||||||
assert running_version == requested_version, (
|
assert running_version == requested_version, (
|
||||||
"Please make sure that the elementsd-version (%s) matches with the version in pytest.ini (%s)"
|
"Please make sure that the elementsd-version (%s) matches with the version in pyproject.toml (%s)"
|
||||||
% (running_version, requested_version)
|
% (running_version, requested_version)
|
||||||
)
|
)
|
||||||
return elementsd_controller
|
return elementsd_controller
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ function create_virtualenv_for_pyinstaller {
|
||||||
fi
|
fi
|
||||||
virtualenv --python=python3 .buildenv
|
virtualenv --python=python3 .buildenv
|
||||||
source .buildenv/bin/activate
|
source .buildenv/bin/activate
|
||||||
pip3 install -r test_requirements.txt
|
pip3 install -e ".[test]"
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_pypi_pckgs_and_install {
|
function build_pypi_pckgs_and_install {
|
||||||
|
|
@ -26,12 +26,9 @@ function build_pypi_pckgs_and_install {
|
||||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
SML_ADD="\"\""
|
SML_ADD="\"\""
|
||||||
fi
|
fi
|
||||||
sed -i $SML_ADD "s|version=\".*|version=\"$version\",|" setup.py
|
pip3 install build==0.10.0
|
||||||
cat setup.py
|
python3 -m build
|
||||||
python3 setup.py sdist bdist_wheel
|
pip3 install ./dist/cryptoadvance.specter-*.whl
|
||||||
git checkout setup.py
|
|
||||||
pypi_comp_version=$(echo $version | sed 's/^v//' | sed 's/-pre/rc/' )
|
|
||||||
pip3 install ./dist/cryptoadvance.specter-${pypi_comp_version}-py3-none-any.whl
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function specify_app_name {
|
function specify_app_name {
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ function create_virtualenv_for_pyinstaller {
|
||||||
# we do:
|
# we do:
|
||||||
virtualenv --python=/usr/local/bin/python3 .buildenv
|
virtualenv --python=/usr/local/bin/python3 .buildenv
|
||||||
source .buildenv/bin/activate
|
source .buildenv/bin/activate
|
||||||
pip3 install -r test_requirements.txt
|
pip3 install -e ".[test]"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ pip3 install -r requirements.txt --require-hashes
|
||||||
pip3 install -e . # this does not compile the babel translation-files
|
pip3 install -e . # this does not compile the babel translation-files
|
||||||
|
|
||||||
|
|
||||||
pip3 install -r test_requirements.txt
|
pip3 install -e ".[test]"
|
||||||
./tests/install_noded.sh --bitcoin binary
|
./tests/install_noded.sh --bitcoin binary
|
||||||
./tests/install_noded.sh --elements binary
|
./tests/install_noded.sh --elements binary
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue