diff options
| -rw-r--r-- | pygments/lexers/textfmts.py | 6 | ||||
| -rw-r--r-- | tests/test_textfmts.py | 28 |
2 files changed, 31 insertions, 3 deletions
diff --git a/pygments/lexers/textfmts.py b/pygments/lexers/textfmts.py index cd5d4d2a..a310f8b5 100644 --- a/pygments/lexers/textfmts.py +++ b/pygments/lexers/textfmts.py @@ -179,9 +179,9 @@ class HttpLexer(RegexLexer): bygroups(Name.Function, Text, Name.Namespace, Text, Keyword.Reserved, Operator, Number, Text), 'headers'), - (r'(HTTP)(/)(1\.[01]|2|3)( +)(\d{3})( +)([^\r\n]+)(\r?\n|\Z)', - bygroups(Keyword.Reserved, Operator, Number, Text, Number, - Text, Name.Exception, Text), + (r'(HTTP)(/)(1\.[01]|2|3)( +)(\d{3})(?:( +)([^\r\n]+))?(\r?\n|\Z)', + bygroups(Keyword.Reserved, Operator, Number, Text, Number, Text, + Name.Exception, Text), 'headers'), ], 'headers': [ diff --git a/tests/test_textfmts.py b/tests/test_textfmts.py index 5f369007..6d382e8a 100644 --- a/tests/test_textfmts.py +++ b/tests/test_textfmts.py @@ -18,6 +18,34 @@ def lexer(): yield HttpLexer() +def test_http_status_line(lexer): + fragment = u'HTTP/1.1 200 OK\n' + tokens = [ + (Token.Keyword.Reserved, u'HTTP'), + (Token.Operator, u'/'), + (Token.Number, u'1.1'), + (Token.Text, u' '), + (Token.Number, u'200'), + (Token.Text, u' '), + (Token.Name.Exception, u'OK'), + (Token.Text, u'\n'), + ] + assert list(lexer.get_tokens(fragment)) == tokens + + +def test_http_status_line_without_reason_phrase(lexer): + fragment = u'HTTP/1.1 200\n' + tokens = [ + (Token.Keyword.Reserved, u'HTTP'), + (Token.Operator, u'/'), + (Token.Number, u'1.1'), + (Token.Text, u' '), + (Token.Number, u'200'), + (Token.Text, u'\n'), + ] + assert list(lexer.get_tokens(fragment)) == tokens + + def test_application_xml(lexer): fragment = u'GET / HTTP/1.0\nContent-Type: application/xml\n\n<foo>\n' tokens = [ |
