summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorAndrei Zeliankou <zelenkov@nginx.com>2021-02-18 21:21:55 +0000
committerAndrei Zeliankou <zelenkov@nginx.com>2021-02-18 21:21:55 +0000
commitaf3b6ef37d0d8d4d9e27d77a750419d96e0119bc (patch)
tree81a0b0ce05367abe3de3fe4990f2a575f2cb2d97 /test
parentecd0fc5d81541e1263a7cc35c632242e33c4082e (diff)
downloadunit-af3b6ef37d0d8d4d9e27d77a750419d96e0119bc.tar.gz
unit-af3b6ef37d0d8d4d9e27d77a750419d96e0119bc.tar.bz2
Tests: added regex check.
Diffstat (limited to 'test')
-rw-r--r--test/conftest.py2
-rw-r--r--test/test_routing.py12
-rw-r--r--test/unit/check/regex.py13
3 files changed, 27 insertions, 0 deletions
diff --git a/test/conftest.py b/test/conftest.py
index b49fb377..e75f9208 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -19,6 +19,7 @@ from unit.check.go import check_go
from unit.check.isolation import check_isolation
from unit.check.node import check_node
from unit.check.tls import check_openssl
+from unit.check.regex import check_regex
from unit.http import TestHTTP
from unit.option import option
from unit.utils import public_dir
@@ -176,6 +177,7 @@ def pytest_sessionstart(session):
option.current_dir, unit['temp_dir'], option.test_dir
)
option.available['modules']['node'] = check_node(option.current_dir)
+ option.available['modules']['regex'] = check_regex(unit['unitd'])
# remove None values
diff --git a/test/test_routing.py b/test/test_routing.py
index 4d27cb61..be9a1faf 100644
--- a/test/test_routing.py
+++ b/test/test_routing.py
@@ -229,6 +229,9 @@ class TestRouting(TestApplicationProto):
assert self.get(url='/ABc')['status'] == 404
def test_routes_empty_regex(self):
+ if not option.available['modules']['regex']:
+ pytest.skip('requires regex')
+
self.route_match({"uri":"~"})
assert self.get(url='/')['status'] == 200, 'empty regexp'
assert self.get(url='/anything')['status'] == 200, '/anything'
@@ -238,6 +241,9 @@ class TestRouting(TestApplicationProto):
assert self.get(url='/nothing')['status'] == 404, '/nothing'
def test_routes_bad_regex(self):
+ if not option.available['modules']['regex']:
+ pytest.skip('requires regex')
+
assert 'error' in self.route(
{"match": {"uri": "~/bl[ah"}, "action": {"return": 200}}
), 'bad regex'
@@ -255,6 +261,9 @@ class TestRouting(TestApplicationProto):
assert self.get(url='/nothing_z')['status'] == 500, '/nothing_z'
def test_routes_match_regex_case_sensitive(self):
+ if not option.available['modules']['regex']:
+ pytest.skip('requires regex')
+
self.route_match({"uri": "~/bl[ah]"})
assert self.get(url='/rlah')['status'] == 404, '/rlah'
@@ -263,6 +272,9 @@ class TestRouting(TestApplicationProto):
assert self.get(url='/BLAH')['status'] == 404, '/BLAH'
def test_routes_match_regex_negative_case_sensitive(self):
+ if not option.available['modules']['regex']:
+ pytest.skip('requires regex')
+
self.route_match({"uri": "!~/bl[ah]"})
assert self.get(url='/rlah')['status'] == 200, '/rlah'
diff --git a/test/unit/check/regex.py b/test/unit/check/regex.py
new file mode 100644
index 00000000..734c0150
--- /dev/null
+++ b/test/unit/check/regex.py
@@ -0,0 +1,13 @@
+import re
+import subprocess
+
+
+def check_regex(unitd):
+ output = subprocess.check_output(
+ [unitd, '--version'], stderr=subprocess.STDOUT
+ )
+
+ if re.search('--no-regex', output.decode()):
+ return False
+
+ return True