66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
#!/usr/bin/env python
|
|
|
|
import unittest, os, glob, calendar
|
|
from planet.spider import filename, spiderFeed, spiderPlanet
|
|
from planet import feedparser, config
|
|
|
|
workdir = 'tests/work/spider/cache'
|
|
testfeed = 'tests/data/spider/testfeed%s.atom'
|
|
configfile = 'tests/data/spider/config.ini'
|
|
|
|
class SpiderTest(unittest.TestCase):
|
|
def setUp(self):
|
|
try:
|
|
os.makedirs(workdir)
|
|
except:
|
|
self.tearDown()
|
|
os.makedirs(workdir)
|
|
|
|
def tearDown(self):
|
|
for file in glob.glob(workdir+"/*"):
|
|
os.unlink(file)
|
|
os.removedirs(workdir)
|
|
|
|
def test_filename(self):
|
|
self.assertEqual('./example.com,index.html',
|
|
filename('.', 'http://example.com/index.html'))
|
|
self.assertEqual('./www.xn--8ws00zhy3a.com',
|
|
filename('.', u'http://www.\u8a79\u59c6\u65af.com/'))
|
|
|
|
def test_spiderFeed(self):
|
|
config.load(configfile)
|
|
spiderFeed(testfeed % '1b')
|
|
files = glob.glob(workdir+"/*")
|
|
|
|
# verify that exactly four files were produced
|
|
self.assertEqual(4, len(files))
|
|
|
|
# verify that the file names are as expected
|
|
self.assertTrue(workdir +
|
|
'/tag:planet.intertwingly.net,2006:testfeed1,1' in files)
|
|
|
|
# verify that the file timestamps match atom:updated
|
|
for file in files:
|
|
data = feedparser.parse(file)
|
|
self.assertTrue(data.entries[0].source.planet_name)
|
|
self.assertEqual(os.stat(file).st_mtime,
|
|
calendar.timegm(data.entries[0].updated_parsed))
|
|
|
|
def test_spiderUpdate(self):
|
|
spiderFeed(testfeed % '1a')
|
|
self.test_spiderFeed()
|
|
|
|
def test_spiderPlanet(self):
|
|
spiderPlanet(configfile)
|
|
files = glob.glob(workdir+"/*")
|
|
|
|
# verify that exactly eight files were produced
|
|
self.assertEqual(12, len(files))
|
|
|
|
# verify that the file names are as expected
|
|
self.assertTrue(workdir +
|
|
'/tag:planet.intertwingly.net,2006:testfeed1,1' in files)
|
|
self.assertTrue(workdir +
|
|
'/tag:planet.intertwingly.net,2006:testfeed2,1' in files)
|
|
|