jenkins-bot has submitted this change and it was merged.
Change subject: pagegenerators: Fix regression bugs in -random ......................................................................
pagegenerators: Fix regression bugs in -random
The earlier kwarg used for the -random and -randomredirect arg in GeneratorFactory was `namespace` but the correct kwarg is `namespaces`. This is fixed to the correct kwarg name.
Similarly, when `-random:N` is used without any value like `-random` it generates all the pages in the wiki. This is fixed in -random and -randomredirect too.
Bug: T134720 Change-Id: I52b4ddce8590300715874607e37a4d76de3f66a3 --- M pywikibot/pagegenerators.py M tests/pagegenerators_tests.py 2 files changed, 61 insertions(+), 4 deletions(-)
Approvals: John Vandenberg: Looks good to me, but someone else must approve Mpaa: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py index 1e2bb00..6c7a2b2 100644 --- a/pywikibot/pagegenerators.py +++ b/pywikibot/pagegenerators.py @@ -675,17 +675,18 @@ # before -randomredirect # otherwise default namespace is 0 namespaces = self.namespaces or 0 - gen = RandomRedirectPageGenerator(total=intNone(value), + gen = RandomRedirectPageGenerator(total=intNone(value) or 10, site=self.site, - namespace=namespaces) + namespaces=namespaces) elif arg == '-random': # partial workaround for bug T119940 # to use -namespace/ns with -random, -ns must be given # before -random # otherwise default namespace is 0 namespaces = self.namespaces or 0 - gen = RandomPageGenerator(total=intNone(value), site=self.site, - namespace=namespaces) + gen = RandomPageGenerator(total=intNone(value) or 10, + site=self.site, + namespaces=namespaces) elif arg == '-recentchanges': rcstart = None rcend = None diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py index b5b8f57..b1a0057 100755 --- a/tests/pagegenerators_tests.py +++ b/tests/pagegenerators_tests.py @@ -855,6 +855,62 @@ gen = gf.getCombinedGenerator() self.assertIsNotNone(gen)
+ def test_random_generator_default(self): + """Test random generator.""" + gf = pagegenerators.GeneratorFactory(site=self.site) + gf.handleArg('-random:1') + gen = gf.getCombinedGenerator() + self.assertIsNotNone(gen) + pages = set(gen) + self.assertEqual(len(pages), 1) + + def test_random_generator_ns(self): + """Test random generator with namespace.""" + gf = pagegenerators.GeneratorFactory(site=self.site) + gf.handleArg('-ns:1') + gf.handleArg('-random:1') + gen = gf.getCombinedGenerator() + self.assertIsNotNone(gen) + self.assertPagesInNamespaces(gen, 1) + + def test_random_generator_ns_multi(self): + """Test random generator with multiple namespaces.""" + gf = pagegenerators.GeneratorFactory(site=self.site) + gf.handleArg('-ns:1') + gf.handleArg('-ns:3') + gf.handleArg('-random') + gen = gf.getCombinedGenerator() + self.assertIsNotNone(gen) + self.assertPagesInNamespaces(gen, set([1, 3])) + + def test_randomredirect_generator_default(self): + """Test random generator.""" + gf = pagegenerators.GeneratorFactory(site=self.site) + gf.handleArg('-randomredirect:1') + gen = gf.getCombinedGenerator() + self.assertIsNotNone(gen) + pages = set(gen) + self.assertEqual(len(pages), 1) + + def test_randomredirect_generator_ns(self): + """Test random generator with namespace.""" + gf = pagegenerators.GeneratorFactory(site=self.site) + gf.handleArg('-ns:1') + gf.handleArg('-randomredirect:1') + gen = gf.getCombinedGenerator() + self.assertIsNotNone(gen) + self.assertPagesInNamespaces(gen, 1) + + def test_randomredirect_generator_ns_multi(self): + """Test random generator with multiple namespaces.""" + gf = pagegenerators.GeneratorFactory(site=self.site) + gf.handleArg('-ns:1') + gf.handleArg('-ns:3') + gf.handleArg('-randomredirect') + gen = gf.getCombinedGenerator() + self.assertIsNotNone(gen) + self.assertPagesInNamespaces(gen, set([1, 3])) + def test_empty_generator(self): """Test empty generator.""" gf = pagegenerators.GeneratorFactory(site=self.site)
pywikibot-commits@lists.wikimedia.org