| Index: tests/test_parser.py | 
| =================================================================== | 
| --- a/tests/test_parser.py | 
| +++ b/tests/test_parser.py | 
| @@ -153,31 +153,63 @@ | 
| assert line.target == 'foo:bar/baz.txt' | 
| def test_parse_bad_instruction(): | 
| with pytest.raises(ParseError): | 
| parse_line('%foo bar%') | 
| -def test_parse_bad_header(): | 
| +def test_parse_start(): | 
| + # Header-line lines are headers. | 
| + assert parse_line('[Adblock Plus 1.1]', mode='start').type == 'header' | 
| + # But space is not allowed in headers. | 
| + assert parse_line(' [Adblock Plus 1.1]', mode='start').type == 'filter' | 
| + assert parse_line('[Adblock Plus 1.1] ', mode='start').type == 'filter' | 
| + | 
| with pytest.raises(ParseError): | 
| - parse_line('[Adblock 1.1]') | 
| + # Invalid headers cause exceptions. | 
| + parse_line('[Adblock 1.1]', mode='start') | 
| + | 
| + # Metadata-like lines are metadata. | 
| + assert parse_line('! Foo: bar', mode='metadata').type == 'metadata' | 
| + | 
| + | 
| +def test_parse_metadata(): | 
| + # Header-like lines are just filters. | 
| + assert parse_line('[Adblock 1.1]', mode='metadata').type == 'filter' | 
| + # Metadata-like lines are metadata. | 
| + assert parse_line('! Foo: bar', mode='metadata').type == 'metadata' | 
| + | 
| + | 
| +def test_parse_body(): | 
| + # Header-like lines are just filters. | 
| + assert parse_line('[Adblock 1.1]', mode='body').type == 'filter' | 
| + # Metadata-like lines are comments. | 
| + assert parse_line('! Foo: bar', mode='body').type == 'comment' | 
| + # But there's an exception for the checksum. | 
| + assert parse_line('! Checksum: 42', mode='body').type == 'metadata' | 
| + | 
| + | 
| +def test_parse_invalid_mode(): | 
| + with pytest.raises(ValueError): | 
| + parse_line('', mode='nonsense') | 
| def test_parse_filterlist(): | 
| result = parse_filterlist(['[Adblock Plus 1.1]', | 
| - '! Last modified: 26 Jul 2018 02:10 UTC', | 
| + ' ! Last modified: 26 Jul 2018 02:10 UTC ', | 
| '! Homepage : http://aaa.com/b', | 
| '||example.com^', | 
| '! Checksum: OaopkIiiAl77sSHk/VAWDA', | 
| '! Note: bla bla']) | 
| assert next(result) == Header('Adblock Plus 1.1') | 
| - assert next(result) == Metadata('Last modified', '26 Jul 2018 02:10 UTC') | 
| + # Check that trailing space is not stripped (like in ABP). | 
| + assert next(result) == Metadata('Last modified', '26 Jul 2018 02:10 UTC ') | 
| assert next(result) == Metadata('Homepage', 'http://aaa.com/b') | 
| assert next(result).type == 'filter' | 
| assert next(result) == Metadata('Checksum', 'OaopkIiiAl77sSHk/VAWDA') | 
| assert next(result).type == 'comment' | 
| with pytest.raises(StopIteration): | 
| next(result) |