コード例 #1
0
    def testCreateABuiltInNodeTypeWithACustomNodeBuilder(self):

        builder = TreeBuilder();
        root = builder.root('builtin', 'array', CustomNodeBuilder());

        definition = root.children().booleanNode('boolean');

        self.assertEqual(ReflectionObject(definition).getName(), 'pymfony.component.config.definition.builder.BooleanNodeDefinition');
コード例 #2
0
    def testAddANodeType(self):

        builder = TreeBuilder();
        root = builder.root('override', 'array', CustomNodeBuilder());

        definition = root.children().barNode('variable');

        self.assertEqual(ReflectionObject(definition).getName(), __name__ + '.BarNodeDefinition');
コード例 #3
0
    def testUsingACustomNodeBuilder(self):

        builder = TreeBuilder();
        root = builder.root('custom', 'array', CustomNodeBuilder());

        nodeBuilder = root.children();

        self.assertEqual(ReflectionObject(nodeBuilder).getName(), __name__ + '.CustomNodeBuilder');

        nodeBuilder = nodeBuilder.arrayNode('deeper').children();

        self.assertEqual(ReflectionObject(nodeBuilder).getName(), __name__ + '.CustomNodeBuilder');
コード例 #4
0
    def testAnExtendedNodeBuilderGetsPropagatedToTheChildren(self):

        builder = TreeBuilder();

        n = builder.root('propagation')
        n =     n.children()
        n =         n.setNodeClass('extended', __name__ + '.VariableNodeDefinition')
        n =         n.node('foo', 'extended').end()
        n =         n.arrayNode('child')
        n =             n.children()
        n =                 n.node('foo', 'extended')
        n =             n.end()
        n =         n.end()
        n =     n.end();
コード例 #5
0
    def _getTestBuilder(self):
        """Create a test treebuilder with a variable node, and init the validation

        @return TreeBuilder

        """

        builder = TreeBuilder();

        builder = builder.root('test')
        builder = builder.children()
        builder = builder.variableNode('key')
        builder = builder.validate()

        return builder;
コード例 #6
0
    def testDefinitionInfoGetsTransferredToNode(self):

        builder = TreeBuilder();

        n = builder.root('test').info('root info')
        n =     n.children()
        n =         n.node('child', 'variable').info('child info').defaultValue('default')
        n =     n.end()
        n = n.end();

        tree = builder.buildTree();
        children = tree.getChildren();

        self.assertEqual('root info', tree.getInfo());
        self.assertEqual('child info', children['child'].getInfo());
コード例 #7
0
ファイル: __init__.py プロジェクト: pombredanne/pymfony
    def getConfigTreeBuilder(self):
        """Generates the configuration tree builder.

        @return: TreeBuilder The tree builder

        @raise RuntimeException: When using the deprecated 'charset' setting
        """
        treeBuilder = TreeBuilder()
        rootNode = treeBuilder.root('framework')

        node = rootNode.children()
        node = node.scalarNode('default_locale').defaultValue("en").end()
        node = node.end()

        return treeBuilder
コード例 #8
0
    def testForbiddenOverwrite(self):
        """@expectedException Symfony\Component\Config\Definition\Exception\ForbiddenOverwriteException

        """
        try:
            tb = TreeBuilder();
            tree = tb
            tree =     tree.root('root', 'array')
            tree =         tree.children()
            tree =             tree.node('foo', 'scalar')
            tree =                 tree.cannotBeOverwritten()
            tree =             tree.end()
            tree =         tree.end()
            tree =     tree.end()
            tree =     tree.buildTree();

            a = {
                'foo': 'bar',
            };

            b = {
                'foo': 'moo',
            };

            tree.merge(a, b);
            self.fail();
        except Exception as e:
            self.assertTrue(isinstance(e, ForbiddenOverwriteException));
コード例 #9
0
        def test(denormalized):
            tb = TreeBuilder();
            tree = tb
            tree =     tree.root('root_name', 'array')
            tree =         tree.fixXmlConfig('encoder')
            tree =         tree.children()
            tree =             tree.node('encoders', 'array')
            tree =                 tree.useAttributeAsKey('class')
            tree =                 tree.prototype('array')
            tree =                     tree.beforeNormalization().ifString().then(lambda v: {'algorithm': v}).end()
            tree =                     tree.children()
            tree =                         tree.node('algorithm', 'scalar').end()
            tree =                     tree.end()
            tree =                 tree.end()
            tree =             tree.end()
            tree =         tree.end()
            tree =     tree.end()
            tree =     tree.buildTree();

            normalized = {
                'encoders': {
                    'foo': {'algorithm': 'plaintext'},
                },
            };

            self.assertNormalized(tree, denormalized, normalized);
