Only real problem is in json serialization tests:
Python 3.6 [changed][1] the json serialization
error message to use the object's class name
rather than its repr. E.g.:
"Decimal('19.99') is not JSON serializable"
becomes:
"Object of type 'Decimal' is not JSON serializable"
Update tests that looked for specific serialization
error message to just look for the word "Decimal"
instead. (Works with all Python versions.)
[1]: https://bugs.python.org/issue26623
To conserve our ESP test accounts' send quotas, don't run
the live API integration tests 13 times in every Travis run.
Instead, just run them twice, on a representative set
of Python/Django combinations:
* Once on Python 2.7 (currently with Django 1.8)
* Once on Python 3.x (currently 3.5 with Django 1.9)
(Prep for running weekly tests on Travis cron.)
The *non*-integration tests still run on all combos.
* Introduce RUN_LIVE_TESTS environment var to control
whether live API integration test cases should run.
Default True, except in Travis-CI runs default False.
* Enable RUN_LIVE_TESTS in .travis.yml matrix for the
Python/Django combos listed above.
Match supported python versions to Django docs
* Also include pypy
* But exclude Python 3.2
(only works with Django 1.8 through end of 2016;
pip has already dropped support; over-complicates
maintaining Python 2.7 support)
Also includes:
* Change AnymailTestMixin.assertDoesNotWarn
to filter specific warning classes.
* Look specifically for AnymailInsecureWebhookWarning
in WebhookBasicAuthTestsMixin.test_warns_if_no_auth
(because we don't care *in that test case* about
DeprecatedInDjango10 warnings).
Install default warnings filter in test runs, to avoid
python's default suppression of DeprecationWarning
and other "intended for developer" warnings.
(Avoids need to provide -Wd or -Wall arg to runtests.)
Simplify install to just `pip install django-anymail`.
(Rather than `... django-anymail[mailgun]`
All of the ESPs so far require requests, so just move
that into the base requirements. (Chances are your
Django app already needs requests for some other
reason, anyway.)
Truly unique ESP dependencies (e.g., boto for
AWS-SES) could still use the setup extra features
mechanism.
Switch to explicitly declaring build matrix, with the versions
of Python supported by each version of Django we handle.
(Exclusion list was becoming too complicated.)
The build now tests for newer Python 3.x versions and PyPy.
Also the build will now test itself against Django 1.7RC1 instead of the latest beta version.
Test Django 1.2 and 1.3; Python 2.6 and 2.7
Don't bother testing Python 2.5 -- it requires an older version of
requests (that doesn't depend on json).
Don't bother testing Django 1.2 -- it requires changes to ``assertRaises``
in the test cases (because the context-manager version of assertRaises is
part of unittest2, which appears in Django 1.3+ or Python 2.7+).
Don't bother testing Django 1.5 (yet).