summaryrefslogtreecommitdiff
path: root/.config/qutebrowser/scripts/dev/ci
diff options
context:
space:
mode:
authorVito Graffagnino <vito@graffagnino.xyz>2020-09-08 18:10:49 +0100
committerVito Graffagnino <vito@graffagnino.xyz>2020-09-08 18:10:49 +0100
commit3b0142cedcde39e4c2097ecd916a870a3ced5ec6 (patch)
tree2116c49a845dfc0945778f2aa3e2118d72be428b /.config/qutebrowser/scripts/dev/ci
parent8cc927e930d5b6aafe3e9862a61e81705479a1b4 (diff)
Added the relevent parts of the .config directory. Alss add ssh config
Diffstat (limited to '.config/qutebrowser/scripts/dev/ci')
-rw-r--r--.config/qutebrowser/scripts/dev/ci/travis_backtrace.sh18
-rw-r--r--.config/qutebrowser/scripts/dev/ci/travis_install.sh108
-rw-r--r--.config/qutebrowser/scripts/dev/ci/travis_run.sh32
3 files changed, 158 insertions, 0 deletions
diff --git a/.config/qutebrowser/scripts/dev/ci/travis_backtrace.sh b/.config/qutebrowser/scripts/dev/ci/travis_backtrace.sh
new file mode 100644
index 0000000..227dde8
--- /dev/null
+++ b/.config/qutebrowser/scripts/dev/ci/travis_backtrace.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+#
+# Find all possible core files under current directory. Attempt
+# to determine exe using file(1) and dump stack trace with gdb.
+#
+
+case $TESTENV in
+ py3*-pyqt*)
+ exe=$(readlink -f ".tox/$TESTENV/bin/python")
+ full=
+ ;;
+ *)
+ echo "Skipping coredump analysis in testenv $TESTENV!"
+ exit 0
+ ;;
+esac
+
+find . \( -name "*.core" -o -name core \) -exec gdb --batch --quiet -ex "thread apply all bt $full" "$exe" {} \;
diff --git a/.config/qutebrowser/scripts/dev/ci/travis_install.sh b/.config/qutebrowser/scripts/dev/ci/travis_install.sh
new file mode 100644
index 0000000..18f5aa9
--- /dev/null
+++ b/.config/qutebrowser/scripts/dev/ci/travis_install.sh
@@ -0,0 +1,108 @@
+#!/bin/bash
+# vim: ft=sh fileencoding=utf-8 sts=4 sw=4 et:
+
+# Copyright 2016-2017 Florian Bruhin (The Compiler) <mail@qutebrowser.org>
+
+# This file is part of qutebrowser.
+#
+# qutebrowser is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# qutebrowser is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>.
+
+# Stolen from https://github.com/travis-ci/travis-build/blob/master/lib/travis/build/templates/header.sh
+# and adjusted to use ((...))
+travis_retry() {
+ local ANSI_RED='\033[31;1m'
+ local ANSI_RESET='\033[0m'
+ local result=0
+ local count=1
+ while (( count < 3 )); do
+ if (( result != 0 )); then
+ echo -e "\\n${ANSI_RED}The command \"$*\" failed. Retrying, $count of 3.${ANSI_RESET}\\n" >&2
+ fi
+ "$@"
+ result=$?
+ (( result == 0 )) && break
+ count=$(( count + 1 ))
+ sleep 1
+ done
+
+ if (( count > 3 )); then
+ echo -e "\\n${ANSI_RED}The command \"$*\" failed 3 times.${ANSI_RESET}\\n" >&2
+ fi
+
+ return $result
+}
+
+pip_install() {
+ travis_retry python3 -m pip install "$@"
+}
+
+npm_install() {
+ # Make sure npm is up-to-date first
+ travis_retry npm install -g npm
+ travis_retry npm install -g "$@"
+}
+
+check_pyqt() {
+ python3 <<EOF
+import sys
+from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, qVersion
+try:
+ from PyQt.sip import SIP_VERSION_STR
+except ModuleNotFoundError:
+ from sip import SIP_VERSION_STR
+
+print("Python {}".format(sys.version))
+print("PyQt5 {}".format(PYQT_VERSION_STR))
+print("Qt5 {} (runtime {})".format(QT_VERSION_STR, qVersion()))
+print("sip {}".format(SIP_VERSION_STR))
+EOF
+}
+
+set -e
+
+if [[ $DOCKER ]]; then
+ exit 0
+elif [[ $TRAVIS_OS_NAME == osx ]]; then
+ # Disable App Nap
+ defaults write NSGlobalDomain NSAppSleepDisabled -bool YES
+
+ curl -LO https://bootstrap.pypa.io/get-pip.py
+ sudo -H python get-pip.py
+
+ brew --version
+ brew update
+ brew upgrade python libyaml
+ brew install qt5 pyqt5
+
+ pip_install -r misc/requirements/requirements-tox.txt
+ python3 -m pip --version
+ tox --version
+ check_pyqt
+ exit 0
+fi
+
+case $TESTENV in
+ eslint)
+ npm_install eslint
+ ;;
+ shellcheck)
+ ;;
+ *)
+ pip_install pip
+ pip_install -r misc/requirements/requirements-tox.txt
+ if [[ $TESTENV == *-cov ]]; then
+ pip_install -r misc/requirements/requirements-codecov.txt
+ fi
+ ;;
+esac
diff --git a/.config/qutebrowser/scripts/dev/ci/travis_run.sh b/.config/qutebrowser/scripts/dev/ci/travis_run.sh
new file mode 100644
index 0000000..55ca7c1
--- /dev/null
+++ b/.config/qutebrowser/scripts/dev/ci/travis_run.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+if [[ $DOCKER ]]; then
+ docker run \
+ --privileged \
+ -v "$PWD:/outside" \
+ -e "QUTE_BDD_WEBENGINE=$QUTE_BDD_WEBENGINE" \
+ -e "DOCKER=$DOCKER" \
+ -e "CI=$CI" \
+ -e "TRAVIS=$TRAVIS" \
+ "qutebrowser/travis:$DOCKER"
+elif [[ $TESTENV == eslint ]]; then
+ # Can't run this via tox as we can't easily install tox in the javascript
+ # travis env
+ cd qutebrowser/javascript || exit 1
+ eslint --color --report-unused-disable-directives .
+elif [[ $TESTENV == shellcheck ]]; then
+ SCRIPTS=$( mktemp )
+ find scripts/dev/ -name '*.sh' >"$SCRIPTS"
+ find misc/userscripts/ -type f -exec grep -lE '[/ ][bd]ash$|[/ ]sh$|[/ ]ksh$' {} + >>"$SCRIPTS"
+ mapfile -t scripts <"$SCRIPTS"
+ rm -f "$SCRIPTS"
+ docker run \
+ -v "$PWD:/outside" \
+ -w /outside \
+ koalaman/shellcheck:latest "${scripts[@]}"
+else
+ args=()
+ [[ $TRAVIS_OS_NAME == osx ]] && args=('--qute-bdd-webengine' '--no-xvfb' 'tests/unit')
+
+ tox -e "$TESTENV" -- "${args[@]}"
+fi