summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pygments/lexers/textfmts.py6
-rw-r--r--tests/test_textfmts.py28
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 = [