Skip to content

Commit 1784faa

Browse files
committed
Add some more testcases
1 parent f537df1 commit 1784faa

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

Lib/http/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -951,7 +951,7 @@ def parse_range(self):
951951
range_header = self.headers.get('range')
952952
if not range_header:
953953
return None
954-
m = re.match(RANGE_REGEX_PATTERN, range_header)
954+
m = RANGE_REGEX_PATTERN.match(range_header)
955955
if not m:
956956
return None
957957

Lib/test/test_httpservers.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,7 @@ def test_range_get(self):
544544
self.assertEqual(response.getheader('accept-ranges'), 'bytes')
545545
self.check_status_and_reason(response, HTTPStatus.OK, data=self.data)
546546

547+
# valid ranges
547548
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=3-12'})
548549
self.assertEqual(response.getheader('content-range'), 'bytes 3-12/30')
549550
self.assertEqual(response.getheader('content-length'), '10')
@@ -559,6 +560,18 @@ def test_range_get(self):
559560
self.assertEqual(response.getheader('content-length'), '5')
560561
self.check_status_and_reason(response, HTTPStatus.PARTIAL_CONTENT, data=self.data[25:])
561562

563+
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=29-29'})
564+
self.assertEqual(response.getheader('content-range'), 'bytes 29-29/30')
565+
self.assertEqual(response.getheader('content-length'), '1')
566+
self.check_status_and_reason(response, HTTPStatus.PARTIAL_CONTENT, data=self.data[29:])
567+
568+
# end > file size
569+
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=25-100'})
570+
self.assertEqual(response.getheader('content-range'), 'bytes 25-29/30')
571+
self.assertEqual(response.getheader('content-length'), '5')
572+
self.check_status_and_reason(response, HTTPStatus.PARTIAL_CONTENT, data=self.data[25:])
573+
574+
# invalid ranges
562575
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=100-200'})
563576
self.check_status_and_reason(response, HTTPStatus.REQUESTED_RANGE_NOT_SATISFIABLE)
564577

@@ -568,6 +581,9 @@ def test_range_get(self):
568581
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=wrong format'})
569582
self.check_status_and_reason(response, HTTPStatus.OK, data=self.data)
570583

584+
response = self.request(self.base_url + '/test', headers={'Range': 'bytes=-'})
585+
self.check_status_and_reason(response, HTTPStatus.OK, data=self.data)
586+
571587
def test_head(self):
572588
response = self.request(
573589
self.base_url + '/test', method='HEAD')

0 commit comments

Comments
 (0)