mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2025-12-14 03:56:08 +00:00
Activate workflow on all branches
This commit is contained in:
4
.github/workflows/python-app.yml
vendored
4
.github/workflows/python-app.yml
vendored
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user