コード例 #10
0
    def testDefinitionExampleGetsTransferredToNode(self):

        builder = TreeBuilder();

        n = builder.root('test')
        n =     n.example({'key': 'value'})
        n =     n.children()
        n =         n.node('child', 'variable').info('child info').defaultValue('default').example('example')
        n =     n.end()
        n = n.end();

        tree = builder.buildTree();
        children = tree.getChildren();

        self.assertTrue(isinstance(tree.getExample(), dict));
        self.assertEqual('example', children['child'].getExample());
コード例 #11
0
    def getConfigTreeBuilder(self):

        treeBuilder = TreeBuilder()
        rootNode = treeBuilder.root('root')

        n = rootNode
        n = n.children()
        n = n.booleanNode('boolean').defaultTrue().end()
        n = n.scalarNode('scalar_empty').end()
        n = n.scalarNode('scalar_null').defaultNull().end()
        n = n.scalarNode('scalar_true').defaultTrue().end()
        n = n.scalarNode('scalar_false').defaultFalse().end()
        n = n.scalarNode('scalar_default').defaultValue('default').end()
        n = n.scalarNode('scalar_array_empty').defaultValue([]).end()
        n = n.scalarNode('scalar_array_defaults').defaultValue(
            ['elem1', 'elem2']).end()
        n = n.arrayNode('array')
        n = n.info('some info')
        n = n.canBeUnset()
        n = n.children()
        n = n.scalarNode('child1').end()
        n = n.scalarNode('child2').end()
        n = n.scalarNode('child3')
        n = n.info("this is a long\n"
                   "multi-line info text\n"
                   "which should be indented")
        n = n.example('example setting')
        n = n.end()
        n = n.end()
        n = n.end()
        n = n.arrayNode('array_prototype')
        n = n.children()
        n = n.arrayNode('parameters')
        n = n.useAttributeAsKey('name')
        n = n.prototype('array')
        n = n.children()
        n = n.scalarNode('value').isRequired().end()
        n = n.end()
        n = n.end()
        n = n.end()
        n = n.end()
        n = n.end()
        n = n.end()

        return treeBuilder
コード例 #12
0
ファイル: __init__.py プロジェクト: visonforcoding/pymfony
    def getConfigTreeBuilder(self):
        """Generates the configuration tree builder.

        @return: TreeBuilder The tree builder

        @raise RuntimeException: When using the deprecated 'charset' setting
        """
        treeBuilder = TreeBuilder();
        rootNode = treeBuilder.root('framework');

        node =  rootNode.children();
        node =      node.scalarNode('default_locale');
        node =          node.defaultValue("en");
        node =      node.end();
        node =  node.end();

        self.__addConsoleSection(rootNode);

        return treeBuilder;
コード例 #13
0
    def testAssociativeArrayPreserveKeys(self):

        tb = TreeBuilder();
        tree = tb
        tree =     tree.root('root', 'array')
        tree =         tree.prototype('array')
        tree =             tree.children()
        tree =                 tree.node('foo', 'scalar').end()
        tree =             tree.end()
        tree =         tree.end()
        tree =     tree.end()
        tree =     tree.buildTree();

        data = {'first': {'foo': 'bar'}};

        self.assertNormalized(tree, data, data);
コード例 #14
0
    def __getNumericKeysTestTree(self):

        tb = TreeBuilder();
        tree = tb
        tree =     tree.root('root', 'array')
        tree =         tree.children()
        tree =             tree.node('thing', 'array')
        tree =                 tree.useAttributeAsKey('id')
        tree =                 tree.prototype('array')
        tree =                     tree.prototype('scalar').end()
        tree =                 tree.end()
        tree =             tree.end()
        tree =         tree.end()
        tree =     tree.end()
        tree =     tree.buildTree();

        return tree;
コード例 #15
0
    def testUnsetKey(self):

        tb = TreeBuilder();
        tree = tb
        tree =     tree.root('root', 'array')
        tree =         tree.children()
        tree =             tree.node('foo', 'scalar').end()
        tree =             tree.node('bar', 'scalar').end()
        tree =             tree.node('unsettable', 'array')
        tree =                 tree.canBeUnset()
        tree =                 tree.children()
        tree =                     tree.node('foo', 'scalar').end()
        tree =                     tree.node('bar', 'scalar').end()
        tree =                 tree.end()
        tree =             tree.end()
        tree =             tree.node('unsetted', 'array')
        tree =                 tree.canBeUnset()
        tree =                 tree.prototype('scalar').end()
        tree =             tree.end()
        tree =         tree.end()
        tree =     tree.end()
        tree =     tree.buildTree();

        a = {
            'foo': 'bar',
            'unsettable': {
                'foo': 'a',
                'bar': 'b',
            },
            'unsetted': False,
        };

        b = {
            'foo': 'moo',
            'bar': 'b',
            'unsettable': False,
            'unsetted': ['a', 'b'],
        };

        self.assertEqual({
            'foo': 'moo',
            'bar': 'b',
            'unsettable': False,
            'unsetted': ['a', 'b'],
        }, tree.merge(a, b));
