Exemple #1
0
    def test_script_render_default(self):
        name = 'foo'
        regions = [
            TextRegion(content='a'),
            TextRegion(content='b'),
            TextRegion(content='c'),
        ]
        script = Script(
            name=name,
            regions=regions,
        )

        self.assertEqual('a\nb\nc', script.render())

        # Make sure a second call (with the cached value) returns the same
        # script.
        self.assertEqual('a\nb\nc', script.render())
Exemple #2
0
    def test_script_render_default(self):
        name = 'foo'
        regions = [
            TextRegion(content='a'),
            TextRegion(content='b'),
            TextRegion(content='c'),
        ]
        script = Script(
            name=name,
            regions=regions,
        )

        self.assertEqual('a\nb\nc', script.render())

        # Make sure a second call (with the cached value) returns the same
        # script.
        self.assertEqual('a\nb\nc', script.render())
Exemple #3
0
    def test_script_render(self):
        name = 'foo'
        regions = [
            TextRegion(content='a'),
        ]
        script = Script(
            name=name,
            regions=regions,
        )
        context = MagicMock()
        result = script.render(context=context)

        self.assertEqual(context.render_script.return_value, result)
        context.render_script.assert_called_once_with(script)
Exemple #4
0
    def test_script_render(self):
        name = 'foo'
        regions = [
            TextRegion(content='a'),
        ]
        script = Script(
            name=name,
            regions=regions,
        )
        context = MagicMock()
        result = script.render(context=context)

        self.assertEqual(context.render_script.return_value, result)
        context.render_script.assert_called_once_with(script)
Exemple #5
0
    def test_script_render_with_duplicate_includes_pragma_once(self):
        subsubscript = Script(
            name='a',
            regions=[
                TextRegion(content='a'),
            ],
        )
        subsubscript.multiple_inclusion = False
        subscript = Script(
            name='b',
            regions=[
                TextRegion(content='b'),
                ScriptRegion(
                    script=subsubscript,
                    content='%include "a"',
                ),
            ],
        )
        subscript.multiple_inclusion = False
        script = Script(
            name='c',
            regions=[
                ScriptRegion(
                    script=subsubscript,
                    content='%include "a"',
                ),
                ScriptRegion(
                    script=subscript,
                    content='%include "b"',
                ),
                ScriptRegion(
                    script=subscript,
                    content='%include "b"',
                ),
            ],
        )
        script.multiple_inclusion = False

        self.assertEqual('a\nb', script.render())
Exemple #6
0
    def test_script_render_with_duplicate_includes_pragma_once(self):
        subsubscript = Script(
            name='a',
            regions=[
                TextRegion(content='a'),
            ],
        )
        subsubscript.multiple_inclusion = False
        subscript = Script(
            name='b',
            regions=[
                TextRegion(content='b'),
                ScriptRegion(
                    script=subsubscript,
                    content='%include "a"',
                ),
            ],
        )
        subscript.multiple_inclusion = False
        script = Script(
            name='c',
            regions=[
                ScriptRegion(
                    script=subsubscript,
                    content='%include "a"',
                ),
                ScriptRegion(
                    script=subscript,
                    content='%include "b"',
                ),
                ScriptRegion(
                    script=subscript,
                    content='%include "b"',
                ),
            ],
        )
        script.multiple_inclusion = False

        self.assertEqual('a\nb', script.render())
Exemple #7
0
    def test_script_render_with_duplicate_includes(self):
        subsubscript = Script(
            name='a',
            regions=[
                TextRegion(content='a'),
            ],
        )
        subscript = Script(
            name='b',
            regions=[
                TextRegion(content='b'),
                ScriptRegion(
                    script=subsubscript,
                    content='%include "a"',
                ),
            ],
        )
        script = Script(
            name='c',
            regions=[
                ScriptRegion(
                    script=subsubscript,
                    content='%include "a"',
                ),
                ScriptRegion(
                    script=subscript,
                    content='%include "b"',
                ),
                ScriptRegion(
                    script=subscript,
                    content='%include "b"',
                ),
            ],
        )

        self.assertEqual('a\nb\na\nb\na', script.render())
Exemple #8
0
    def test_script_render_with_duplicate_includes(self):
        subsubscript = Script(
            name='a',
            regions=[
                TextRegion(content='a'),
            ],
        )
        subscript = Script(
            name='b',
            regions=[
                TextRegion(content='b'),
                ScriptRegion(
                    script=subsubscript,
                    content='%include "a"',
                ),
            ],
        )
        script = Script(
            name='c',
            regions=[
                ScriptRegion(
                    script=subsubscript,
                    content='%include "a"',
                ),
                ScriptRegion(
                    script=subscript,
                    content='%include "b"',
                ),
                ScriptRegion(
                    script=subscript,
                    content='%include "b"',
                ),
            ],
        )

        self.assertEqual('a\nb\na\nb\na', script.render())
