Test on pypy

This commit is contained in:
Sergey Lavrinenko 2015-04-04 11:37:06 +03:00
parent 7c824aa089
commit 45c86aec87
4 changed files with 24 additions and 4 deletions

View File

@ -7,6 +7,7 @@ python:
- "2.7" - "2.7"
- "3.3" - "3.3"
- "3.4" - "3.4"
- "pypy"
script: py.test --cov emails script: py.test --cov emails

View File

@ -1,15 +1,16 @@
# encoding: utf-8 # encoding: utf-8
from __future__ import unicode_literals, print_function from __future__ import unicode_literals, print_function
import os.path import os
from lxml.etree import XMLSyntaxError from lxml.etree import XMLSyntaxError
import pytest import pytest
from requests import ConnectionError, Timeout from requests import ConnectionError, Timeout
import emails import emails
import emails.loader import emails.loader
import emails.transformer import emails.transformer
from emails.loader.local_store import (MsgLoader, FileSystemLoader, FileNotFound, ZipLoader, from emails.loader.local_store import (MsgLoader, FileSystemLoader, FileNotFound, ZipLoader,
split_template_path, BaseLoader) split_template_path, BaseLoader)
from emails.compat import text_type from emails.compat import text_type, is_pypy
from emails.loader.helpers import guess_charset from emails.loader.helpers import guess_charset
from emails.exc import HTTPLoaderError from emails.exc import HTTPLoaderError
@ -138,21 +139,35 @@ def test_loaders_with_params():
def test_external_urls(): def test_external_urls():
# Load some real sites with complicated html and css. # Load some real sites with complicated html and css.
# Test loader don't throw any exception. # Loader should not throw any exception.
success = 0
for url in [ for url in [
'https://github.com/lavr/python-emails', 'https://github.com/lavr/python-emails',
'http://yandex.com', 'http://yandex.com',
'http://www.smashingmagazine.com/' 'http://www.smashingmagazine.com/'
]: ]:
print("test_external_urls: %s" % url)
try: try:
emails.loader.from_url(url) emails.loader.from_url(url)
success += 1
except (ConnectionError, Timeout): except (ConnectionError, Timeout):
# Nevermind if external site does not respond # Nevermind if external site does not respond
pass pass
except HTTPLoaderError: except HTTPLoaderError:
# Skip if external site does responds 500 # Skip if external site does responds 500
pass pass
except SystemError:
if is_pypy and os.environ.get('TRAVIS'):
# pypy on travis-ci raises SystemError/StackOverflow
# in lxml xpath expression for [very complex] smashingmagazine.com html
# Think this is not critical.
# And I can't reproduce this locally, so just ignore it.
pass
else:
raise
assert success # one of urls should work I hope
def _get_loaders(): def _get_loaders():

View File

@ -0,0 +1,4 @@
--requirement=base.txt
--requirement=tests-base.txt
django

View File

@ -4,7 +4,7 @@
# and then run "tox" from this directory. # and then run "tox" from this directory.
[tox] [tox]
envlist = py26, py27, py33, py34 envlist = py26, py27, py33, py34, pypy
[testenv] [testenv]
commands = py.test --cov-report term --cov-report html --cov emails {posargs} commands = py.test --cov-report term --cov-report html --cov emails {posargs}