From 33d522d0dae819f12709299b5b9eaff32a16c5ab Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Wed, 14 Oct 2020 20:42:20 -0700 Subject: Change CircleCI to run CLI tests, then GUI tests --- .circleci/config.yml | 69 ++++++++++++++++++------------------ .circleci/qt-installer-script.js | 75 ---------------------------------------- cli/README.md | 2 +- desktop/README.md | 2 +- 4 files changed, 35 insertions(+), 113 deletions(-) delete mode 100644 .circleci/qt-installer-script.js 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 -- cgit v1.2.3-54-g00ecf