-
Notifications
You must be signed in to change notification settings - Fork 11
/
.travis.yml
201 lines (178 loc) · 7.97 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# check syntax using:
# https://config.travis-ci.com/explore
# have commit skip build by adding '[skip travis]' to commit message.
os: linux
language: python
cache: pip
#I would like to build and test the maint-1.6 and trunk/default
#but we need different environments for these:
# maint-1.6 only python 2, install only psycopg2 version with support for
# psycopg1
branches:
except:
- /^dependabot\/.*$/
# only:
# - default
# - maint-1.6
dist: focal
python:
- 2.7
# - 3.10.4
# - 3.9
# - 3.8
# - 3.6
# - 3.11-dev
# - nightly
# - pypy3
services:
- mysql
- postgresql
- redis
jobs:
allow_failures: # releases not ready for prime time yet.
- python: nightly
- python: 3.11-dev
- python: pypy3
addons:
apt:
#sources:
# - sourceline: ppa:xapian-backports/ppa
packages:
# Required to build/install the xapian-binding
- libxapian-dev
# Required to install gpg
- swig
# Required to build gpgme.
- gpgsm
- libgpgme-dev
before_install:
# deal with setuptools error:
# pkg_resources.extern.packaging.version.InvalidVersion: Invalid
# version: '0.23ubuntu1' (package: distro-info)
- sudo apt-get remove distro-info
# pin setuptools to try to get gpgme to build
- pip install "setuptools<66"
- if [[ $TRAVIS_PYTHON_VERSION == "3."* ]]; then sudo apt-get install python3-gpg; fi
# build xapian
- echo "$TRAVIS_PYTHON_VERSION"
# Sphinx required to build the xapian python bindings. Use 1.8.5 on
# older python and newest on newer.
- if [[ $TRAVIS_PYTHON_VERSION == "2."* ]]; then pip install sphinx==1.8.5; fi
- if [[ $TRAVIS_PYTHON_VERSION == '3.'* ]] ; then pip install sphinx; fi
- if [[ $TRAVIS_PYTHON_VERSION == "nightly" ]]; then pip install sphinx; fi
- XAPIAN_VER=$(dpkg -l libxapian-dev | tail -n 1 | awk '{print $3}' | cut -d '-' -f 1); echo $XAPIAN_VER
# force specific version 1.4.19 for python 3.12 for debugging
# #REMOVE# - if [[ $TRAVIS_PYTHON_VERSION == "nightly" ]]; then XAPIAN_VER=1.4.19; fi; echo $XAPIAN_VER
- cd /tmp
- curl -s -O https://oligarchy.co.uk/xapian/$XAPIAN_VER/xapian-bindings-$XAPIAN_VER.tar.xz
- tar -Jxvf xapian-bindings-$XAPIAN_VER.tar.xz
- cd xapian-bindings-$XAPIAN_VER/
- echo $TRAVIS_PYTHON_VERSION
- if [[ $TRAVIS_PYTHON_VERSION == "2."* ]]; then ./configure --prefix=$VIRTUAL_ENV --with-python --disable-documentation; fi
# edit the configure script. distutils.sysconfig.get_config_vars('SO')
# doesn't work for 3.11 or newer.
# Change distutils.sysconfig... to just sysconfig and SO to EXT_SUFFIX
# to get valid value.
- if [[ $TRAVIS_PYTHON_VERSION == "3."* ]]; then sed -i -e '/PYTHON3_SO=/s/distutils\.//g' -e '/PYTHON3_SO=/s/"SO"/"EXT_SUFFIX"/g' configure; ./configure --prefix=$VIRTUAL_ENV --with-python3 --disable-documentation; fi
- if [[ $TRAVIS_PYTHON_VERSION == "nightly" ]]; then sed -i -e '/PYTHON3_SO=/s/distutils\.//g' -e '/PYTHON3_SO=/s/"SO"/"EXT_SUFFIX"/g' configure; ./configure --prefix=$VIRTUAL_ENV --with-python3 --disable-documentation; fi
- if [[ $TRAVIS_PYTHON_VERSION == "pypy3" ]]; then sed -i -e '/PYTHON3_SO=/s/distutils\.//g' -e '/PYTHON3_SO=/s/"SO"/"EXT_SUFFIX"/g' configure; ./configure --prefix=$VIRTUAL_ENV --with-python3 --disable-documentation; fi
- case "$TRAVIS_PYTHON_VERSION" in disable) echo skipping xapian build;; *) make && make install; esac
- PATH=$VIRTUAL_ENV/bin:$PATH
# libgpg-error
- LIBGPG_ERROR_VERSION=1.43
- cd /tmp
- curl -s -O https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-$LIBGPG_ERROR_VERSION.tar.bz2
- tar -jxvf libgpg-error-$LIBGPG_ERROR_VERSION.tar.bz2
- cd libgpg-error-$LIBGPG_ERROR_VERSION
- ./configure --prefix=$VIRTUAL_ENV
- make && make install
# libassuan
- LIBASSUAN_VERSION=2.5.5
- cd /tmp
- curl -s -O https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-$LIBASSUAN_VERSION.tar.bz2
- tar -jxvf libassuan-$LIBASSUAN_VERSION.tar.bz2
- cd libassuan-$LIBASSUAN_VERSION
- ./configure --prefix=$VIRTUAL_ENV
- make && make install
# gpgme
#- GPGME_VERSION=1.18.0
#- cd /tmp
- pip install "setuptools<66"
#- curl -s -O https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-$GPGME_VERSION.tar.bz2
#- tar -jxf gpgme-$GPGME_VERSION.tar.bz2
#- cd gpgme-$GPGME_VERSION
#- ./configure --prefix=$VIRTUAL_ENV
#- make && make install
# change back to the checked out repository directory
- cd $TRAVIS_BUILD_DIR
install:
- if [[ $TRAVIS_PYTHON_VERSION == "3.4"* ]]; then pip install mysqlclient==1.3.14; fi
- if [[ $TRAVIS_PYTHON_VERSION != "3.4"* ]]; then pip install mysqlclient; fi
# https://issues.roundup-tracker.org/issue2551267
- if [[ $TRAVIS_PYTHON_VERSION == "3."* ]]; then pip install gpg; fi
- if [[ $TRAVIS_PYTHON_VERSION == "2."* ]]; then pip install scandir; fi
- pip install redis
- pip install pytz whoosh pyjwt requests
- pip install jinja2
- pip install psycopg2
# note pytest-env is not needed for redis password as there is
# no password on CI's redis.
- pip install pytest-cov
- pip install beautifulsoup4
- if [[ $TRAVIS_PYTHON_VERSION != "3.4"* ]]; then pip install docutils; fi
- if [[ $TRAVIS_PYTHON_VERSION != "3.4"* ]]; then pip install mistune==0.8.4; fi
- if [[ $TRAVIS_PYTHON_VERSION != "3.4"* && $TRAVIS_PYTHON_VERSION != "2."* ]]; then pip install Markdown; fi
- pip install markdown2
- pip install brotli==1.0.9
# zstd fails to build under python nightly aborting test.
# allow testing to still happen if the optional package doesn't install.
- pip install zstd || true
before_script:
# set up mysql database
- sudo sed -i -e '/^\[mysqld\]/,/^\[mysql/s/^max_allowed_packet.*/max_allowed_packet = 500M/' /etc/mysql/my.cnf
- cat /etc/mysql/my.cnf
- sudo service mysql restart
- mysql -u root -e 'CREATE USER "rounduptest"@"localhost" IDENTIFIED WITH mysql_native_password BY "rounduptest"; GRANT ALL on rounduptest.* TO "rounduptest"@"localhost";'
# Disable fsync for speed, don't care about data durability when testing
- sudo sed -i -e '$a\fsync = off' /etc/postgresql/*/*/postgresql.conf
- sudo service postgresql restart; sleep 30
# set up postgresql database
- psql -c "CREATE ROLE rounduptest WITH CREATEDB LOGIN PASSWORD 'rounduptest';" -U postgres
- psql -c "CREATE ROLE rounduptest_schema LOGIN PASSWORD 'rounduptest';" -U postgres
- psql -c "CREATE DATABASE rounduptest_schema;" -U postgres
- psql -c "GRANT CREATE ON DATABASE rounduptest_schema TO rounduptest_schema;" -U postgres
# build the .mo translation files and install them into a tree
# (locale/locale under roundup directory root)
# suitable for use by gettext.
- (cd locale; make local_install; ls -lR locale/de/LC_MESSAGES)
script:
- PATH=$VIRTUAL_ENV/bin:$PATH
- export LD_LIBRARY_PATH=$VIRTUAL_ENV/lib:$LD_LIBRARY_PATH
- python -c "import sys; print('python version ', sys.version)"
- if [[ "$TRAVIS_PYTHON_VERSION" != "2."* ]]; then
python -m pytest -r a \
--durations=20 \
-W default \
-W "ignore:SelectableGroups:DeprecationWarning" \
-W "ignore:the imp module:DeprecationWarning:gpg.gpgme:15" \
-W "ignore:'U' mode::docutils.io" \
-W "ignore:unclosed:ResourceWarning:roundup.roundup.demo" \
-W "ignore:unclosed file:ResourceWarning:enum" \
-v --maxfail=5 test/ --cov=roundup;
fi
- if [[ "$TRAVIS_PYTHON_VERSION" == "2."* ]]; then
python -m pytest -v -r a --maxfail=5 test/ --cov=roundup;
fi
- python -m pip install sphinx-tabs
- ./setup.py build_doc
after_success:
# from https://docs.codecov.com/docs/codecov-uploader#integrity-checking-the-uploader
- curl https://keybase.io/codecovsecurity/pgp_keys.asc | \
gpg --no-default-keyring --keyring trustedkeys.gpg --import # One-time step
- curl -Os https://uploader.codecov.io/latest/linux/codecov
- curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
- curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
- gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
- shasum -a 256 -c codecov.SHA256SUM
- chmod +x codecov
- ./codecov -t ${CODECOV_TOKEN}