summaryrefslogtreecommitdiff
path: root/crocoite/test_tools.py
diff options
context:
space:
mode:
Diffstat (limited to 'crocoite/test_tools.py')
-rw-r--r--crocoite/test_tools.py37
1 files changed, 32 insertions, 5 deletions
diff --git a/crocoite/test_tools.py b/crocoite/test_tools.py
index 947d020..416b954 100644
--- a/crocoite/test_tools.py
+++ b/crocoite/test_tools.py
@@ -25,9 +25,9 @@ import pytest
from warcio.archiveiterator import ArchiveIterator
from warcio.warcwriter import WARCWriter
from warcio.statusandheaders import StatusAndHeaders
+from pkg_resources import parse_version
-from .tools import mergeWarc
-from .util import packageUrl
+from .tools import mergeWarc, Errata, FixableErrata
@pytest.fixture
def writer():
@@ -48,9 +48,11 @@ def recordsEqual(golden, underTest):
def makeGolden(writer, records):
# additional warcinfo is written. Content does not matter.
- record = writer.create_warc_record (packageUrl ('warcinfo'), 'warcinfo',
+ record = writer.create_warc_record (
+ '',
+ 'warcinfo',
payload=b'',
- warc_headers_dict={'Content-Type': 'text/plain; encoding=utf-8'})
+ warc_headers_dict={'Content-Type': 'application/json; charset=utf-8'})
records.insert (0, record)
return records
@@ -96,7 +98,7 @@ def test_different_payload(writer):
httpHeaders = StatusAndHeaders('200 OK', {}, protocol='HTTP/1.1')
record = writer.create_warc_record ('http://example.com/', 'response',
- payload=BytesIO('data{}'.format(i).encode ('utf8')),
+ payload=BytesIO(f'data{i}'.encode ('utf8')),
warc_headers_dict=warcHeaders, http_headers=httpHeaders)
records.append (record)
@@ -195,3 +197,28 @@ def test_resp_revisit_other_url(writer):
output.seek(0)
recordsEqual (makeGolden (writer, records), ArchiveIterator (output))
+def test_errata_contains():
+ """ Test version matching """
+ e = Errata('some-uuid', 'description', ['a<1.0'])
+ assert {'a': parse_version('0.1')} in e
+ assert {'a': parse_version('1.0')} not in e
+ assert {'b': parse_version('1.0')} not in e
+
+ e = Errata('some-uuid', 'description', ['a<1.0,>0.1'])
+ assert {'a': parse_version('0.1')} not in e
+ assert {'a': parse_version('0.2')} in e
+ assert {'a': parse_version('1.0')} not in e
+
+ # a AND b
+ e = Errata('some-uuid', 'description', ['a<1.0', 'b>1.0'])
+ assert {'a': parse_version('0.1')} not in e
+ assert {'b': parse_version('1.1')} not in e
+ assert {'a': parse_version('0.1'), 'b': parse_version('1.1')} in e
+
+def test_errata_fixable ():
+ e = Errata('some-uuid', 'description', ['a<1.0', 'b>1.0'])
+ assert not e.fixable
+
+ e = FixableErrata('some-uuid', 'description', ['a<1.0', 'b>1.0'])
+ assert e.fixable
+