Adds generic `filter_include` and `filter_exclude` plugins in anticipation for function script usage. Will detail it more with official docs at a later time!
105 lines
3.2 KiB
Python
105 lines
3.2 KiB
Python
import re
|
|
|
|
import pytest
|
|
from unit.script.conftest import single_variable_output
|
|
|
|
from ytdl_sub.script.script import Script
|
|
from ytdl_sub.script.utils.exceptions import UserThrownRuntimeError
|
|
|
|
|
|
class TestErrorFunctions:
|
|
def test_user_throw(self):
|
|
with pytest.raises(UserThrownRuntimeError, match=re.escape("test this error message")):
|
|
Script({"throw_error": "{%throw('test this error message')}"}).resolve()
|
|
|
|
def test_user_assert_raises(self):
|
|
with pytest.raises(UserThrownRuntimeError, match=re.escape("test this error message")):
|
|
Script({"throw_error": "{%assert(False, 'test this error message')}"}).resolve()
|
|
|
|
def test_user_assert_passthrough(self):
|
|
output = single_variable_output("{%assert(['a'], 'test this error message')}")
|
|
assert output == ["a"]
|
|
|
|
def test_user_assert_passthrough_as_arg(self):
|
|
output = single_variable_output("{%int(%assert('123', 'test this error message'))}")
|
|
assert output == 123
|
|
|
|
def test_user_assert_eq(self):
|
|
output = single_variable_output(
|
|
"""{
|
|
%int(
|
|
%assert_eq(
|
|
'123',
|
|
%array_at(['123'], 0),
|
|
'test this error message'
|
|
)
|
|
)
|
|
}"""
|
|
)
|
|
assert output == 123
|
|
|
|
def test_user_assert_eq_raises(self):
|
|
with pytest.raises(UserThrownRuntimeError, match=re.escape("test this error message")):
|
|
single_variable_output(
|
|
"""{
|
|
%int(
|
|
%assert_eq(
|
|
'123',
|
|
%array_at(['no'], 0),
|
|
'test this error message'
|
|
)
|
|
)
|
|
}"""
|
|
)
|
|
|
|
def test_user_assert_ne(self):
|
|
output = single_variable_output(
|
|
"""{
|
|
%int(
|
|
%assert_ne(
|
|
'123',
|
|
%array_at(['nope'], 0),
|
|
'test this error message'
|
|
)
|
|
)
|
|
}"""
|
|
)
|
|
assert output == 123
|
|
|
|
def test_user_assert_ne_raises(self):
|
|
with pytest.raises(UserThrownRuntimeError, match=re.escape("test this error message")):
|
|
single_variable_output(
|
|
"""{
|
|
%int(
|
|
%assert_ne(
|
|
'123',
|
|
%array_at(['123'], 0),
|
|
'test this error message'
|
|
)
|
|
)
|
|
}"""
|
|
)
|
|
|
|
def test_user_assert_then(self):
|
|
output = single_variable_output(
|
|
"""{
|
|
%assert_then(
|
|
'123',
|
|
%array_at(['nope'], 0),
|
|
'test this error message'
|
|
)
|
|
}"""
|
|
)
|
|
assert output == "nope"
|
|
|
|
def test_user_assert_then_raises(self):
|
|
with pytest.raises(UserThrownRuntimeError, match=re.escape("test this error message")):
|
|
single_variable_output(
|
|
"""{
|
|
%assert_then(
|
|
{},
|
|
%array_at(['nope'], 0),
|
|
'test this error message'
|
|
)
|
|
}"""
|
|
)
|