Exemple #9
0
    def test_script_render_with_duplicate_includes_nested_args(self):
        script_a = Script(
            name='a',
            regions=[
                ArgumentRegion(
                    name='arg1',
                    type_='string',
                    index=1,
                    content='%arg arg1',
                ),
            ],
        )
        script_b = Script(
            name='b',
            regions=[
                ArgumentRegion(
                    name='arg2',
                    type_='string',
                    index=1,
                    content='%arg arg2',
                ),
            ],
        )
        script_c = Script(
            name='c',
            regions=[
                ArgumentRegion(
                    name='arg3',
                    type_='string',
                    index=1,
                    content='%arg arg3',
                ),
            ],
        )
        script_d = Script(
            name='d',
            regions=[
                ScriptRegion(
                    script=script_c,
                    content='%include "c"',
                ),
                ArgumentRegion(
                    name='arg4',
                    type_='string',
                    index=2,
                    content='%arg arg4',
                ),
            ],
        )
        script = Script(
            name='abcd',
            regions=[
                ScriptRegion(
                    script=script_a,
                    content='%include "a"',
                ),
                ScriptRegion(
                    script=script_b,
                    content='%include "b"',
                ),
                ScriptRegion(
                    script=script_d,
                    content='%include "d"',
                ),
            ],
        )

        self.assertEqual(
            [
                'local arg1 = ARGV[1]',
                'local arg2 = ARGV[2]',
                'local arg3 = ARGV[3]',
                'local arg4 = ARGV[4]',
            ],
            script.render().split('\n'),
        )
Exemple #10
0
    def test_script_render_with_duplicate_includes_nested_keys(self):
        script_a = Script(
            name='a',
            regions=[
                KeyRegion(
                    name='key1',
                    index=1,
                    content='%key key1',
                ),
            ],
        )
        script_b = Script(
            name='b',
            regions=[
                KeyRegion(
                    name='key2',
                    index=1,
                    content='%key key2',
                ),
            ],
        )
        script_c = Script(
            name='c',
            regions=[
                KeyRegion(
                    name='key3',
                    index=1,
                    content='%key key3',
                ),
            ],
        )
        script_d = Script(
            name='d',
            regions=[
                ScriptRegion(
                    script=script_c,
                    content='%include "c"',
                ),
                KeyRegion(
                    name='key4',
                    index=2,
                    content='%key key4',
                ),
            ],
        )
        script = Script(
            name='abcd',
            regions=[
                ScriptRegion(
                    script=script_a,
                    content='%include "a"',
                ),
                ScriptRegion(
                    script=script_b,
                    content='%include "b"',
                ),
                ScriptRegion(
                    script=script_d,
                    content='%include "d"',
                ),
            ],
        )

        self.assertEqual(
            [
                'local key1 = KEYS[1]',
                'local key2 = KEYS[2]',
                'local key3 = KEYS[3]',
                'local key4 = KEYS[4]',
            ],
            script.render().split('\n'),
        )
Exemple #11
0
    def test_script_render_with_duplicate_includes_nested_args(self):
        script_a = Script(
            name='a',
            regions=[
                ArgumentRegion(
                    name='arg1',
                    type_='string',
                    index=1,
                    content='%arg arg1',
                ),
            ],
        )
        script_b = Script(
            name='b',
            regions=[
                ArgumentRegion(
                    name='arg2',
                    type_='string',
                    index=1,
                    content='%arg arg2',
                ),
            ],
        )
        script_c = Script(
            name='c',
            regions=[
                ArgumentRegion(
                    name='arg3',
                    type_='string',
                    index=1,
                    content='%arg arg3',
                ),
            ],
        )
        script_d = Script(
            name='d',
            regions=[
                ScriptRegion(
                    script=script_c,
                    content='%include "c"',
                ),
                ArgumentRegion(
                    name='arg4',
                    type_='string',
                    index=2,
                    content='%arg arg4',
                ),
            ],
        )
        script = Script(
            name='abcd',
            regions=[
                ScriptRegion(
                    script=script_a,
                    content='%include "a"',
                ),
                ScriptRegion(
                    script=script_b,
                    content='%include "b"',
                ),
                ScriptRegion(
                    script=script_d,
                    content='%include "d"',
                ),
            ],
        )

        self.assertEqual(
            [
                'local arg1 = ARGV[1]',
                'local arg2 = ARGV[2]',
                'local arg3 = ARGV[3]',
                'local arg4 = ARGV[4]',
            ],
            script.render().split('\n'),
        )
Exemple #12
0
    def test_script_render_with_duplicate_includes_nested_keys(self):
        script_a = Script(
            name='a',
            regions=[
                KeyRegion(
                    name='key1',
                    index=1,
                    content='%key key1',
                ),
            ],
        )
        script_b = Script(
            name='b',
            regions=[
                KeyRegion(
                    name='key2',
                    index=1,
                    content='%key key2',
                ),
            ],
        )
        script_c = Script(
            name='c',
            regions=[
                KeyRegion(
                    name='key3',
                    index=1,
                    content='%key key3',
                ),
            ],
        )
        script_d = Script(
            name='d',
            regions=[
                ScriptRegion(
                    script=script_c,
                    content='%include "c"',
                ),
                KeyRegion(
                    name='key4',
                    index=2,
                    content='%key key4',
                ),
            ],
        )
        script = Script(
            name='abcd',
            regions=[
                ScriptRegion(
                    script=script_a,
                    content='%include "a"',
                ),
                ScriptRegion(
                    script=script_b,
                    content='%include "b"',
                ),
                ScriptRegion(
                    script=script_d,
                    content='%include "d"',
                ),
            ],
        )

        self.assertEqual(
            [
                'local key1 = KEYS[1]',
                'local key2 = KEYS[2]',
                'local key3 = KEYS[3]',
                'local key4 = KEYS[4]',
            ],
            script.render().split('\n'),
        )