jenkins-bot has submitted this change and it was merged.
Change subject: Additional archivebot tests and error handling
......................................................................
Additional archivebot tests and error handling
Change-Id: I224c34d893a85dc8e2671de9a7884db5d045dd8c
---
M scripts/archivebot.py
M tests/archivebot_tests.py
2 files changed, 67 insertions(+), 2 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/scripts/archivebot.py b/scripts/archivebot.py
index 86cb2f6..ea20c78 100755
--- a/scripts/archivebot.py
+++ b/scripts/archivebot.py
@@ -195,7 +195,10 @@
elif string.endswith('y'):
return datetime.timedelta(days=int(string[:-1]) * 366)
else:
- return datetime.timedelta(seconds=int(string))
+ if string.isdigit():
+ return datetime.timedelta(seconds=int(string))
+ else:
+ raise MalformedConfigError('Unrecognized parameter in template: %s' %
string)
def str2size(string):
diff --git a/tests/archivebot_tests.py b/tests/archivebot_tests.py
index 467c4c1..560275d 100644
--- a/tests/archivebot_tests.py
+++ b/tests/archivebot_tests.py
@@ -9,7 +9,7 @@
__version__ = '$Id$'
-from datetime import datetime
+from datetime import datetime, timedelta
import pywikibot
import pywikibot.page
@@ -35,6 +35,68 @@
}
+class TestArchiveBotFunctionsWithSites(TestCase):
+
+ """Test functions dependent to sites in archivebot."""
+
+ sites = {
+ 'enwiki': {
+ 'family': 'wikipedia',
+ 'code': 'en',
+ },
+ 'frwikt': {
+ 'family': 'wiktionary',
+ 'code': 'fr',
+ },
+ 'jawiki': {
+ 'family': 'wikipedia',
+ 'code': 'ja',
+ }
+ }
+
+ def test_str2localized_duraction_English(self):
+ """Test English localizations of duration."""
+ site = self.get_site('enwiki')
+ self.assertEqual(archivebot.str2localized_duration(site, '0m'), '0
minutes')
+ self.assertEqual(archivebot.str2localized_duration(site, '1d'), '1
day')
+ self.assertEqual(archivebot.str2localized_duration(site, '10h'), '10
hours')
+
+ def test_str2localized_duraction_French(self):
+ """Test French localizations of duration."""
+ site = self.get_site('frwikt')
+ self.assertEqual(archivebot.str2localized_duration(site, '10d'), '10
jours')
+ self.assertEqual(archivebot.str2localized_duration(site, '1y'), '1
an')
+
+ def test_str2localized_duraction_Japanese(self):
+ """Test Japanese localizations of duration."""
+ site = self.get_site('jawiki')
+ self.assertEqual(archivebot.str2localized_duration(site, '4000m'),
'4000 分')
+
+
+class TestArchiveBotFunctions(TestCase):
+
+ """Test functions in archivebot."""
+
+ net = False
+
+ def test_str2time(self):
+ """Test for parsing the shorthand notation of
durations."""
+ self.assertEqual(archivebot.str2time('0'), timedelta(0))
+ self.assertEqual(archivebot.str2time('4000h'), timedelta(hours=4000))
+ self.assertEqual(archivebot.str2time('4000h'), timedelta(hours=4000))
+ self.assertRaises(archivebot.MalformedConfigError, archivebot.str2time,
'4000@')
+ self.assertRaises(archivebot.MalformedConfigError, archivebot.str2time,
'$1')
+
+ def test_str2size(self):
+ """Test for parsing the shorthand notation of
sizes."""
+ self.assertEqual(archivebot.str2size('0'), (0, 'B'))
+ self.assertEqual(archivebot.str2size('3000'), (3000, 'B'))
+ self.assertEqual(archivebot.str2size('4 K'), (4096, 'B'))
+ self.assertEqual(archivebot.str2size('2T'), (2, 'T'))
+ # TODO: should probably be recognized 2000?
+ self.assertEqual(archivebot.str2size('2 000'), (2, 'B'))
+
+
class TestArchiveBot(TestCase):
"""Test archivebot script on 40+ Wikipedia sites."""
--
To view, visit
https://gerrit.wikimedia.org/r/314805
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I224c34d893a85dc8e2671de9a7884db5d045dd8c
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Whym <whym(a)whym.org>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>