diff --git a/src/configloader.py b/src/configloader.py
index b7cfe38..545db53 100644
--- a/src/configloader.py
+++ b/src/configloader.py
@@ -23,11 +23,12 @@ global settings
def load_settings():
global settings
try: # load settings
+ command_args.settings.seek(0)
settings = json.load(command_args.settings)
if settings["limitrefetch"] < settings["limit"] and settings["limitrefetch"] != -1:
settings["limitrefetch"] = settings["limit"]
if "user-agent" in settings["header"]:
- settings["header"]["user-agent"] = settings["header"]["user-agent"].format(version="1.14.0.2") # set the version in the useragent
+ settings["header"]["user-agent"] = settings["header"]["user-agent"].format(version="1.14.1") # set the version in the useragent
except FileNotFoundError:
logging.critical("No config file could be found. Please make sure settings.json is in the directory.")
sys.exit(1)
diff --git a/src/rcgcdw.py b/src/rcgcdw.py
index 5f58ec2..1c60c1a 100644
--- a/src/rcgcdw.py
+++ b/src/rcgcdw.py
@@ -341,6 +341,7 @@ if TESTING:
day_overview()
import src.discussions
src.discussions.fetch_discussions()
+ logger.info("Test has succeeded without premature exceptions.")
sys.exit(0)
while 1:
diff --git a/src/wiki.py b/src/wiki.py
index 3114487..b01dd23 100644
--- a/src/wiki.py
+++ b/src/wiki.py
@@ -38,6 +38,7 @@ storage = datafile
logger = logging.getLogger("rcgcdw.rc")
+
class Wiki(object):
"""Store verious data and functions related to wiki and fetching of Recent Changes"""
def __init__(self, rc_processor: Callable, abuse_processor: Callable):
@@ -394,8 +395,7 @@ class Wiki(object):
if self.downtimecredibility < 60:
self.downtimecredibility += 15
else:
- if (
- time.time() - self.last_downtime) > 1800 and self.check_connection(): # check if last downtime happened within 30 minutes, if yes, don't send a message
+ if (time.time() - self.last_downtime) > 1800 and self.check_connection(): # check if last downtime happened within 30 minutes, if yes, don't send a message
send_simple("down_detector", _("{wiki} seems to be down or unreachable.").format(wiki=settings["wikiname"]),
_("Connection status"), settings["avatars"]["connection_failed"])
self.last_downtime = time.time()
diff --git a/test/data/rc_results.json b/test/data/rc_results.json
index 4c62b3a..2d8f91f 100644
--- a/test/data/rc_results.json
+++ b/test/data/rc_results.json
@@ -1,7 +1,7 @@
{
- "edit": {"allowed_mentions": {"parse": []}, "avatar_url": "", "embeds": [{"color": 16711680, "url": "https://minecraft.fandom.com/index.php?title=Some_page&curid=9327&diff=2075232&oldid=232555", "title": "Some page (-32554)", "fields": [{"name": "Usuni\u0119to", "value": "__Tylko znaki niedrukowane__", "inline": true}, {"name": "Dodano", "value": "__Tylko znaki niedrukowane__", "inline": true}, {"name": "Tagi", "value": "VisualEdit", "inline": false}], "author": {"name": "User3", "url": "https://minecraft.fandom.com/wiki/User:User3", "icon_url": ""}, "timestamp": "2022-03-26T11:41:22Z", "description": "Work on new as"}]},
+ "edit": {"allowed_mentions": {"parse": []}, "avatar_url": "", "embeds": [{"color": 16711680, "url": "https://minecraft.fandom.com/index.php?title=Some_page&curid=9327&diff=2075232&oldid=232555", "title": "Some page (-32554)", "fields": [{"name": "Removed", "value": "__Only whitespace__", "inline": true}, {"name": "Added", "value": "__Only whitespace__", "inline": true}, {"name": "Tagi", "value": "VisualEdit", "inline": false}], "author": {"name": "User3", "url": "https://minecraft.fandom.com/wiki/User:User3", "icon_url": ""}, "timestamp": "2022-03-26T11:41:22Z", "description": "Work on new as"}]},
"datadump/generate": {"allowed_mentions": {"parse": []}, "avatar_url": "", "embeds": [{"color": null, "author": {"name": "User 10", "url": "https://minecraft.fandom.com/wiki/User:User_10", "icon_url": ""}, "timestamp": "2022-01-13T15:25:09Z", "description": "", "title": "Generated Somefilenoidea.tar.gz dump", "url": "https://minecraft.fandom.com/wiki/Datadump"}]},
- "cargo/createtable":{"allowed_mentions": {"parse": []}, "avatar_url": "", "embeds": [{"color": null, "author": {"name": "User 10", "url": "https://minecraft.fandom.com/wiki/User:User_10", "icon_url": ""}, "timestamp": "2022-01-13T15:25:09Z", "description": "", "url": "https://somewiki.somefarm.com/wiki/Special:CargoTables/TableTest", "title": "Utworzono tabel\u0119 Cargo \u201eTableTest\u201d"}]},
- "abuselog": {"allowed_mentions": {"parse": []}, "avatar_url": "", "embeds": [{"color": null, "title": "User4 wywo\u0142a\u0142(a) \"Prevent vandalism\"", "fields": [{"name": "Wykonano", "value": "Edycja", "inline": false}, {"name": "Podj\u0119te dzia\u0142ania", "value": "Otagowano edycj\u0119", "inline": false}, {"name": "Tytu\u0142", "value": "Survival", "inline": false}]}]},
- "interwiki/iw_add": {"allowed_mentions": {"parse": []}, "avatar_url": "", "embeds": [{"color": null, "author": {"name": "Not An User", "url": "https://minecraft.fandom.com/wiki/User:Not_An_User", "icon_url": ""}, "timestamp": "2022-01-13T15:31:25Z", "url": "https://minecraft.fandom.com/wiki/Special:Interwiki", "title": "Dodano wpis do tabeli interwiki", "description": "Prefix: testonlypleaseignore, strona: https://notawiki.notaplatform.com/wiki/$1 | "}]}
+ "cargo/createtable":{"allowed_mentions": {"parse": []}, "avatar_url": "", "embeds": [{"color": null, "author": {"name": "User 10", "url": "https://minecraft.fandom.com/wiki/User:User_10", "icon_url": ""}, "timestamp": "2022-01-13T15:25:09Z", "description": "", "url": "https://somewiki.somefarm.com/wiki/Special:CargoTables/TableTest", "title": "Created the Cargo table \"TableTest\""}]},
+ "abuselog": {"allowed_mentions": {"parse": []}, "avatar_url": "", "embeds": [{"color": null, "title": "User4 triggered \"Prevent vandalism\"", "fields": [{"name": "Performed", "value": "Edit", "inline": false}, {"name": "Action taken", "value": "Tagged the edit", "inline": false}, {"name": "Title", "value": "Survival", "inline": false}]}]},
+ "interwiki/iw_add": {"allowed_mentions": {"parse": []}, "avatar_url": "", "embeds": [{"color": null, "author": {"name": "Not An User", "url": "https://minecraft.fandom.com/wiki/User:Not_An_User", "icon_url": ""}, "timestamp": "2022-01-13T15:31:25Z", "url": "https://minecraft.fandom.com/wiki/Special:Interwiki", "title": "Added an entry to the interwiki table", "description": "Prefix: testonlypleaseignore, website: https://notawiki.notaplatform.com/wiki/$1 | "}]}
}
\ No newline at end of file
diff --git a/test/test_11311_migration.py b/test/test_11311_migration.py
new file mode 100644
index 0000000..9909ed1
--- /dev/null
+++ b/test/test_11311_migration.py
@@ -0,0 +1,39 @@
+# This file is part of Recent changes Goat compatible Discord webhook (RcGcDw).
+#
+# RcGcDw is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# RcGcDw is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with RcGcDw. If not, see .
+
+import unittest
+import importlib
+import json
+
+test_file = """{"cooldown":60,"wiki_url":"https://wreckit-woodhouse.fandom.com/","rc_enabled":true,"lang":"en","header":{"user-agent":"RcGcDw/{version}"},"limit":10,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limitrefetch":28,"wikiname":"Wreck It Woodhouse","avatars":{"connection_failed":"https://i.imgur.com/2jWQEt1.png","connection_restored":"","no_event":"","embed":"","compact":""},"ignored":["external","newusers/create","newusers/autocreate","newusers/create2","newusers/byemail","newusers/newusers"],"show_updown_messages":true,"ignored_namespaces":[],"overview":false,"overview_time":"00:00","send_empty_overview":false,"license_detection":true,"license_regex_detect":"\\\\{\\\\{(license|lizenz|licence|copyright)","license_regex":"\\\\{\\\\{(license|lizenz|licence|copyright)(\\\\ |\\\\|)(?P.*?)\\\\}\\\\}","disallow_regexes":[],"wiki_bot_login":"","wiki_bot_password":"","show_added_categories":true,"show_bots":false,"show_abuselog":false,"hide_ips":false,"discord_message_cooldown":0,"auto_suppression":{"enabled":false,"db_location":":memory:"},"logging":{"version":1,"disable_existing_loggers":false,"formatters":{"standard":{"format":"%(name)s - %(levelname)s: %(message)s"}},"handlers":{"default":{"formatter":"standard","class":"logging.StreamHandler","stream":"ext://sys.stdout"}},"loggers":{"":{"level":0,"handlers":["default"]},"rcgcdw":{},"rcgcdw.misc":{}}},"appearance":{"mode":"embed","embed":{"show_edit_changes":false,"show_footer":true,"embed_images":true,"daily_overview":{"color":16312092,"icon":""},"new":{"icon":"https://i.imgur.com/6HIbEq8.png","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"edit":{"icon":"","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"upload/overwrite":{"icon":"https://i.imgur.com/egJpa81.png","color":12390624},"upload/upload":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"upload/revert":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"delete/delete":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/delete_redir":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/restore":{"icon":"https://i.imgur.com/9MnROIU.png","color":null},"delete/revision":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"delete/event":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"merge/merge":{"icon":"https://i.imgur.com/uQMK9XK.png","color":null},"move/move":{"icon":"https://i.imgur.com/eXz9dog.png","color":null},"move/move_redir":{"icon":"https://i.imgur.com/UtC3YX2.png","color":null},"block/block":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"block/unblock":{"icon":"https://i.imgur.com/bvtBJ8o.png","color":1},"block/reblock":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"protect/protect":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/modify":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/move_prot":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/unprotect":{"icon":"https://i.imgur.com/2wN3Qcq.png","color":null},"import/upload":{"icon":"","color":null},"import/interwiki":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"rights/rights":{"icon":"","color":null},"rights/autopromote":{"icon":"","color":null},"abusefilter/abusefilter":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/modify":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/create":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"interwiki/iw_add":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_edit":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_delete":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"curseprofile/comment-created":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-edited":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-deleted":{"icon":"","color":null},"curseprofile/comment-purged":{"icon":"","color":null},"curseprofile/comment-replied":{"icon":"https://i.imgur.com/hkyYsI1.png","color":null},"curseprofile/profile-edited":{"icon":"","color":null},"contentmodel/change":{"icon":"","color":null},"cargo/deletetable":{"icon":"","color":null},"cargo/createtable":{"icon":"","color":null},"cargo/replacetable":{"icon":"","color":null},"cargo/recreatetable":{"icon":"","color":null},"sprite/sprite":{"icon":"","color":null},"sprite/sheet":{"icon":"","color":null},"sprite/slice":{"icon":"","color":null},"managetags/create":{"icon":"","color":null},"managetags/delete":{"icon":"","color":null},"managetags/activate":{"icon":"","color":null},"managetags/deactivate":{"icon":"","color":null},"tag/update":{"icon":"","color":null},"suppressed":{"icon":"https://i.imgur.com/1gps6EZ.png","color":8092539},"discussion/forum/post":{"icon":"","color":null},"discussion/forum/reply":{"icon":"","color":null},"discussion/forum/poll":{"icon":"","color":null},"discussion/forum/quiz":{"icon":"","color":null},"discussion/wall/post":{"icon":"","color":null},"discussion/wall/reply":{"icon":"","color":null},"discussion/comment/post":{"icon":"","color":null},"discussion/comment/reply":{"icon":"","color":null}}},"fandom_discussions":{"enabled":false,"wiki_id":1885853,"wiki_url":"https://wikibot.fandom.com/","cooldown":60,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limit":5,"appearance":{"mode":"embed","embed":{"show_content":true}},"show_forums":[]}}"""
+result_file = """{"cooldown":60,"wiki_url":"https://wreckit-woodhouse.fandom.com/","rc_enabled":true,"lang":"en","header":{"user-agent":"RcGcDw/{version}"},"limit":10,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limitrefetch":28,"wikiname":"Wreck It Woodhouse","avatars":{"connection_failed":"https://i.imgur.com/2jWQEt1.png","connection_restored":"","no_event":"","embed":"","compact":""},"ignored":["external","newusers/create","newusers/autocreate","newusers/create2","newusers/byemail","newusers/newusers"],"show_updown_messages":true,"ignored_namespaces":[],"overview":false,"overview_time":"00:00","send_empty_overview":false,"license_detection":true,"license_regex_detect":"\\\\{\\\\{(license|lizenz|licence|copyright)","license_regex":"\\\\{\\\\{(license|lizenz|licence|copyright)(\\\\ |\\\\|)(?P.*?)\\\\}\\\\}","disallow_regexes":[],"wiki_bot_login":"","wiki_bot_password":"","show_added_categories":true,"show_bots":false,"show_abuselog":false,"hide_ips":false,"discord_message_cooldown":0,"auto_suppression":{"enabled":false,"db_location":":memory:"},"logging":{"version":1,"disable_existing_loggers":false,"formatters":{"standard":{"format":"%(name)s - %(levelname)s: %(message)s"}},"handlers":{"default":{"formatter":"standard","class":"logging.StreamHandler","stream":"ext://sys.stdout"}},"loggers":{"":{"level":0,"handlers":["default"]},"rcgcdw":{},"rcgcdw.misc":{}}},"appearance":{"mode":"embed","embed":{"show_edit_changes":false,"show_footer":true,"embed_images":true,"daily_overview":{"color":16312092,"icon":""},"new":{"icon":"https://i.imgur.com/6HIbEq8.png","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"edit":{"icon":"","color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE"},"upload/overwrite":{"icon":"https://i.imgur.com/egJpa81.png","color":12390624},"upload/upload":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"upload/revert":{"icon":"https://i.imgur.com/egJpa81.png","color":null},"delete/delete":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/delete_redir":{"icon":"https://i.imgur.com/BU77GD3.png","color":1},"delete/restore":{"icon":"https://i.imgur.com/9MnROIU.png","color":null},"delete/revision":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"delete/event":{"icon":"https://i.imgur.com/1gps6EZ.png","color":null},"merge/merge":{"icon":"https://i.imgur.com/uQMK9XK.png","color":null},"move/move":{"icon":"https://i.imgur.com/eXz9dog.png","color":null},"move/move_redir":{"icon":"https://i.imgur.com/UtC3YX2.png","color":null},"block/block":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"block/unblock":{"icon":"https://i.imgur.com/bvtBJ8o.png","color":1},"block/reblock":{"icon":"https://i.imgur.com/g7KgZHf.png","color":1},"protect/protect":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/modify":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/move_prot":{"icon":"https://i.imgur.com/bzPt89Z.png","color":null},"protect/unprotect":{"icon":"https://i.imgur.com/2wN3Qcq.png","color":null},"import/upload":{"icon":"","color":null},"import/interwiki":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"rights/rights":{"icon":"","color":null},"rights/autopromote":{"icon":"","color":null},"abusefilter/abusefilter":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/modify":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"abusefilter/create":{"icon":"https://i.imgur.com/Sn2NzRJ.png","color":null},"interwiki/iw_add":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_edit":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"interwiki/iw_delete":{"icon":"https://i.imgur.com/sFkhghb.png","color":null},"curseprofile/comment-created":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-edited":{"icon":"https://i.imgur.com/Lvy5E32.png","color":null},"curseprofile/comment-deleted":{"icon":"","color":null},"curseprofile/comment-purged":{"icon":"","color":null},"curseprofile/comment-replied":{"icon":"https://i.imgur.com/hkyYsI1.png","color":null},"curseprofile/profile-edited":{"icon":"","color":null},"contentmodel/change":{"icon":"","color":null},"cargo/deletetable":{"icon":"","color":null},"cargo/createtable":{"icon":"","color":null},"cargo/replacetable":{"icon":"","color":null},"cargo/recreatetable":{"icon":"","color":null},"sprite/sprite":{"icon":"","color":null},"sprite/sheet":{"icon":"","color":null},"sprite/slice":{"icon":"","color":null},"managetags/create":{"icon":"","color":null},"managetags/delete":{"icon":"","color":null},"managetags/activate":{"icon":"","color":null},"managetags/deactivate":{"icon":"","color":null},"tag/update":{"icon":"","color":null},"suppressed":{"icon":"https://i.imgur.com/1gps6EZ.png","color":8092539},"discussion/forum/post":{"icon":"","color":null},"discussion/forum/reply":{"icon":"","color":null},"discussion/forum/poll":{"icon":"","color":null},"discussion/forum/quiz":{"icon":"","color":null},"discussion/wall/post":{"icon":"","color":null},"discussion/wall/reply":{"icon":"","color":null},"discussion/comment/post":{"icon":"","color":null},"discussion/comment/reply":{"icon":"","color":null}}},"fandom_discussions":{"enabled":false,"wiki_id":1885853,"wiki_url":"https://wikibot.fandom.com/","cooldown":60,"webhookURL":"https://discordapp.com/api/webhooks/111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limit":5,"appearance":{"mode":"embed","embed":{"show_content":true}},"show_forums":[]}}"""
+
+
+class TestMWFormatter(unittest.TestCase):
+ def setUp(self) -> None:
+ with open("settings.json", "r") as c_file:
+ self.current_file = c_file.read()
+
+ def tearDown(self) -> None:
+ with open("settings.json", "w") as s_file:
+ s_file.write(self.current_file)
+
+ def test_11311_migration(self):
+ with open("settings.json", "w") as s_file:
+ s_file.write(test_file)
+ importlib.import_module("src.migrations.11311")
+ with open("settings.json", "r") as c_file:
+ current_settings = c_file.read()
+ self.assertEqual(json.loads(result_file), json.loads(current_settings))
\ No newline at end of file
diff --git a/test/test_abusefilter.py b/test/test_abusefilter.py
index 517461d..678e084 100644
--- a/test/test_abusefilter.py
+++ b/test/test_abusefilter.py
@@ -55,5 +55,4 @@ class TestMWFormatter(unittest.TestCase):
# ctx.client.return_value = Mock(spec=Client)
edit_c, results = get_objects("abuselog")
result = repr(test(ctx, edit_c))
- print(result)
self.assertEqual(results, result)
diff --git a/test/test_cargo.py b/test/test_cargo.py
index 68024c0..d51c48b 100644
--- a/test/test_cargo.py
+++ b/test/test_cargo.py
@@ -62,5 +62,4 @@ class TestMWFormatter(unittest.TestCase):
# ctx.client.return_value = Mock(spec=Client)
edit_c, results = get_objects("cargo/createtable")
result = repr(test(ctx, edit_c))
- print(result)
self.assertEqual(results, result)
diff --git a/test/test_datadump.py b/test/test_datadump.py
index f3ddfa9..bac093c 100644
--- a/test/test_datadump.py
+++ b/test/test_datadump.py
@@ -55,5 +55,4 @@ class TestMWFormatter(unittest.TestCase):
# ctx.client.return_value = Mock(spec=Client)
edit_c, results = get_objects("datadump/generate")
result = repr(test(ctx, edit_c))
- print(result)
self.assertEqual(results, result)
diff --git a/test/test_interwiki.py b/test/test_interwiki.py
index 4e740fb..7022265 100644
--- a/test/test_interwiki.py
+++ b/test/test_interwiki.py
@@ -55,5 +55,4 @@ class TestMWFormatter(unittest.TestCase):
# ctx.client.return_value = Mock(spec=Client)
edit_c, results = get_objects("interwiki/iw_add")
result = repr(test(ctx, edit_c))
- print(result)
self.assertEqual(results, result)