diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index ae14bba8..53c1e1d2 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -6,9 +6,9 @@ name: changedetection.io on: push: - branches: [ master ] + branches: [ * ] pull_request: - branches: [ master ] + branches: [ * ] jobs: build: diff --git a/backend/pytest.ini b/backend/pytest.ini index 7716524b..2ac84422 100644 --- a/backend/pytest.ini +++ b/backend/pytest.ini @@ -1,4 +1,12 @@ [pytest] addopts = --no-start-live-server --live-server-port=5005 -live_server_scope = function +#testpaths = tests pytest_invenio +#live_server_scope = session +#filterwarnings = + #ignore::DeprecationWarning:sqlalchemy.*: + +; logging options +#log_cli = 1 +#log_cli_level = DEBUG +#log_cli_format = %(asctime)s %(name)s: %(levelname)s %(message)s \ No newline at end of file diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py index 8cb28da4..2edd3cd0 100644 --- a/backend/tests/conftest.py +++ b/backend/tests/conftest.py @@ -7,7 +7,6 @@ import os # https://github.com/pallets/flask/blob/1.1.2/examples/tutorial/tests/test_auth.py - # Much better boilerplate than the docs # https://www.python-boilerplate.com/py3+flask+pytest/ @@ -16,7 +15,6 @@ global app @pytest.fixture(scope='session') def app(request): """Create application for the tests.""" - datastore_path = "./test-datastore" try: @@ -42,6 +40,16 @@ def app(request): # This is fine in the case of a failure. pass + @live_server.app.route('/test-endpoint') + def test_endpoint(): + # Tried using a global var here but didn't seem to work, so reading from a file instead. + with open("test-datastore/output.txt", "r") as f: + return f.read() + + live_server.start() + + assert 1 == 1 request.addfinalizer(teardown) - return app + yield app + diff --git a/backend/tests/test_backend.py b/backend/tests/test_backend.py index e2040da0..dac5aa5d 100644 --- a/backend/tests/test_backend.py +++ b/backend/tests/test_backend.py @@ -3,7 +3,23 @@ import time from flask import url_for from urllib.request import urlopen +import pytest +sleep_time_for_fetch_thread = 3 + + +def test_setup_liveserver(live_server): + + + @live_server.app.route('/test-endpoint') + def test_endpoint(): + # Tried using a global var here but didn't seem to work, so reading from a file instead. + with open("test-datastore/output.txt", "r") as f: + return f.read() + live_server.start() + + + assert 1 == 1 def set_original_response(): test_return_data = """ @@ -14,7 +30,6 @@ def set_original_response(): So let's see what happens.
- """ with open("test-datastore/output.txt", "w") as f: @@ -30,7 +45,6 @@ def set_modified_response(): So let's see what happens.
- """ with open("test-datastore/output.txt", "w") as f: @@ -38,18 +52,8 @@ def set_modified_response(): def test_check_basic_change_detection_functionality(client, live_server): - sleep_time_for_fetch_thread = 5 - - @live_server.app.route('/test-endpoint') - def test_endpoint(): - # Tried using a global var here but didn't seem to work, so reading from a file instead. - with open("test-datastore/output.txt", "r") as f: - return f.read() - set_original_response() - live_server.start() - # Add our URL to the import page res = client.post( url_for("import_page"), @@ -91,13 +95,13 @@ def test_check_basic_change_detection_functionality(client, live_server): assert b'unviewed' in res.data # Following the 'diff' link, it should no longer display as 'unviewed' even after we recheck it a few times - res = client.get(url_for("diff_history_page", uuid="first") ) + res = client.get(url_for("diff_history_page", uuid="first")) assert b'Compare newest' in res.data time.sleep(2) # Do this a few times.. ensures we dont accidently set the status - for n in range(3): + for n in range(2): client.get(url_for("api_watch_checknow"), follow_redirects=True) # Give the thread time to pick it up @@ -108,10 +112,10 @@ def test_check_basic_change_detection_functionality(client, live_server): assert b'unviewed' not in res.data assert b'test-endpoint' in res.data - set_original_response() client.get(url_for("api_watch_checknow"), follow_redirects=True) time.sleep(sleep_time_for_fetch_thread) res = client.get(url_for("index")) - assert b'unviewed' in res.data \ No newline at end of file + assert b'unviewed' in res.data + diff --git a/backend/tests/test_ignore_text.py b/backend/tests/test_ignore_text.py index dbb25743..da72b71e 100644 --- a/backend/tests/test_ignore_text.py +++ b/backend/tests/test_ignore_text.py @@ -3,6 +3,7 @@ import time from flask import url_for from urllib.request import urlopen +import pytest # Unit test of the stripper @@ -12,9 +13,9 @@ def test_strip_text_func(): test_content = """ Some content is listed here - + but sometimes we want to remove the lines. - + but not always.""" original_length = len(test_content.splitlines()) @@ -32,7 +33,7 @@ def test_strip_text_func(): assert "Some content" in stripped_content -def set_original_response(): +def set_original_ignore_response(): test_return_data = """ Some initial text
@@ -49,7 +50,7 @@ def set_original_response(): # Is the same but includes ZZZZZ, 'ZZZZZ' is the last line in ignore_text -def set_modified_response(): +def set_modified_ignore_response(): test_return_data = """ Some initial text
@@ -70,21 +71,13 @@ def test_check_ignore_text_functionality(client, live_server): sleep_time_for_fetch_thread = 5 ignore_text = "XXXXX\nYYYYY\nZZZZZ" - set_original_response() - - @live_server.app.route('/test-ignore-endpoint') - def test_ignore_endpoint(): - # Tried using a global var here but didn't seem to work, so reading from a file instead. - with open("test-datastore/output.txt", "r") as f: - return f.read() - - live_server.start() + set_original_ignore_response() # Give the endpoint time to spin up time.sleep(1) # Add our URL to the import page - test_url = url_for('test_ignore_endpoint', _external=True) + test_url = url_for('test_endpoint', _external=True) res = client.post( url_for("import_page"), data={"urls": test_url}, @@ -116,9 +109,9 @@ def test_check_ignore_text_functionality(client, live_server): # It should report nothing found (no new 'unviewed' class) res = client.get(url_for("index")) assert b'unviewed' not in res.data - assert b'/test-ignore-endpoint' in res.data + assert b'/test-endpoint' in res.data - set_modified_response() + set_modified_ignore_response() # Trigger a check client.get(url_for("api_watch_checknow"), follow_redirects=True) @@ -129,7 +122,6 @@ def test_check_ignore_text_functionality(client, live_server): # It should report nothing found (no new 'unviewed' class) res = client.get(url_for("index")) assert b'unviewed' not in res.data - assert b'/test-ignore-endpoint' in res.data + assert b'/test-endpoint' in res.data - live_server.stop()