Activate workflow on all branches

This commit is contained in:
Leigh Morresi
2021-02-27 09:05:25 +01:00
parent 468184bc3a
commit ec1ac300af
5 changed files with 52 additions and 40 deletions

View File

@@ -6,9 +6,9 @@ name: changedetection.io
on: on:
push: push:
branches: [ master ] branches: [ * ]
pull_request: pull_request:
branches: [ master ] branches: [ * ]
jobs: jobs:
build: build:

View File

@@ -1,4 +1,12 @@
[pytest] [pytest]
addopts = --no-start-live-server --live-server-port=5005 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

View File

@@ -7,7 +7,6 @@ import os
# https://github.com/pallets/flask/blob/1.1.2/examples/tutorial/tests/test_auth.py # https://github.com/pallets/flask/blob/1.1.2/examples/tutorial/tests/test_auth.py
# Much better boilerplate than the docs # Much better boilerplate than the docs
# https://www.python-boilerplate.com/py3+flask+pytest/ # https://www.python-boilerplate.com/py3+flask+pytest/
@@ -16,7 +15,6 @@ global app
@pytest.fixture(scope='session') @pytest.fixture(scope='session')
def app(request): def app(request):
"""Create application for the tests.""" """Create application for the tests."""
datastore_path = "./test-datastore" datastore_path = "./test-datastore"
try: try:
@@ -42,6 +40,16 @@ def app(request):
# This is fine in the case of a failure. # This is fine in the case of a failure.
pass 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) request.addfinalizer(teardown)
return app yield app

View File

@@ -3,7 +3,23 @@
import time import time
from flask import url_for from flask import url_for
from urllib.request import urlopen 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(): def set_original_response():
test_return_data = """<html> test_return_data = """<html>
@@ -14,7 +30,6 @@ def set_original_response():
So let's see what happens. </br> So let's see what happens. </br>
</body> </body>
</html> </html>
""" """
with open("test-datastore/output.txt", "w") as f: with open("test-datastore/output.txt", "w") as f:
@@ -30,7 +45,6 @@ def set_modified_response():
So let's see what happens. </br> So let's see what happens. </br>
</body> </body>
</html> </html>
""" """
with open("test-datastore/output.txt", "w") as f: 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): 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() set_original_response()
live_server.start()
# Add our URL to the import page # Add our URL to the import page
res = client.post( res = client.post(
url_for("import_page"), url_for("import_page"),
@@ -91,13 +95,13 @@ def test_check_basic_change_detection_functionality(client, live_server):
assert b'unviewed' in res.data 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 # 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 assert b'Compare newest' in res.data
time.sleep(2) time.sleep(2)
# Do this a few times.. ensures we dont accidently set the status # 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) client.get(url_for("api_watch_checknow"), follow_redirects=True)
# Give the thread time to pick it up # 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'unviewed' not in res.data
assert b'test-endpoint' in res.data assert b'test-endpoint' in res.data
set_original_response() set_original_response()
client.get(url_for("api_watch_checknow"), follow_redirects=True) client.get(url_for("api_watch_checknow"), follow_redirects=True)
time.sleep(sleep_time_for_fetch_thread) time.sleep(sleep_time_for_fetch_thread)
res = client.get(url_for("index")) res = client.get(url_for("index"))
assert b'unviewed' in res.data assert b'unviewed' in res.data

View File

@@ -3,6 +3,7 @@
import time import time
from flask import url_for from flask import url_for
from urllib.request import urlopen from urllib.request import urlopen
import pytest
# Unit test of the stripper # Unit test of the stripper
@@ -12,9 +13,9 @@ def test_strip_text_func():
test_content = """ test_content = """
Some content Some content
is listed here is listed here
but sometimes we want to remove the lines. but sometimes we want to remove the lines.
but not always.""" but not always."""
original_length = len(test_content.splitlines()) original_length = len(test_content.splitlines())
@@ -32,7 +33,7 @@ def test_strip_text_func():
assert "Some content" in stripped_content assert "Some content" in stripped_content
def set_original_response(): def set_original_ignore_response():
test_return_data = """<html> test_return_data = """<html>
<body> <body>
Some initial text</br> Some initial text</br>
@@ -49,7 +50,7 @@ def set_original_response():
# Is the same but includes ZZZZZ, 'ZZZZZ' is the last line in ignore_text # 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 = """<html> test_return_data = """<html>
<body> <body>
Some initial text</br> Some initial text</br>
@@ -70,21 +71,13 @@ def test_check_ignore_text_functionality(client, live_server):
sleep_time_for_fetch_thread = 5 sleep_time_for_fetch_thread = 5
ignore_text = "XXXXX\nYYYYY\nZZZZZ" ignore_text = "XXXXX\nYYYYY\nZZZZZ"
set_original_response() set_original_ignore_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()
# Give the endpoint time to spin up # Give the endpoint time to spin up
time.sleep(1) time.sleep(1)
# Add our URL to the import page # 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( res = client.post(
url_for("import_page"), url_for("import_page"),
data={"urls": test_url}, 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) # It should report nothing found (no new 'unviewed' class)
res = client.get(url_for("index")) res = client.get(url_for("index"))
assert b'unviewed' not in res.data 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 # Trigger a check
client.get(url_for("api_watch_checknow"), follow_redirects=True) 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) # It should report nothing found (no new 'unviewed' class)
res = client.get(url_for("index")) res = client.get(url_for("index"))
assert b'unviewed' not in res.data 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()