def __init__(self, data, left, right):
     self.description = ""
     self.ref = None
     self.lineno = None
     self.data = data or container.DataContainer()
     self.left = left
     self.right = right
 def test_add_values_and_list_values(self):
     cont = container.DataContainer()
     cont.add_value('test/ff', 123)
     cont.add_value('test/ff', 'test')
     cont.add_value('test/foo', 'test')
     keys = cont.list_keys()
     self.assertEquals(len(keys), 2)
 def test_add_values_and_get_values(self):
     cont = container.DataContainer()
     cont.add_value('test/ff', 123)
     cont.add_value('test/ff', 'test')
     self.assertEquals(cont.get_value('test/ff'), 'test')
     self.assertEquals(cont.get_values('test/ff')[0], 123)
     self.assertEquals(cont.get_values('test/ff')[1], 'test')
 def test_add_incorrect_type(self):
     cont = container.ObjectContainer()
     try:
         cont._add(container.DataContainer())
         self.fail("Adding incorrect class type to container succeeds?")
     except exceptions.IncorrectClassError, e:
         pass
 def test_add_values_clear_all_data(self):
     cont = container.DataContainer()
     cont.add_value('test/ff', 123)
     cont.add_value('test/ff', 'test')
     cont.add_value('test/foo', 'test')
     cont.add_value('test/foo', '123')
     cont.clear()
     self.assertEquals(len(cont.list_keys()), 0)
 def test_add_values_and_remove_one_value(self):
     cont = container.DataContainer()
     cont.add_value('test/ff', 123)
     cont.add_value('test/ff', 'test')
     cont.add_value('test/foo', 'test')
     cont.add_value('test/foo', '123')
     cont.add_value('sss', 123)
     cont.remove_value('test/foo', 'test')
     self.assertEquals(cont.get_values('test/foo'), ['123'])
 def test_conatainer_flatten(self):
     data = container.DataContainer()
     data.add_value('test', 1)
     data.add_value('test', 2)
     data.add_value('test', 3)
     data.add_value('foo', 1)
     data.add_value('foo', 2)
     data.add_value('bar', 3)
     self.assertEquals(data.flatten(), {'test': 3, 'foo': 2, 'bar': 3})
 def test_add_values_and_remove_key(self):
     cont = container.DataContainer()
     cont.add_value('test/ff', 123)
     cont.add_value('test/ff', 'test')
     cont.add_value('test/foo', 'test')
     cont.add_value('test/foo', '123')
     cont.add_value('test/foo', 'foobar')
     cont.add_value('sss', 123)
     cont.remove_key('test/foo')
     self.assertEquals(cont.list_keys(), ['test/ff', 'sss'])
 def test_add_values_and_remove_all_values_of_a_key(self):
     cont = container.DataContainer()
     cont.add_value('test/ff', 123)
     cont.add_value('test/ff', 'test')
     cont.add_value('test/foo', 'test')
     cont.add_value('test/foo', '123')
     cont.add_value('test/foo', 'foobar')
     cont.add_value('sss', 123)
     for val in cont.get_values('test/foo'):
         cont.remove_value('test/foo', val)
     self.assertEquals(cont.get_values('test/foo'), [])
Esempio n. 10
0
 def test_create_copy_list_from_datacontainer_with_test(self):
     '''
     Test that the loading of the plugins works
     '''
     data = container.DataContainer()
     data.add_value('test/test.txt', '/foo/content/test/test.txt')
     data.add_value('test/test.txt', '/bar/content/test/test.txt')
     data.add_value('product/aaa.txt', '/foo/content/product/aaa.txt')
     data.add_value('images/kuva.jpg', '/foo/content/images/kuva.jpg')
     data.add_value('include/hide.iby', '/bar/content/include/hide.iby')
     impl = contentml.ContentImpl("foo", None)
     copylist = impl.create_copy_list(content=data,
                                      input='test',
                                      output='content')
     self.assertEquals(copylist[0][1], 'content/test.txt')
 def validate(self):
     settings_container = container.DataContainer()
     # Traverse through the configuration model and store each feature to
     # the settings_container.
     for setting in self.context.configuration._traverse(
             type=model.ConfmlFeature):
         settings_container.add_value(setting.fqr, setting)
     # Go though the settings_container to see if any features have more than one
     # definition and report those as problems
     for fqr in settings_container.list_keys():
         if len(settings_container.get_values(fqr)) > 1:
             files = [
                 setting.get_configuration_path()
                 for setting in settings_container.get_values(fqr)
             ]
             prob = api.Problem(
                 msg="Feature %s has '%s' definitions in files %s" %
                 (fqr, len(settings_container.get_values(fqr)), files),
                 type=self.PROBLEM_TYPES[0],
                 severity=api.Problem.SEVERITY_INFO,
                 line=settings_container.get_value(fqr).lineno,
                 file=files[-1],
                 problem_data=settings_container.get_values(fqr))
             self.context.problems.append(prob)
Esempio n. 12
0
    def get_full_copy_list(self, print_info=False):
        fullcopylist = []
        for output in self.outputs:
            for input in output.inputs:
                copylist = []
                if print_info:
                    self.logger.info(
                        'Content copy items from %s to %s' %
                        (input.dir, os.path.join(self.output, output.dir)))

                if input.__class__.__name__ == "ContentInput":
                    copylist = self.create_copy_list(
                        content=self.configuration.layered_content(
                            empty_folders=True),
                        input=input.dir,
                        output=os.path.join(self.output, output.dir),
                        include_pattern=input.get_include_pattern(),
                        exclude_pattern=input.get_exclude_pattern(),
                        files=input.get_filelist(),
                        flatten=output.flatten,
                        output_file=output.file)
                elif input.__class__.__name__ == "ExternalContentInput":
                    #Handling external inputs separately
                    if input.dir != None:
                        fulldir = os.path.abspath(
                            os.path.join(
                                self.configuration.get_project().get_storage().
                                get_path(), input.dir))
                    else:
                        fulldir = self.configuration.get_project().get_storage(
                        ).get_path()

                    data = container.DataContainer()
                    for root, dirs, files in os.walk(fulldir):
                        for f in files:
                            filepath = utils.resourceref.norm(
                                os.path.join(root, f))
                            key = utils.resourceref.replace_dir(
                                filepath, fulldir, "")
                            data.add_value(key, filepath)

                        # If the root contains no directories and no files, it is
                        # an empty directory and needs to be added
                        if not dirs and not files:
                            filepath = utils.resourceref.norm(root)
                            key = utils.resourceref.replace_dir(
                                filepath, fulldir, "")
                            data.add_value(key, filepath)

                    copylist = self.create_copy_list(
                        content=data,
                        input=input.dir,
                        output=os.path.join(self.output, output.dir),
                        include_pattern=input.get_include_pattern(),
                        exclude_pattern=input.get_exclude_pattern(),
                        files=input.get_filelist(),
                        flatten=output.flatten,
                        output_file=output.file,
                        external=True)
                else:
                    logging.getLogger('cone.content').warning(
                        "Unknown input %s" % (input.__class__.__name__))

                fullcopylist += copylist

        # Sort to make automated testing easier (list always in same order)
        fullcopylist.sort()

        return fullcopylist