diff --git a/src/microdot.py b/src/microdot.py index 196b3b5..030c6a3 100644 --- a/src/microdot.py +++ b/src/microdot.py @@ -736,7 +736,7 @@ class URLPattern(): if type_ == 'string': pattern = '[^/]+' elif type_ == 'int': - pattern = '\\d+' + pattern = '-?\\d+' elif type_ == 'path': pattern = '.+' elif type_.startswith('re:'): diff --git a/tests/test_url_pattern.py b/tests/test_url_pattern.py index d6520b5..7ea6a30 100644 --- a/tests/test_url_pattern.py +++ b/tests/test_url_pattern.py @@ -56,10 +56,12 @@ class TestURLPattern(unittest.TestCase): p = URLPattern('/users///') self.assertEqual(p.match('/users/123/456/'), {'id': 123, 'id2': 456}) + self.assertEqual(p.match('/users/123/-456/'), {'id': 123, 'id2': -456}) self.assertIsNone(p.match('/users/')) - self.assertIsNone(p.match('/users/123/456')) + self.assertIsNone(p.match('/users/123/-456')) self.assertIsNone(p.match('/users/123/abc/')) - self.assertIsNone(p.match('/users/123/456/abc')) + self.assertIsNone(p.match('/users/123/-456/abc')) + self.assertIsNone(p.match('/users/--123/456/')) def test_path_argument(self): p = URLPattern('/users/')