mirror of
https://github.com/onionshare/onionshare.git
synced 2025-01-10 03:37:28 -03:00
Change CircleCI to run CLI tests, then GUI tests
This commit is contained in:
parent
09e9ed3878
commit
33d522d0da
4 changed files with 38 additions and 116 deletions
|
@ -8,14 +8,13 @@ workflows:
|
|||
version: 2
|
||||
test:
|
||||
jobs:
|
||||
- test-3.6
|
||||
- test-3.7
|
||||
- test-3.8
|
||||
- test-cli
|
||||
- test-gui
|
||||
|
||||
jobs:
|
||||
test-3.6: &test-template
|
||||
test-cli:
|
||||
docker:
|
||||
- image: circleci/python:3.6-buster
|
||||
- image: circleci/python:3.8-buster
|
||||
|
||||
working_directory: ~/repo
|
||||
|
||||
|
@ -23,42 +22,40 @@ jobs:
|
|||
- checkout
|
||||
|
||||
- run:
|
||||
name: Install Qt5 binaries
|
||||
name: Install dependencies
|
||||
command: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install xvfb libdbus-1-3 libxkbcommon-x11-0 libxkbcommon-x11-dev
|
||||
cd ~/
|
||||
wget https://download.qt.io/official_releases/qt/5.14/5.14.0/qt-opensource-linux-x64-5.14.0.run
|
||||
chmod +x qt-opensource-linux-x64-5.14.0.run
|
||||
xvfb-run ./qt-opensource-linux-x64-5.14.0.run --script ~/repo/.circleci/qt-installer-script.js --platform minimal --verbose
|
||||
sudo apt-get -y install tor obfs4proxy
|
||||
pip install poetry
|
||||
cd ~/repo/cli
|
||||
poetry install
|
||||
|
||||
- run:
|
||||
name: Run tests
|
||||
command: |
|
||||
cd ~/repo/cli
|
||||
poetry run pytest -v ./tests
|
||||
|
||||
test-gui:
|
||||
docker:
|
||||
- image: circleci/python:3.8-buster
|
||||
|
||||
working_directory: ~/repo
|
||||
|
||||
steps:
|
||||
- checkout
|
||||
|
||||
- run:
|
||||
name: Install dependencies
|
||||
command: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y python3-pip xvfb tor obfs4proxy
|
||||
sudo pip3 install poetry flake8
|
||||
poetry install
|
||||
sudo apt-get install -y xvfb tor obfs4proxy gcc python3-dev
|
||||
cd ~/repo/desktop
|
||||
pip install briefcase pytest pytest-briefcase pytest-faulthandler pytest-qt
|
||||
pip install $(python -c 'import toml; print(" ".join(toml.loads(open("pyproject.toml").read())["tool"]["briefcase"]["app"]["onionshare"]["requires"]))')
|
||||
|
||||
- run:
|
||||
name: Run flake tests
|
||||
name: Run tests
|
||||
command: |
|
||||
# stop the build if there are Python syntax errors or undefined names
|
||||
flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
|
||||
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
|
||||
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
|
||||
|
||||
- run:
|
||||
name: Run unit tests
|
||||
command: |
|
||||
xvfb-run -s "-screen 0 1280x1024x24" poetry run ./tests/run.sh --rungui
|
||||
|
||||
test-3.7:
|
||||
<<: *test-template
|
||||
docker:
|
||||
- image: circleci/python:3.7-buster
|
||||
|
||||
test-3.8:
|
||||
<<: *test-template
|
||||
docker:
|
||||
- image: circleci/python:3.8-buster
|
||||
cd ~/repo/desktop
|
||||
xvfb-run ./tests/run.sh
|
||||
|
|
|
@ -1,75 +0,0 @@
|
|||
function Controller() {
|
||||
installer.installationFinished.connect(proceed)
|
||||
}
|
||||
|
||||
function logCurrentPage() {
|
||||
var pageName = page().objectName
|
||||
var pagePrettyTitle = page().title
|
||||
console.log("At page: " + pageName + " ('" + pagePrettyTitle + "')")
|
||||
}
|
||||
|
||||
function page() {
|
||||
return gui.currentPageWidget()
|
||||
}
|
||||
|
||||
function proceed(button, delay) {
|
||||
gui.clickButton(button || buttons.NextButton, delay)
|
||||
}
|
||||
|
||||
Controller.prototype.WelcomePageCallback = function() {
|
||||
logCurrentPage()
|
||||
proceed(buttons.NextButton, 2000)
|
||||
}
|
||||
|
||||
Controller.prototype.CredentialsPageCallback = function() {
|
||||
logCurrentPage()
|
||||
page().loginWidget.EmailLineEdit.text = installer.environmentVariable("QT_EMAIL");
|
||||
page().loginWidget.PasswordLineEdit.text = installer.environmentVariable("QT_PASSWORD");
|
||||
proceed()
|
||||
}
|
||||
|
||||
Controller.prototype.IntroductionPageCallback = function() {
|
||||
logCurrentPage()
|
||||
proceed()
|
||||
}
|
||||
|
||||
Controller.prototype.TargetDirectoryPageCallback = function() {
|
||||
logCurrentPage()
|
||||
proceed()
|
||||
}
|
||||
|
||||
Controller.prototype.ComponentSelectionPageCallback = function() {
|
||||
logCurrentPage()
|
||||
page().deselectAll()
|
||||
page().selectComponent("qt.qt5.5140.gcc_64")
|
||||
proceed()
|
||||
}
|
||||
|
||||
Controller.prototype.LicenseAgreementPageCallback = function() {
|
||||
logCurrentPage()
|
||||
page().AcceptLicenseRadioButton.checked = true
|
||||
gui.clickButton(buttons.NextButton)
|
||||
}
|
||||
|
||||
Controller.prototype.ReadyForInstallationPageCallback = function() {
|
||||
logCurrentPage()
|
||||
proceed()
|
||||
}
|
||||
|
||||
Controller.prototype.PerformInstallationPageCallback = function() {
|
||||
logCurrentPage()
|
||||
}
|
||||
|
||||
Controller.prototype.FinishedPageCallback = function() {
|
||||
logCurrentPage()
|
||||
page().LaunchQtCreatorCheckBoxForm.launchQtCreatorCheckBox.checked = false
|
||||
proceed(buttons.FinishButton)
|
||||
}
|
||||
|
||||
Controller.prototype.DynamicTelemetryPluginFormCallback = function() {
|
||||
logCurrentPage()
|
||||
console.log(Object.keys(page().TelemetryPluginForm.statisticGroupBox))
|
||||
var radioButtons = page().TelemetryPluginForm.statisticGroupBox
|
||||
radioButtons.disableStatisticRadioButton.checked = true
|
||||
proceed()
|
||||
}
|
|
@ -56,7 +56,7 @@ poetry run onionshare-cli
|
|||
To run tests:
|
||||
|
||||
```
|
||||
poetry run pytest -vvv ./tests
|
||||
poetry run pytest -v ./tests
|
||||
```
|
||||
|
||||
### Making a release
|
||||
|
|
|
@ -58,7 +58,7 @@ Then run the tests:
|
|||
./tests/run.sh
|
||||
```
|
||||
|
||||
If you want to run tests while hiding the GUI, you must have the `xorg-x11-server-Xvfb` package installed, and then:
|
||||
If you want to run tests while hiding the GUI, you must have the `xvfb` package installed, and then:
|
||||
|
||||
```sh
|
||||
xvfb-run ./tests/run.sh
|
||||
|
|
Loading…
Reference in a new issue