@@ -76,30 +76,38 @@ class RejectAllRobotsTest(BaseRobotTest, unittest.TestCase):
7676
7777
7878class BaseRequestRateTest (BaseRobotTest ):
79+ request_rate = None
80+ crawl_delay = None
7981
8082 def test_request_rate (self ):
83+ parser = self .parser
8184 for url in self .good + self .bad :
8285 agent , url = self .get_agent_and_url (url )
8386 with self .subTest (url = url , agent = agent ):
84- if self .crawl_delay :
85- self . assertEqual (
86- self . parser .crawl_delay (agent ), self . crawl_delay
87- )
88- if self .request_rate :
87+ self . assertEqual ( parser . crawl_delay ( agent ), self .crawl_delay )
88+
89+ parsed_request_rate = parser .request_rate (agent )
90+ self . assertEqual ( parsed_request_rate , self . request_rate )
91+ if self .request_rate is not None :
8992 self .assertIsInstance (
90- self . parser . request_rate ( agent ) ,
93+ parsed_request_rate ,
9194 urllib .robotparser .RequestRate
9295 )
9396 self .assertEqual (
94- self . parser . request_rate ( agent ) .requests ,
97+ parsed_request_rate .requests ,
9598 self .request_rate .requests
9699 )
97100 self .assertEqual (
98- self . parser . request_rate ( agent ) .seconds ,
101+ parsed_request_rate .seconds ,
99102 self .request_rate .seconds
100103 )
101104
102105
106+ class EmptyFileTest (BaseRequestRateTest , unittest .TestCase ):
107+ robots_txt = ''
108+ good = ['/foo' ]
109+
110+
103111class CrawlDelayAndRequestRateTest (BaseRequestRateTest , unittest .TestCase ):
104112 robots_txt = """\
105113 User-agent: figtree
@@ -120,10 +128,6 @@ class CrawlDelayAndRequestRateTest(BaseRequestRateTest, unittest.TestCase):
120128
121129class DifferentAgentTest (CrawlDelayAndRequestRateTest ):
122130 agent = 'FigTree Robot libwww-perl/5.04'
123- # these are not actually tested, but we still need to parse it
124- # in order to accommodate the input parameters
125- request_rate = None
126- crawl_delay = None
127131
128132
129133class InvalidRequestRateTest (BaseRobotTest , unittest .TestCase ):
0 commit comments