コード例 #16
0
    def testUnsetKeyWithDeepHierarchy(self):

        tb = TreeBuilder();
        tree = tb
        tree =     tree.root('config', 'array')
        tree =         tree.children()
        tree =             tree.node('level1', 'array')
        tree =                 tree.canBeUnset()
        tree =                 tree.children()
        tree =                     tree.node('level2', 'array')
        tree =                         tree.canBeUnset()
        tree =                         tree.children()
        tree =                             tree.node('somevalue', 'scalar').end()
        tree =                             tree.node('anothervalue', 'scalar').end()
        tree =                         tree.end()
        tree =                     tree.end()
        tree =                     tree.node('level1_scalar', 'scalar').end()
        tree =                 tree.end()
        tree =             tree.end()
        tree =         tree.end()
        tree =     tree.end()
        tree =     tree.buildTree();

        a = {
            'level1': {
                'level2': {
                    'somevalue': 'foo',
                    'anothervalue': 'bar',
                },
                'level1_scalar': 'foo',
            },
        };

        b = {
            'level1': {
                'level2': False,
            },
        };

        self.assertEqual({
            'level1': {
                'level1_scalar': 'foo',
            },
        }, self._process(tree, [a, b]));
コード例 #17
0
        def test(denormalized):
            tb = TreeBuilder();
            tree = tb
            tree =     tree.root('root', 'array')
            tree =         tree.children()
            tree =             tree.node('logout', 'array')
            tree =                 tree.fixXmlConfig('handler')
            tree =                 tree.children()
            tree =                     tree.node('handlers', 'array')
            tree =                         tree.prototype('scalar').end()
            tree =                     tree.end()
            tree =                 tree.end()
            tree =             tree.end()
            tree =         tree.end()
            tree =     tree.end()
            tree =     tree.buildTree();

            normalized = {'logout': {'handlers': {0: 'a', 1: 'b', 2: 'c'}}};

            self.assertNormalized(tree, denormalized, normalized);
コード例 #18
0
    def testDoesNotAllowNewKeysInSubsequentConfigs(self):
        """@expectedException Symfony\Component\Config\Definition\Exception\InvalidConfigurationException

        """

        try:
            tb = TreeBuilder();
            tree = tb
            tree =     tree.root('config', 'array')
            tree =         tree.children()
            tree =             tree.node('test', 'array')
            tree =                 tree.disallowNewKeysInSubsequentConfigs()
            tree =                 tree.useAttributeAsKey('key')
            tree =                 tree.prototype('array')
            tree =                     tree.children()
            tree =                         tree.node('value', 'scalar').end()
            tree =                     tree.end()
            tree =                 tree.end()
            tree =             tree.end()
            tree =         tree.end()
            tree =     tree.end()
            tree =     tree.buildTree();

            a = {
                'test': {
                    'a': {'value': 'foo'}
                }
            };

            b = {
                'test': {
                    'b': {'value': 'foo'}
                }
            };

            tree.merge(a, b);
            self.fail()
        except Exception as e:
            self.assertTrue(isinstance(e, InvalidConfigurationException));
コード例 #19
0
    def testPrototypeWithoutAKeyAttribute(self):

        tb = TreeBuilder();

        tree = tb
        tree =     tree.root('config', 'array')
        tree =         tree.children()
        tree =             tree.arrayNode('append_elements')
        tree =                 tree.prototype('scalar').end()
        tree =             tree.end()
        tree =         tree.end()
        tree =     tree.end()
        tree =     tree.buildTree();

        a = {
            'append_elements': ['a', 'b'],
        };

        b = {
            'append_elements': ['c', 'd'],
        };

        self.assertEqual({'append_elements': {0: 'a', 1: 'b', 2: 'c', 3: 'd'}}, tree.merge(a, b));
コード例 #20
0
    def testPerformsNoDeepMerging(self):

        tb = TreeBuilder();

        tree = tb
        tree =     tree.root('config', 'array')
        tree =         tree.children()
        tree =             tree.node('no_deep_merging', 'array')
        tree =                 tree.performNoDeepMerging()
        tree =                 tree.children()
        tree =                     tree.node('foo', 'scalar').end()
        tree =                     tree.node('bar', 'scalar').end()
        tree =                 tree.end()
        tree =             tree.end()
        tree =         tree.end()
        tree =     tree.end()
        tree =     tree.buildTree();

        a = {
            'no_deep_merging': {
                'foo': 'a',
                'bar': 'b',
            },
        };

        b = {
            'no_deep_merging': {
                'c': 'd',
            }
        };

        self.assertEqual({
            'no_deep_merging': {
                'c': 'd',
            }
        }, tree.merge(a, b));
コード例 #21
0
    def testPrototypedArrayNodeUseTheCustomNodeBuilder(self):

        builder = TreeBuilder();
        root = builder.root('override', 'array', CustomNodeBuilder());

        root.prototype('bar').end();