jenkins-bot has submitted this change and it was merged.
Change subject: [FIX] Check older status in unconnected tests ......................................................................
[FIX] Check older status in unconnected tests
When an unconnected page gets connected it may still be reported as unconnected. This is now getting the revision 5 minutes ago and verifying that the site is not already linked then.
Change-Id: I0831be6e3a541204610a03bfd07b442930555fd8 --- M tests/pagegenerators_tests.py M tests/site_tests.py 2 files changed, 38 insertions(+), 6 deletions(-)
Approvals: Merlijn van Deen: Looks good to me, approved jenkins-bot: Verified
diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py index ce51bfc..7aa4e12 100755 --- a/tests/pagegenerators_tests.py +++ b/tests/pagegenerators_tests.py @@ -11,6 +11,7 @@
import calendar import datetime +import json import os import sys
@@ -915,9 +916,24 @@ if not self.site.data_repository(): raise unittest.SkipTest('Site is not using a Wikibase repository') cnt = 0 - for page in pagegenerators.UnconnectedPageGenerator(self.site, total=5): - self.assertRaises(pywikibot.NoPage, pywikibot.ItemPage.fromPage, - page) + start_time = datetime.datetime.now() - datetime.timedelta(minutes=5) + # Pages which have been connected recently may still be reported as + # unconnected. So try on an version that is a few minutes older if the + # tested site appears as a sitelink. + for page in self.site.unconnected_pages(total=5): + try: + item = pywikibot.ItemPage.fromPage(page) + except pywikibot.NoPage: + pass + else: + revisions = list(item.revisions(total=1, starttime=start_time, + content=True)) + if revisions: + sitelinks = json.loads(revisions[0].text)['sitelinks'] + self.assertNotIn( + self.site.dbName(), sitelinks, + 'Page "{0}" is connected to a Wikibase ' + 'repository'.format(page.title())) cnt += 1 self.assertLessEqual(cnt, 5)
diff --git a/tests/site_tests.py b/tests/site_tests.py index 5946d3d..fb75c7b 100644 --- a/tests/site_tests.py +++ b/tests/site_tests.py @@ -10,10 +10,11 @@ __version__ = '$Id$'
+import json import sys import os from collections import Iterable, Mapping -from datetime import datetime +from datetime import datetime, timedelta import re
import pywikibot @@ -819,9 +820,24 @@ if not self.site.data_repository(): raise unittest.SkipTest('Site is not using a Wikibase repository') cnt = 0 + start_time = datetime.now() - timedelta(minutes=5) + # Pages which have been connected recently may still be reported as + # unconnected. So try on an version that is a few minutes older if the + # tested site appears as a sitelink. for page in self.site.unconnected_pages(total=5): - self.assertRaises(pywikibot.NoPage, pywikibot.ItemPage.fromPage, - page) + try: + item = pywikibot.ItemPage.fromPage(page) + except pywikibot.NoPage: + pass + else: + revisions = list(item.revisions(total=1, starttime=start_time, + content=True)) + if revisions: + sitelinks = json.loads(revisions[0].text)['sitelinks'] + self.assertNotIn( + self.site.dbName(), sitelinks, + 'Page "{0}" is connected to a Wikibase ' + 'repository'.format(page.title())) cnt += 1 self.assertLessEqual(cnt, 5)
pywikibot-commits@lists.wikimedia.org