summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2020-10-14 20:42:20 -0700
committerMicah Lee <micah@micahflee.com>2020-10-14 20:42:20 -0700
commit33d522d0dae819f12709299b5b9eaff32a16c5ab (patch)
tree3ff717835129a3ae56d0333d729af7c905283f1d
parent09e9ed387874b9b3681bdb0e05b2b80fee9f9955 (diff)
downloadonionshare-33d522d0dae819f12709299b5b9eaff32a16c5ab.tar.gz
onionshare-33d522d0dae819f12709299b5b9eaff32a16c5ab.zip
Change CircleCI to run CLI tests, then GUI tests
-rw-r--r--.circleci/config.yml69
-rw-r--r--.circleci/qt-installer-script.js75
-rw-r--r--cli/README.md2
-rw-r--r--desktop/README.md2
4 files changed, 35 insertions, 113 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 67d8ab0e..14655862 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -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
- 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
+ name: Install dependencies
+ command: |
+ sudo apt-get update
+ sudo apt-get -y install tor obfs4proxy
+ pip install poetry
+ cd ~/repo/cli
+ poetry install
- run:
- name: Install dependencies
+ name: Run tests
command: |
- sudo apt-get update
- sudo apt-get install -y python3-pip xvfb tor obfs4proxy
- sudo pip3 install poetry flake8
- poetry install
+ cd ~/repo/cli
+ poetry run pytest -v ./tests
+
+ test-gui:
+ docker:
+ - image: circleci/python:3.8-buster
+
+ working_directory: ~/repo
+
+ steps:
+ - checkout
- run:
- name: Run flake 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
+ name: Install dependencies
+ command: |
+ sudo apt-get update
+ 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 unit tests
+ name: Run 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
diff --git a/.circleci/qt-installer-script.js b/.circleci/qt-installer-script.js
deleted file mode 100644
index d5860b68..00000000
--- a/.circleci/qt-installer-script.js
+++ /dev/null
@@ -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()
-}
diff --git a/cli/README.md b/cli/README.md
index 3ebfd1bf..d7858404 100644
--- a/cli/README.md
+++ b/cli/README.md
@@ -56,7 +56,7 @@ poetry run onionshare-cli
To run tests:
```
-poetry run pytest -vvv ./tests
+poetry run pytest -v ./tests
```
### Making a release
diff --git a/desktop/README.md b/desktop/README.md
index 283b7567..96306cf4 100644
--- a/desktop/README.md
+++ b/desktop/README.md
@@ -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