ci: add task to run unittests with frozen deps
What changed, and why it matters
This commit only changes the project's continuous integration (CI) configuration. It adds a new automated test job that runs the existing unit tests using the exact pinned dependency versions shipped in Electrum's release binaries, in addition to the existing job that tests with the latest dependencies. There is no change to application code, no bug fix, and no security patch.
No security action needed. This is a routine CI/testing infrastructure change.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff modifies .cirrus.yml to add a new Cirrus CI task named ‘unittests: py3.10, frozen-deps’. This task installs deterministic build requirements (requirements-build-base.txt, requirements.txt, requirements-binaries.txt) and runs pytest against Python 3.10. It also renames existing task labels from ‘unittests: python $ELECTRUM_PYTHON_VERSION’ to ‘unittests: py$ELECTRUM_PYTHON_VERSION’ and updates downstream depends_on references accordingly. No source code, tests, or dependencies themselves are changed.
Changed components
.cirrus.ymlInspect captured patch +52 / −9
diff --git a/.cirrus.yml b/.cirrus.yml
index a70cada..c1a3529 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -1,13 +1,13 @@
+# unittests using the 'latest' runtime python-dependencies
task:
container:
image: $ELECTRUM_IMAGE
cpu: 1
memory: 2G
matrix:
- - name: "unittests: python $ELECTRUM_PYTHON_VERSION"
+ - name: "unittests: py$ELECTRUM_PYTHON_VERSION"
env:
ELECTRUM_IMAGE: python:$ELECTRUM_PYTHON_VERSION
- ELECTRUM_PYTHON_NAME: python3
matrix:
- env:
ELECTRUM_PYTHON_VERSION: 3.10
@@ -17,7 +17,7 @@ task:
ELECTRUM_PYTHON_VERSION: 3.12
- env:
ELECTRUM_PYTHON_VERSION: 3.13
- - name: "unittests: python 3 debug mode"
+ - name: "unittests: py3.13, debug-mode"
env:
ELECTRUM_PYTHON_VERSION: 3.13
# enable additional checks:
@@ -46,7 +46,7 @@ task:
- export ELECTRUM_ECC_DONT_COMPILE=1
- pip install ".[tests,qml_gui]"
version_script:
- - $ELECTRUM_PYTHON_NAME --version
+ - python3 --version
- pip freeze --all
pytest_script:
- >
@@ -71,6 +71,49 @@ task:
depends_on:
- "linter: Flake8 Mandatory"
+# unittests using the ~same frozen dependencies that are used in the released binaries
+# note: not using pinned pyqt here, due to "qml_gui" extra
+task:
+ container:
+ image: $ELECTRUM_IMAGE
+ cpu: 1
+ memory: 2G
+ name: "unittests: py3.10, frozen-deps"
+ pip_cache:
+ folder: ~/.cache/pip
+ fingerprint_script: echo $ELECTRUM_IMAGE && cat contrib/requirements/requirements*.txt && cat contrib/deterministic-build/requirements*.txt
+ tag_script:
+ - git tag
+ libsecp_build_cache:
+ folder: contrib/_saved_secp256k1_build
+ fingerprint_script: sha256sum ./contrib/make_libsecp256k1.sh
+ populate_script:
+ - apt-get update
+ - apt-get -y install automake libtool
+ - ./contrib/make_libsecp256k1.sh
+ - mkdir contrib/_saved_secp256k1_build
+ - cp electrum/libsecp256k1.so.* contrib/_saved_secp256k1_build/
+ install_script:
+ - apt-get update
+ # qml test reqs:
+ - apt-get -y install libgl1 libegl1 libxkbcommon0 libdbus-1-3
+ - pip install -r contrib/deterministic-build/requirements-build-base.txt
+ - pip install -r contrib/requirements/requirements-ci.txt
+ # electrum itself:
+ - export ELECTRUM_ECC_DONT_COMPILE=1
+ - pip install -r contrib/deterministic-build/requirements.txt -r contrib/deterministic-build/requirements-binaries.txt
+ - pip install ".[tests,qml_gui]"
+ version_script:
+ - python3 --version
+ - pip freeze --all
+ pytest_script:
+ - pytest tests -v
+ env:
+ ELECTRUM_IMAGE: python:3.10
+ LD_LIBRARY_PATH: contrib/_saved_secp256k1_build/
+ depends_on:
+ - "linter: Flake8 Mandatory"
+
task:
name: "locale: upload to crowdin"
container:
@@ -94,7 +137,7 @@ task:
ELECTRUM_REQUIREMENTS_CI: contrib/requirements/requirements-ci.txt
# in addition, crowdin_api_key is set as an "override" in https://cirrus-ci.com/settings/...
depends_on:
- - "unittests: python 3.10"
+ - "unittests: py3.10"
only_if: $CIRRUS_BRANCH == 'master'
task:
@@ -227,7 +270,7 @@ task:
CIRRUS_WORKING_DIR: /opt/wine64/drive_c/electrum
CIRRUS_DOCKER_CONTEXT: contrib/build-wine
depends_on:
- - "unittests: python 3.10"
+ - "unittests: py3.10"
task:
name: "build: Android (QML $APK_ARCH)"
@@ -261,7 +304,7 @@ task:
binaries_artifacts:
path: "dist/*"
depends_on:
- - "unittests: python 3.10"
+ - "unittests: py3.10"
## mac build disabled, as Cirrus CI no longer supports Intel-based mac builds
#task:
@@ -324,7 +367,7 @@ task:
env:
CIRRUS_DOCKER_CONTEXT: contrib/build-linux/appimage
depends_on:
- - "unittests: python 3.10"
+ - "unittests: py3.10"
task:
container:
@@ -347,7 +390,7 @@ task:
env:
OMIT_UNCLEAN_FILES: 1
depends_on:
- - "unittests: python 3.10"
+ - "unittests: py3.10"
task:
name: "check submodules"
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.