mirror of https://github.com/yandex/gixy
138 lines
4.2 KiB
Python
138 lines
4.2 KiB
Python
from nose.tools import with_setup, assert_equals, assert_not_equals, assert_true
|
|
from gixy.core.context import get_context, pop_context, push_context, purge_context, CONTEXTS, Context
|
|
from gixy.directives.block import Root
|
|
from gixy.core.variable import Variable
|
|
from gixy.core.regexp import Regexp
|
|
|
|
|
|
def setup():
|
|
assert len(CONTEXTS) == 0
|
|
|
|
|
|
def tear_down():
|
|
purge_context()
|
|
|
|
|
|
@with_setup(setup, tear_down)
|
|
def test_push_pop_context():
|
|
root_a = Root()
|
|
push_context(root_a)
|
|
assert len(CONTEXTS) == 1
|
|
root_b = Root()
|
|
push_context(root_b)
|
|
assert len(CONTEXTS) == 2
|
|
|
|
poped = pop_context()
|
|
assert len(CONTEXTS) == 1
|
|
assert poped.block == root_b
|
|
poped = pop_context()
|
|
assert len(CONTEXTS) == 0
|
|
assert poped.block == root_a
|
|
|
|
|
|
@with_setup(setup, tear_down)
|
|
def test_push_get_purge_context():
|
|
root = Root()
|
|
push_context(root)
|
|
assert len(CONTEXTS) == 1
|
|
assert get_context().block == root
|
|
root = Root()
|
|
push_context(root)
|
|
assert len(CONTEXTS) == 2
|
|
assert get_context().block == root
|
|
|
|
purge_context()
|
|
assert len(CONTEXTS) == 0
|
|
|
|
|
|
@with_setup(setup, tear_down)
|
|
def test_add_variables():
|
|
context = push_context(Root())
|
|
assert len(context.variables['index']) == 0
|
|
assert len(context.variables['name']) == 0
|
|
|
|
one_str_var = Variable('1')
|
|
context.add_var('1', one_str_var)
|
|
one_int_var = Variable(1)
|
|
context.add_var(1, one_int_var)
|
|
some_var = Variable('some')
|
|
context.add_var('some', some_var)
|
|
|
|
assert len(context.variables['index']) == 1
|
|
assert context.variables['index'][1] == one_int_var
|
|
assert len(context.variables['name']) == 1
|
|
assert context.variables['name']['some'] == some_var
|
|
context.clear_index_vars()
|
|
assert len(context.variables['index']) == 0
|
|
assert len(context.variables['name']) == 1
|
|
assert context.variables['name']['some'] == some_var
|
|
|
|
|
|
@with_setup(setup, tear_down)
|
|
def test_get_variables():
|
|
context = push_context(Root())
|
|
assert len(context.variables['index']) == 0
|
|
assert len(context.variables['name']) == 0
|
|
|
|
one_var = Variable(1)
|
|
context.add_var(1, one_var)
|
|
some_var = Variable('some')
|
|
context.add_var('some', some_var)
|
|
|
|
assert context.get_var(1) == one_var
|
|
assert context.get_var('some') == some_var
|
|
# Checks not existed variables, for now context may return None
|
|
assert context.get_var(0) == None
|
|
assert context.get_var('not_existed') == None
|
|
# Checks builtins variables
|
|
assert context.get_var('uri')
|
|
assert context.get_var('document_uri')
|
|
assert context.get_var('arg_asdsadasd')
|
|
assert context.get_var('args')
|
|
|
|
|
|
@with_setup(setup, tear_down)
|
|
def test_context_depend_variables():
|
|
push_context(Root())
|
|
assert len(get_context().variables['index']) == 0
|
|
assert len(get_context().variables['name']) == 0
|
|
|
|
get_context().add_var(1, Variable(1, value='one'))
|
|
get_context().add_var('some', Variable('some', value='some'))
|
|
|
|
assert get_context().get_var(1).value == 'one'
|
|
assert get_context().get_var('some').value == 'some'
|
|
|
|
# Checks top context variables are still exists
|
|
push_context(Root())
|
|
assert get_context().get_var(1).value == 'one'
|
|
assert get_context().get_var('some').value == 'some'
|
|
|
|
# Checks variable overriding
|
|
get_context().add_var('some', Variable('some', value='some_new'))
|
|
get_context().add_var('foo', Variable('foo', value='foo'))
|
|
assert get_context().get_var('some').value != 'some'
|
|
assert get_context().get_var('some').value == 'some_new'
|
|
assert get_context().get_var('foo').value == 'foo'
|
|
assert get_context().get_var(1).value == 'one'
|
|
|
|
# Checks variables after restore previous context
|
|
pop_context()
|
|
assert get_context().get_var('some').value != 'some_new'
|
|
assert get_context().get_var('some').value == 'some'
|
|
assert get_context().get_var('foo') == None
|
|
assert get_context().get_var(1).value == 'one'
|
|
|
|
|
|
@with_setup(setup, tear_down)
|
|
def test_push_failed_with_regexp_py35_gixy_10():
|
|
push_context(Root())
|
|
assert len(get_context().variables['index']) == 0
|
|
assert len(get_context().variables['name']) == 0
|
|
|
|
regexp = Regexp('^/some/(.*?)')
|
|
for name, group in regexp.groups.items():
|
|
get_context().add_var(name, Variable(name=name, value=group))
|
|
|
|
push_context(Root())
|