From cfff46ff9becdbe5cf48816870e625ed253ecc57 Mon Sep 17 00:00:00 2001 From: drebs Date: Sun, 17 Sep 2017 12:08:25 -0300 Subject: [refactor] move tests to root of repository Tests entrypoint was in a testing/ subfolder in the root of the repository. This was made mainly because we had some common files for tests and we didn't want to ship them (files in testing/test_soledad, which is itself a python package. This sometimes causes errors when loading tests (it seems setuptools is confused with having one python package in a subdirectory of another). This commit moves the tests entrypoint to the root of the repository. Closes: #8952 --- scripts/docker/Dockerfile | 33 ++++++++++++++++++++++++ scripts/testing/check-pysqlcipher.py | 23 +++++++++++++++++ scripts/testing/ensure-pysqlcipher-has-usleep.sh | 13 ++++++++++ 3 files changed, 69 insertions(+) create mode 100644 scripts/docker/Dockerfile create mode 100755 scripts/testing/check-pysqlcipher.py create mode 100755 scripts/testing/ensure-pysqlcipher-has-usleep.sh (limited to 'scripts') diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile new file mode 100644 index 00000000..2dea3ec8 --- /dev/null +++ b/scripts/docker/Dockerfile @@ -0,0 +1,33 @@ +# start with a fresh debian image +# we use backports because of libsqlcipher-dev +FROM 0xacab.org:4567/leap/docker/debian:jessie_amd64 + +RUN apt-get update +RUN apt-get -y dist-upgrade + +# needed to build python twisted module +RUN apt-get -y install --no-install-recommends libpython2.7-dev \ + # add unbuffer and ts for timestamping + moreutils expect tcl8.6 \ + # needed to build python cryptography module + libssl-dev libffi-dev \ + # needed to build pysqlcipher + libsqlcipher-dev \ + # needed to support keymanager + libsqlite3-dev \ + # install pip, so later we can install tox + python-pip \ + # used to show connection to couchdb during CI + curl \ + # needed to build pysqlcipher module + build-essential \ + # needed to build docker images + docker.io + +# We need git from backports because it has +# the "%cI: committer date, strict ISO 8601 format" +# pretty format which is used by pytest-benchmark +RUN apt-get -y install -t jessie-backports git + +RUN pip install -U pip +RUN pip install tox diff --git a/scripts/testing/check-pysqlcipher.py b/scripts/testing/check-pysqlcipher.py new file mode 100755 index 00000000..4202b13b --- /dev/null +++ b/scripts/testing/check-pysqlcipher.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python + +import os +import tempfile + +from pysqlcipher import dbapi2 + + +def have_usleep(): + fname = tempfile.mktemp() + db = dbapi2.connect(fname) + cursor = db.cursor() + cursor.execute('PRAGMA compile_options;') + options = map(lambda t: t[0], cursor.fetchall()) + db.close() + os.unlink(fname) + return u'HAVE_USLEEP' in options + + +if __name__ == '__main__': + if not have_usleep(): + raise Exception('pysqlcipher was not built with HAVE_USLEEP flag.') + print "All ok, pysqlcipher was built with HAVE_USLEEP flag. :-)" diff --git a/scripts/testing/ensure-pysqlcipher-has-usleep.sh b/scripts/testing/ensure-pysqlcipher-has-usleep.sh new file mode 100755 index 00000000..d3d93d86 --- /dev/null +++ b/scripts/testing/ensure-pysqlcipher-has-usleep.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# make sure that the current installed version of pysqlcipher has the +# HAVE_USLEEP flag set so we don't have problems with concurrent db access. + +set -e + +install_bundled_pysqlcipher() { + pip uninstall -y pysqlcipher + pip install --install-option="--bundled" pysqlcipher +} + +./check-pysqlcipher.py || (install_bundled_pysqlcipher && ./check-pysqlcipher.py) -- cgit v1.2.3