Source code for tests.uploadbot_tests

#!/usr/bin/env python3
"""
UploadRobot test.

These tests write to the wiki.
"""
#
# (C) Pywikibot team, 2014-2024
#
# Distributed under the terms of the MIT license.
#
from __future__ import annotations

import os
import unittest
from contextlib import suppress

from pywikibot.specialbots import UploadRobot
from tests import join_images_path
from tests.aspects import DefaultSiteTestCase, TestCase


[docs] class TestUploadbot(TestCase): """Test cases for upload.""" write = True family = 'wikipedia' code = 'test' params = dict( # noqa: C408 description='pywikibot upload.py script test', keep_filename=True, aborts=set(), ignore_warning=True, )
[docs] def test_png_list(self): """Test uploading a list of pngs using upload.py.""" image_list = [] for directory_info in os.walk(join_images_path()): for dir_file in directory_info[2]: image_list.append(os.path.join(directory_info[0], dir_file)) bot = UploadRobot(url=image_list, target_site=self.get_site(), **self.params) bot.run()
[docs] def test_png(self): """Test uploading a png using upload.py.""" bot = UploadRobot( url=[join_images_path('MP_sounds.png')], target_site=self.get_site(), **self.params) bot.run()
[docs] def test_png_url(self): """Test uploading a png from url using upload.py.""" link = 'https://upload.wikimedia.org/' link += 'wikipedia/commons/f/fc/MP_sounds.png' bot = UploadRobot(url=[link], target_site=self.get_site(), **self.params) bot.run()
[docs] class TestDryUploadbot(DefaultSiteTestCase): """Dry tests UploadRobot.""" net = False params = dict( # noqa: C408 description='pywikibot upload.py script test', keep_filename=True, aborts=set(), ignore_warning=True, )
[docs] def test_png_file(self): """Test UploadRobot attributes and methods.""" bot = UploadRobot(url=['test.png'], target_site=self.site, **self.params) self.assertEqual(bot.description, self.params['description']) self.assertTrue(bot._handle_warning('any warning')) # ignore_warning self.assertTrue(bot.ignore_on_warn('any warning')) # ignore_warning self.assertFalse(bot.abort_on_warn('any warning')) # aborts self.assertIsNone(bot.post_processor)
if __name__ == '__main__': with suppress(SystemExit): unittest.main()