dosage/tests/test_comics.py
2012-06-20 22:41:04 +02:00

52 lines
1.6 KiB
Python

# -*- coding: iso-8859-1 -*-
# Copyright (C) 2004-2005 Tristan Seligmann and Jonathan Jacobs
# Copyright (C) 2012 Bastian Kleineidam
import tempfile
import shutil
from itertools import izip
from unittest import TestCase
from dosagelib import scraper
class _ComicTester(TestCase):
"""Basic comic test class."""
scraperclass=None
def test_comic(self):
# Test a scraper. It must be able to traverse backward for
# at least 5 pages from the start, and find strip images
# on at least 4 pages.
module = self.scraperclass()
num = empty = 0
for n, comics in izip(xrange(5), module):
if len(comics) == 0:
empty += 1
for comic in comics:
self.save(comic)
num += 1
self.assertTrue(num >= 4, 'Traversal failed after %d strips.' % num)
self.assertTrue(empty <= 1, 'Failed to find images on %d pages.' % empty)
def save(self, comic):
# create a temporary directory
tmpdir = tempfile.mkdtemp()
try:
filename, saved = comic.save(tmpdir)
self.assertTrue(saved, 'Could not save comic %s to %s' % (comic, tmpdir))
finally:
shutil.rmtree(tmpdir)
def generate_comic_testers():
"""For each comic scraper, create a test class.
This currently generates over 4000 test classes (one for each comic),
so this takes a while."""
for s in scraper.items():
name = 'Test'+s.__name__
globals()[name] = type(name,
(_ComicTester,),
dict(scraperclass=s)
)
generate_comic_testers()