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'), [])
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)
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