Skip to content

Commit 94cb6ac

Browse files
committed
PYTHON-1966 Test with custom default encoding on Python 2
1 parent eda4fbb commit 94cb6ac

File tree

3 files changed

+52
-9
lines changed

3 files changed

+52
-9
lines changed

.evergreen/config.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,9 @@ functions:
339339
export LIBMONGOCRYPT_URL="${libmongocrypt_url}"
340340
export TEST_ENCRYPTION=1
341341
fi
342+
if [ -n "${SETDEFAULTENCODING}" ]; then
343+
export SETDEFAULTENCODING="${SETDEFAULTENCODING}"
344+
fi
342345
343346
PYTHON_BINARY=${PYTHON_BINARY} \
344347
GREEN_FRAMEWORK=${GREEN_FRAMEWORK} \
@@ -1097,6 +1100,16 @@ axes:
10971100
variables:
10981101
test_encryption: true
10991102

1103+
# Run setdefaultencoding before running the test suite?
1104+
- id: setdefaultencoding
1105+
display_name: "setdefaultencoding"
1106+
values:
1107+
- id: "setdefaultencoding"
1108+
display_name: "setdefaultencoding"
1109+
tags: ["setdefaultencoding_tag"]
1110+
variables:
1111+
SETDEFAULTENCODING: "cp1251"
1112+
11001113
buildvariants:
11011114
- matrix_name: "tests-all"
11021115
matrix_spec:
@@ -1529,6 +1542,16 @@ buildvariants:
15291542
tasks:
15301543
- ".latest"
15311544

1545+
# setdefaultencoding tests on RHEL 6.2 (x86_64) with Python 2.7.
1546+
- matrix_name: "test-setdefaultencoding"
1547+
matrix_spec:
1548+
platform: rhel62
1549+
setdefaultencoding: "*"
1550+
python-version: "2.7"
1551+
display_name: "setdefaultencoding ${python-version} ${platform}"
1552+
tasks:
1553+
- "test-latest-standalone"
1554+
15321555
- matrix_name: "test-linux-enterprise-auth"
15331556
matrix_spec:
15341557
platform: rhel62

.evergreen/run-tests.sh

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@
22
set -o errexit # Exit the script with error if any of the commands fail
33

44
# Supported/used environment variables:
5-
# SET_XTRACE_ON Set to non-empty to write all commands first to stderr.
6-
# AUTH Set to enable authentication. Defaults to "noauth"
7-
# SSL Set to enable SSL. Defaults to "nossl"
8-
# PYTHON_BINARY The Python version to use. Defaults to whatever is available
9-
# GREEN_FRAMEWORK The green framework to test with, if any.
10-
# C_EXTENSIONS Pass --no_ext to setup.py, or not.
11-
# COVERAGE If non-empty, run the test suite with coverage.
12-
# TEST_ENCRYPTION If non-empty, install pymongocrypt.
13-
# LIBMONGOCRYPT_URL The URL to download libmongocrypt.
5+
# SET_XTRACE_ON Set to non-empty to write all commands first to stderr.
6+
# AUTH Set to enable authentication. Defaults to "noauth"
7+
# SSL Set to enable SSL. Defaults to "nossl"
8+
# PYTHON_BINARY The Python version to use. Defaults to whatever is available
9+
# GREEN_FRAMEWORK The green framework to test with, if any.
10+
# C_EXTENSIONS Pass --no_ext to setup.py, or not.
11+
# COVERAGE If non-empty, run the test suite with coverage.
12+
# TEST_ENCRYPTION If non-empty, install pymongocrypt.
13+
# LIBMONGOCRYPT_URL The URL to download libmongocrypt.
14+
# SETDEFAULTENCODING The encoding to set via sys.setdefaultencoding.
1415

1516
if [ -n "${SET_XTRACE_ON}" ]; then
1617
set -o xtrace
@@ -28,6 +29,7 @@ COVERAGE=${COVERAGE:-}
2829
COMPRESSORS=${COMPRESSORS:-}
2930
TEST_ENCRYPTION=${TEST_ENCRYPTION:-}
3031
LIBMONGOCRYPT_URL=${LIBMONGOCRYPT_URL:-}
32+
SETDEFAULTENCODING=${SETDEFAULTENCODING:-}
3133

3234
if [ -n "$COMPRESSORS" ]; then
3335
export COMPRESSORS=$COMPRESSORS
@@ -72,6 +74,17 @@ elif [ "$COMPRESSORS" = "zstd" ]; then
7274
trap "deactivate; rm -rf zstdtest" EXIT HUP
7375
pip install zstandard
7476
PYTHON=python
77+
elif [ -n "$SETDEFAULTENCODING" ]; then
78+
$PYTHON_BINARY -m virtualenv --system-site-packages --never-download encodingtest
79+
. encodingtest/bin/activate
80+
trap "deactivate; rm -rf encodingtest" EXIT HUP
81+
mkdir test-sitecustomize
82+
cat <<EOT > test-sitecustomize/sitecustomize.py
83+
import sys
84+
sys.setdefaultencoding("$SETDEFAULTENCODING")
85+
EOT
86+
export PYTHONPATH="$(pwd)/test-sitecustomize"
87+
PYTHON=python
7588
else
7689
PYTHON="$PYTHON_BINARY"
7790
fi

test/test_client_context.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ def test_enableTestCommands_is_disabled(self):
3838
'enableTestCommands must be disabled when '
3939
'PYMONGO_DISABLE_TEST_COMMANDS is set.')
4040

41+
def test_setdefaultencoding_worked(self):
42+
if 'SETDEFAULTENCODING' not in os.environ:
43+
raise SkipTest('SETDEFAULTENCODING is not set')
44+
45+
self.assertEqual(
46+
sys.getdefaultencoding(), os.environ['SETDEFAULTENCODING'])
47+
4148

4249
if __name__ == "__main__":
4350
unittest.main()

0 commit comments

Comments
 (0)