Mercurial > p > roundup > code
view .circleci/config.yml @ 5653:ba67e397f063
Fix string/bytes issues under python 3.
1) cgi/client.py: override cgi.FieldStorage's make_file so that file
is always created in binary/byte mode. This means that json (and
xml) are bytes not strings.
2) rest.py: try harder to find dicttoxml in roundup directory or on
sys.path. This just worked under python 2 but python 3 only
searches sys.path by default and does not search relative like
python 2.
3) rest.py: replace headers.getheader call removed from python 3 with
equivalent code.
4) rest.py: make value returned from dispatch into bytes not string.
5) test/caseinsensitivedict.py, test/test_CaseInsensitiveDict.py:
get code from stackoverflow that implements a case insensitive key
dict. So dict['foo'], dict['Foo'] are the same entry. Used for
looking up headers in mocked http rewuset header array.
6) test/rest_common.py: rework tests for etags and rest to properly
supply bytes to the called routines. Calls to s2b and b2s and use
of BytesIO and overriding make_file in cgi.FieldStorage to try to
make sure it works under python 3.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 17 Mar 2019 19:28:26 -0400 |
| parents | 851d4306300d |
| children | 7017ea98930f |
line wrap: on
line source
version: 2 jobs: build: docker: - image: circleci/buildpack-deps:18.04 - image: circleci/postgres:9.6-alpine-ram - image: circleci/mysql:5.7-ram environment: MYSQL_ALLOW_EMPTY_PASSWORD=true MYSQL_ROOT_HOST=% working_directory: ~/repo steps: - checkout - run: name: install packages command: | sudo apt-get update sudo apt-get install -y libgpgme-dev mysql-client-core-5.7 postgresql-client python3-gpg python3-mysqldb python3-pip python3-psycopg2 python3-pytest python3-pytest-cov python3-tz python3-venv python3-whoosh python3-xapian swig - run: name: install dependencies command: | python3 -m venv venv . venv/bin/activate pip3 install codecov - run: name: setup databases command: | psql -d postgresql://root@localhost/circle_test -c "CREATE ROLE rounduptest WITH CREATEDB LOGIN PASSWORD 'rounduptest';" mysql -h 127.0.0.1 -u root -e "GRANT ALL ON rounduptest.* TO rounduptest@'127.0.0.1' IDENTIFIED BY \"rounduptest\";" # patch host to 127.0.0.1 to force TCP connection to MySQL sed -i -e 's/\(config[.]RDBMS_HOST =\) "localhost"/\1 "127.0.0.1"/' test/db_test_base.py # HACK: workaround mysql bug: http://bugs.mysql.com/bug.php?id=74901 # needed for test_mysql.mysqlDBTest.testFilteringSpecialChars sed -i -e 's/CREATE DATABASE \%s/CREATE DATABASE \%s COLLATE utf8_general_ci/' roundup/backends/back_mysql.py - run: name: run tests command: | . venv/bin/activate py.test-3 -v test/ --cov=roundup environment: MYSQL_HOST: 127.0.0.1 - run: name: run coverage command: | codecov
