diff options
Diffstat (limited to 'crocoite/test_tools.py')
-rw-r--r-- | crocoite/test_tools.py | 37 |
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 + |