From 4c33c5ed97e565a985afd059adca71bff72053fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=80lex=20Fiestas?= Date: Fri, 17 Mar 2017 18:45:30 +0100 Subject: [PATCH] Make running the tests like in travis-ci easier (#92) * Move testing logic from travis.yml to tests-ci.sh script This way we can share this logic between travis CI and other systems like for example a docker container. * Move logic to create a testing environment to tests-environment.sh As with the logic to execute the tests, this way we can share this logic with other systems to tests linuxdeployqt. * Install Qt also in tests-environment.sh No reason to keep it separate from the rest as far as I know * Wait until the X server is up and running Otherwise we get into a racy situation. * Add Dockerfile to create a testing container This container tries to emulate the environment we have in travis-ci, this way we can test whatever is failing on the CI locally. --- .travis.yml | 32 ++------------------------------ Dockerfile | 16 ++++++++++++++++ tests/tests-ci.sh | 28 ++++++++++++++++++++++++++++ tests/tests-environment.sh | 20 ++++++++++++++++++++ 4 files changed, 66 insertions(+), 30 deletions(-) create mode 100644 Dockerfile create mode 100755 tests/tests-ci.sh create mode 100755 tests/tests-environment.sh diff --git a/.travis.yml b/.travis.yml index 69f0d4b..05c8ef3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,38 +9,10 @@ env: - DISPLAY=:99 before_install: - - sudo add-apt-repository --yes ppa:beineri/opt-qt58-trusty - - sudo apt-get update -qq - - git clone https://github.com/NixOS/patchelf.git - - cd patchelf - - bash ./bootstrap.sh - - ./configure - - make -j2 - - sudo make install - - cd - - - sudo wget -c "https://github.com/probonopd/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" -O /usr/local/bin/appimagetool - - sudo chmod a+x /usr/local/bin/appimagetool - -install: - - sudo apt-get -y install qt58base qt58declarative qt58webengine binutils xpra + - ./tests/tests-environment.sh script: - - source /opt/qt*/bin/qt*-env.sh - - /opt/qt*/bin/qmake linuxdeployqt.pro - - - make -j2 - - - mkdir -p linuxdeployqt.AppDir/usr/bin/ - - cp /usr/local/bin/patchelf linuxdeployqt.AppDir/usr/bin/ - - cp /usr/local/bin/appimagetool linuxdeployqt.AppDir/usr/bin/ - - find linuxdeployqt.AppDir/ - - export VERSION=continuous - - cp ./linuxdeployqt/linuxdeployqt linuxdeployqt.AppDir/usr/bin/ - - ./linuxdeployqt/linuxdeployqt linuxdeployqt.AppDir/linuxdeployqt.desktop -verbose=3 -appimage - - ls -lh - - find *.AppDir - - xpra start :99 - - bash -e tests/tests.sh + - ./tests/tests-ci.sh after_success: - wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..df0b718 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +# This container amins to offer a testing environment similar to the one we are +# creating in travis-ci so we can easily reproduce issues detected on our CI +# locally +# +# To use it, simply execute the container like this: +# docker run --rm -ti --privileged -v /path/to/linuxdeployqt:/linuxdeployqt bash +# and then execute tests/tests-ci.sh + +FROM ubuntu:trusty + +RUN apt-get update && apt-get -y install software-properties-common wget build-essential \ + autoconf git fuse libgl1-mesa-dev psmisc + +COPY tests/tests-environment.sh / + +RUN /tests-environment.sh diff --git a/tests/tests-ci.sh b/tests/tests-ci.sh new file mode 100755 index 0000000..942d284 --- /dev/null +++ b/tests/tests-ci.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +set -x + +source /opt/qt*/bin/qt*-env.sh +/opt/qt*/bin/qmake linuxdeployqt.pro +make -j2 + +mkdir -p linuxdeployqt.AppDir/usr/bin/ +cp /usr/local/bin/patchelf linuxdeployqt.AppDir/usr/bin/ +cp /usr/local/bin/appimagetool linuxdeployqt.AppDir/usr/bin/ +find linuxdeployqt.AppDir/ +export VERSION=continuous +cp ./linuxdeployqt/linuxdeployqt linuxdeployqt.AppDir/usr/bin/ +./linuxdeployqt/linuxdeployqt linuxdeployqt.AppDir/linuxdeployqt.desktop -verbose=3 -appimage +ls -lh +find *.AppDir +xpra start :99 + +export DISPLAY=:99 + +until xset -q +do + echo "Waiting for X server to start..." + sleep 1; +done + +bash -e tests/tests.sh diff --git a/tests/tests-environment.sh b/tests/tests-environment.sh new file mode 100755 index 0000000..6777b2c --- /dev/null +++ b/tests/tests-environment.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -e + +sudo add-apt-repository --yes ppa:beineri/opt-qt58-trusty +sudo apt-get update -qq + +git clone https://github.com/NixOS/patchelf.git +cd patchelf +bash ./bootstrap.sh +./configure +make -j2 +sudo make install + +cd - + +sudo wget -c "https://github.com/probonopd/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" -O /usr/local/bin/appimagetool +sudo chmod a+x /usr/local/bin/appimagetool + +sudo apt-get -y install qt58base qt58declarative qt58webengine binutils xpra