From c70706a27be0803c2380c73ca866cad2f0171711 Mon Sep 17 00:00:00 2001 From: dgtlmoon Date: Tue, 29 Apr 2025 11:20:21 +0200 Subject: [PATCH] Improved global ignore test (#3140) --- changedetectionio/tests/test_ignore_text.py | 43 +++++++++++++++------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/changedetectionio/tests/test_ignore_text.py b/changedetectionio/tests/test_ignore_text.py index 3262085a..7864e08e 100644 --- a/changedetectionio/tests/test_ignore_text.py +++ b/changedetectionio/tests/test_ignore_text.py @@ -32,13 +32,14 @@ def test_strip_text_func(): stripped_content = html_tools.strip_ignore_text(test_content, ignore) assert stripped_content == "Some initial text\n\nWhich is across multiple lines\n\n\n\nSo let's see what happens." -def set_original_ignore_response(): - test_return_data = """ +def set_original_ignore_response(ver_stamp="123"): + test_return_data = f""" Some initial text

Which is across multiple lines


So let's see what happens.
+ @@ -48,13 +49,14 @@ def set_original_ignore_response(): f.write(test_return_data) -def set_modified_original_ignore_response(): - test_return_data = """ +def set_modified_original_ignore_response(ver_stamp="123"): + test_return_data = f""" Some NEW nice initial text

Which is across multiple lines


So let's see what happens.
+

new ignore stuff

blah

@@ -67,14 +69,15 @@ def set_modified_original_ignore_response(): # Is the same but includes ZZZZZ, 'ZZZZZ' is the last line in ignore_text -def set_modified_ignore_response(): - test_return_data = """ +def set_modified_ignore_response(ver_stamp="123"): + test_return_data = f""" Some initial text

Which is across multiple lines

ZZZZz


So let's see what happens.
+ @@ -165,9 +168,9 @@ def test_check_ignore_text_functionality(client, live_server, measure_memory_usa assert b'Deleted' in res.data # When adding some ignore text, it should not trigger a change, even if something else on that line changes -def test_check_global_ignore_text_functionality(client, live_server, measure_memory_usage): - #live_server_setup(live_server) - ignore_text = "XXXXX\r\nYYYYY\r\nZZZZZ" +def _run_test_global_ignore(client, as_source=False, extra_ignore=""): + ignore_text = "XXXXX\r\nYYYYY\r\nZZZZZ\r\n"+extra_ignore + set_original_ignore_response() # Goto the settings page, add our ignore text @@ -186,6 +189,10 @@ def test_check_global_ignore_text_functionality(client, live_server, measure_mem # Add our URL to the import page test_url = url_for('test_endpoint', _external=True) + if as_source: + # Switch to source mode so we can test that too! + test_url = "source:"+test_url + res = client.post( url_for("imports.import_page"), data={"urls": test_url}, @@ -203,12 +210,15 @@ def test_check_global_ignore_text_functionality(client, live_server, measure_mem follow_redirects=True ) assert b"Updated watch." in res.data - + wait_for_all_checks(client) # Check it saved res = client.get( url_for("settings.settings_page"), ) - assert bytes(ignore_text.encode('utf-8')) in res.data + + for i in ignore_text.splitlines(): + assert bytes(i.encode('utf-8')) in res.data + # Trigger a check client.get(url_for("ui.form_watch_checknow"), follow_redirects=True) @@ -221,7 +231,8 @@ def test_check_global_ignore_text_functionality(client, live_server, measure_mem # Make a change which includes the ignore text, it should be ignored and no 'change' triggered # It adds text with "ZZZZzzzz" and "ZZZZ" is in the ignore list - set_modified_ignore_response() + # And tweaks the ver_stamp which should be picked up by global regex ignore + set_modified_ignore_response(ver_stamp=time.time()) # Trigger a check client.get(url_for("ui.form_watch_checknow"), follow_redirects=True) @@ -243,3 +254,11 @@ def test_check_global_ignore_text_functionality(client, live_server, measure_mem res = client.get(url_for("ui.form_delete", uuid="all"), follow_redirects=True) assert b'Deleted' in res.data + +def test_check_global_ignore_text_functionality(client, live_server): + #live_server_setup(live_server) + _run_test_global_ignore(client, as_source=False) + +def test_check_global_ignore_text_functionality_as_source(client, live_server): + #live_server_setup(live_server) + _run_test_global_ignore(client, as_source=True, extra_ignore='/\?v=\d/')