Skip to content

Commit 04613c3

Browse files
committed
handle out-of-range generation access
1 parent 54ddd6f commit 04613c3

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

atwiki/core.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,10 @@ def get_list(self, tag=None):
5656

5757
def get_source(self, page_id, generation=0):
5858
soup = self._request(self._uri.backup_source(page_id, generation))
59-
return soup.find('pre', attrs={'class': 'cmd_backup'}).text.replace('\r', '')
59+
pre = soup.find('pre', attrs={'class': 'cmd_backup'})
60+
if not pre:
61+
raise IndexError('page {0}: generation {1} out of range'.format(page_id, generation))
62+
return pre.text.replace('\r', '')
6063

6164
def search(self, keyword, is_and=True):
6265
soup = self._request(self._uri.search(keyword, is_and))

atwiki/test/test_core.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ def test_get_source_special(self):
3333
self.assertEqual(self._api.get_source(15, 0),
3434
'"テスト1"<br>&\n"テスト2"<br>&')
3535

36+
def test_get_source_invalid(self):
37+
self.assertRaises(IndexError, self._api.get_source, 15, -1)
38+
3639
def test_search(self):
3740
results = list(self._api.search('SearchKeyword01 SearchKeyword02'))
3841
self.assertEqual(len(results), 1)

0 commit comments

Comments
 (0)