jenkins-bot has submitted this change and it was merged.
Change subject: Add Generator Factory Tests
......................................................................
Add Generator Factory Tests
Added tests under TestFacoryGenerator for Allpages, Prefixing, and
RegexFilter PageGenerators. Also added a test for passing
only `-ns` to a GeneratorFactory.
The `default` for each for each tests the limit
and basic functionallity (Prefixing tests whether
the page starts with the prefix and RegexFilter
tests whether the returned pages match the regex).
The `ns` tests test whether the pages returned are in
the specified namespace.
`test_regexfilter_ns` is expected to fail due to bug T85389.
Essentially all results from `-titleregex` will have a namespace
of 0 and will return an empty generator if called with a namespace
other than 0.
Change-Id: I8a482bac50d983bb57d70468ce5bc61b2e031a81
---
M tests/pagegenerators_tests.py
1 file changed, 75 insertions(+), 0 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py
index 32f3fda..5985c58 100755
--- a/tests/pagegenerators_tests.py
+++ b/tests/pagegenerators_tests.py
@@ -349,6 +349,81 @@
"""Test pagegenerators.GeneratorFactory."""
+ def test_ns(self):
+ gf = pagegenerators.GeneratorFactory()
+ gf.handleArg('-ns:1')
+ gen = gf.getCombinedGenerator()
+ self.assertIsNone(gen)
+
+ def test_allpages_default(self):
+ gf = pagegenerators.GeneratorFactory()
+ self.assertTrue(gf.handleArg('-start:!'))
+ gf.handleArg('-limit:10')
+ gf.handleArg('-step:5')
+ gen = gf.getCombinedGenerator()
+ pages = set(gen)
+ self.assertLessEqual(len(pages), 10)
+ for page in pages:
+ self.assertIsInstance(page, pywikibot.Page)
+ self.assertEqual(page.namespace(), 0)
+
+ def test_allpages_ns(self):
+ gf = pagegenerators.GeneratorFactory()
+ self.assertTrue(gf.handleArg('-start:!'))
+ gf.handleArg('-limit:10')
+ gf.handleArg('-ns:1')
+ gen = gf.getCombinedGenerator()
+ pages = set(gen)
+ self.assertLessEqual(len(pages), 10)
+ self.assertPagesInNamespaces(gen, 1)
+
+ def test_regexfilter_default(self):
+ gf = pagegenerators.GeneratorFactory()
+ # Matches titles with the same two or more starting letters
+ self.assertTrue(gf.handleArg('-titleregex:^(.)\\1+'))
+ gf.handleArg('-limit:10')
+ gen = gf.getCombinedGenerator()
+ pages = list(gen)
+ self.assertLessEqual(len(pages), 10)
+ for page in pages:
+ self.assertIsInstance(page, pywikibot.Page)
+ self.assertRegex(page.title().lower(), '^(.)\\1+')
+
+ @unittest.expectedFailure
+ def test_regexfilter_ns(self):
+ gf = pagegenerators.GeneratorFactory()
+ self.assertTrue(gf.handleArg('-titleregex:.*'))
+ gf.handleArg('-limit:10')
+ gf.handleArg('-ns:1')
+ gen = gf.getCombinedGenerator()
+ pages = list(gen)
+ # TODO: Fix RegexFilterPageGenerator to handle namespaces other than 0
+ # Bug: T85389
+ # Below should fail
+ self.assertGreater(len(pages), 0)
+ self.assertLessEqual(len(pages), 10)
+ self.assertPagesInNamespaces(gen, 1)
+
+ def test_prefixing_default(self):
+ gf = pagegenerators.GeneratorFactory()
+ self.assertTrue(gf.handleArg('-prefixindex:a'))
+ gf.handleArg('-limit:10')
+ gf.handleArg('-step:5')
+ gen = gf.getCombinedGenerator()
+ pages = set(gen)
+ self.assertLessEqual(len(pages), 10)
+ for page in pages:
+ self.assertIsInstance(page, pywikibot.Page)
+ self.assertTrue(page.title().lower().startswith('a'))
+
+ def test_prefixing_ns(self):
+ gf = pagegenerators.GeneratorFactory(site=self.site)
+ gf.handleArg('-ns:1')
+ gf.handleArg('-prefixindex:a')
+ gf.handleArg("-limit:10")
+ gen = gf.getCombinedGenerator()
+ self.assertPagesInNamespaces(gen, 1)
+
def test_newpages_default(self):
gf = pagegenerators.GeneratorFactory(site=self.site)
gf.handleArg('-newpages')
--
To view, visit
https://gerrit.wikimedia.org/r/181714
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I8a482bac50d983bb57d70468ce5bc61b2e031a81
Gerrit-PatchSet: 4
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Daviskr <davis(a)daviskr.com>
Gerrit-Reviewer: Daviskr <davis(a)daviskr.com>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: jenkins-bot <>