Exemplo n.º 1
0
    def test_properties(self):
        one = os.path.join(__resources__, 'simple', 'one.txt')
        two = os.path.join(__resources__, 'simple', 'two', 'two.txt')
        three = os.path.join(__resources__, 'simple', 'three', 'four',
                             'four.txt')
        f1 = coda.File(one, metadata={'filetype': 'text', 'content': 'data'})
        f2 = coda.File(two,
                       metadata={
                           'filetype': 'text',
                           'content': 'nothing'
                       })
        f3 = coda.File(three,
                       metadata={
                           'filetype': 'text',
                           'content': {
                               'some': 'data'
                           }
                       })
        cl = f1 + f2 + f3
        self.assertEqual(len(cl.files), 3)
        self.assertEqual(cl.files[0].path, one)
        self.assertEqual(cl.files[1].path, two)
        self.assertEqual(cl.files[2].path, three)
        self.assertEqual(cl.metadata.filetype, 'text')
        self.assertEqual(cl.filetype, 'text')
        self.assertEqual(cl.filelist, [one, two, three])
        with self.assertRaises(AttributeError):
            self.assertEqual(cl.metadata.content, None)

        cl = coda.Collection(os.path.join(__resources__, 'simple', '*.txt'))
        self.assertEqual(len(cl.files), 1)
        return
Exemplo n.º 2
0
    def test_operators(self):
        one = os.path.join(__resources__, 'simple', 'one.txt')
        two = os.path.join(__resources__, 'simple', 'two', 'two.txt')
        three = os.path.join(__resources__, 'simple', 'three', 'three.txt')
        f1 = coda.File(one, metadata={'filetype': 'text', 'content': 'data'})
        f2 = coda.File(two,
                       metadata={
                           'filetype': 'text',
                           'content': 'nothing'
                       })
        f3 = coda.File(three,
                       metadata={
                           'filetype': 'text',
                           'content': 'something'
                       })

        # contains
        self.assertTrue('one' in one)
        self.assertFalse('two' in one)

        # addition
        cl1 = f1 + f2
        self.assertTrue(isinstance(cl1, coda.Collection))
        self.assertTrue(f1 in cl1)
        self.assertTrue(f2 in cl1)
        cl2 = f3 + cl1
        self.assertTrue(isinstance(cl2, coda.Collection))
        self.assertTrue(f1 in cl2)
        self.assertTrue(f2 in cl2)
        self.assertTrue(f3 in cl2)

        # equality
        self.assertEqual(f1, coda.File(one))
        return
Exemplo n.º 3
0
    def test_metadata(self):
        # test metadata setting
        one = os.path.join(__resources__, 'simple', 'one.txt')
        fi = coda.File(one, metadata={'one': 1})
        self.assertEqual(fi.one, 1)
        fi.two = 2
        self.assertEqual(fi.metadata.two, 2)

        # test implicit querying for files already in the database
        coda.add(fi)
        fi2 = coda.File(one)
        self.assertEqual(fi.one, 1)
        self.assertEqual(fi.metadata.one, 1)
        coda.delete(fi)
        return
Exemplo n.º 4
0
 def test_delete(self):
     path = os.path.realpath(__file__)
     fi = coda.File(path)
     coda.add(fi)
     self.call('delete', path)
     fi = coda.find_one({'path': path})
     self.assertEqual(fi, None)
     return
Exemplo n.º 5
0
 def _(args):
     files = []
     for fi in args.files:
         if os.path.isdir(fi):
             cl = coda.Collection(fi)
             files.extend(cl.files)
         else:
             files.append(coda.File(fi))
     args.collection = coda.Collection(files=files)
     return func(args)
Exemplo n.º 6
0
 def test_exceptions(self):
     with self.assertRaises(TypeError):
         one = os.path.join(__resources__, 'simple', 'one.txt')
         f1 = coda.File(one,
                        metadata={
                            'filetype': 'text',
                            'content': 'data'
                        })
         c1 = f1 + 1
         c1 = f1 + 'str'
     return
Exemplo n.º 7
0
 def test_properties(self, name, filepath, metadata):
     fi = coda.File(filepath, metadata=metadata)
     self.assertEqual(fi.path, filepath)
     self.assertEqual(fi.location, os.path.dirname(filepath))
     self.assertEqual(fi.name, os.path.basename(filepath))
     self.assertEqual(fi.extension, '.' + filepath.split('.')[-1])
     for key in metadata:
         self.assertEqual(fi.metadata[key], metadata[key])
         self.assertEqual(getattr(fi, key), metadata[key])
         self.assertEqual(fi[key], metadata[key])
     return
Exemplo n.º 8
0
 def test_operators(self):
     one = os.path.join(__resources__, 'simple', 'one.txt')
     two = os.path.join(__resources__, 'simple', 'two', 'two.txt')
     three = os.path.join(__resources__, 'simple', 'three', 'four',
                          'four.txt')
     f1 = coda.File(one, metadata={'filetype': 'text', 'content': 'data'})
     f2 = coda.File(two,
                    metadata={
                        'filetype': 'text',
                        'content': 'nothing'
                    })
     f3 = coda.File(three,
                    metadata={
                        'filetype': 'text',
                        'content': {
                            'some': 'data'
                        }
                    })
     # addition
     cl = f1 + f2
     self.assertTrue(isinstance(cl, coda.Collection))
     self.assertEqual(cl.files, [f1, f2])
     cl2 = cl + f3
     self.assertTrue(isinstance(cl2, coda.Collection))
     self.assertEqual(cl2.files, [f1, f2, f3])
     cl3 = f3 + cl
     self.assertTrue(isinstance(cl3, coda.Collection))
     self.assertEqual(cl3.files, [f3, f1, f2])
     self.assertEqual(cl + cl2, cl3)
     # subtraction
     self.assertEqual(cl, cl2 - f3)
     self.assertEqual(cl2 - cl, coda.Collection(files=[f3]))
     # equality
     self.assertNotEqual(f1, f2)
     self.assertEqual(f1, cl[0])
     # contains
     self.assertTrue(f1 in cl)
     self.assertFalse(f3 in cl)
     # iteration
     self.assertEqual([i for i in cl], [i for i in cl.files])
     return
Exemplo n.º 9
0
 def test_find(self):
     path = os.path.realpath(__file__)
     fi = coda.File(path=path,
                    metadata={
                        'cohort': 'testing',
                        'ext': 'py',
                        'type': 'source'
                    })
     coda.add(fi)
     res = self.call('find', 'cohort', 'testing')
     self.assertTrue('tests/test_coda.py' in res)
     coda.delete(fi)
     return
Exemplo n.º 10
0
 def test_add_metadata(self):
     one = os.path.join(__resources__, 'simple', 'one.txt')
     two = os.path.join(__resources__, 'simple', 'two', 'two.txt')
     three = os.path.join(__resources__, 'simple', 'three', 'four',
                          'four.txt')
     f1 = coda.File(one, metadata={'filetype': 'text', 'content': 'data'})
     f2 = coda.File(two,
                    metadata={
                        'filetype': 'text',
                        'content': 'nothing'
                    })
     f3 = coda.File(three,
                    metadata={
                        'filetype': 'text',
                        'content': {
                            'some': 'data'
                        }
                    })
     cl = f1 + f2 + f3
     # adding via keyword arguments
     cl.add_metadata(newproperty='value')
     self.assertEqual(cl.metadata.newproperty, 'value')
     self.assertEqual(cl.newproperty, 'value')
     self.assertEqual(list(map(lambda x: x.newproperty, cl)),
                      ['value'] * len(cl))
     # adding via dictionary
     cl.add_metadata({'newerproperty': 'newervalue'})
     self.assertEqual(cl.metadata.newerproperty, 'newervalue')
     self.assertEqual(cl.newerproperty, 'newervalue')
     self.assertEqual(list(map(lambda x: x.newerproperty, cl)),
                      ['newervalue'] * len(cl))
     # adding via setattr on class
     cl.newestproperty = 'newestvalue'
     self.assertEqual(cl.metadata.newestproperty, 'newestvalue')
     self.assertEqual(cl.newestproperty, 'newestvalue')
     self.assertEqual(list(map(lambda x: x.newestproperty, cl)),
                      ['newestvalue'] * len(cl))
     return
Exemplo n.º 11
0
 def test_list(self):
     path = os.path.realpath(__file__)
     fi = coda.File(path=path,
                    metadata={
                        'cohort': 'testing',
                        'ext': 'py',
                        'type': 'source'
                    })
     coda.add(fi)
     res = self.call('list')
     self.assertTrue('tests/test_coda.py' in res)
     res = self.call('list', path)
     self.assertTrue('"cohort": "testing"' in res)
     self.assertTrue('"ext": "py"' in res)
     self.assertTrue('"type": "source"' in res)
     coda.delete(fi)
     return
Exemplo n.º 12
0
Arquivo: test_db.py Projeto: lepy/coda
 def test_add_delete(self, path):
     # add
     fi = coda.File(path=path,
                    metadata={
                        'cohort': 'testing',
                        'ext': 'py',
                        'type': 'source'
                    })
     coda.add(fi)
     cl = coda.find({'cohort': 'testing'})
     self.assertEqual(len(cl), 1)
     self.assertEqual(cl[0].type, 'source')
     # update
     fi.metadata.type = 'newtype'
     fi.metadata.keep = True
     coda.add(fi)
     cl = coda.find({'cohort': 'testing'})
     self.assertEqual(cl[0].type, 'newtype')
     self.assertEqual(cl[0].keep, True)
     # delete
     coda.delete(fi)
     cl = coda.find({'cohort': 'testing'})
     self.assertEqual(cl, None)
     return
Exemplo n.º 13
0
# config
# ------
__tests__ = os.path.dirname(os.path.realpath(__file__))
__resources__ = os.path.join(__tests__, 'resources')


# seed
# ----
simple = filetree(os.path.join(__resources__, 'simple'))
source = filetree(os.path.join(__tests__, '..', 'coda'))
fl = []
for item in simple.filelist():
    fl.append(coda.File(path=item, metadata={
        'cohort': 'simple',
        'extension': item.split('.')[-1],
        'type': 'text',
        'base_name': os.path.basename(item),
        'length': len(os.path.basename(item))
    }))
for item in source.prune(r".*.py$").filelist():
    fl.append(coda.File(path=item, metadata={
        'cohort': 'coda',
        'extension': item.split('.')[-1],
        'type': 'source',
        'base_name': os.path.basename(item),
        'length': len(os.path.basename(item))
    }))
cl = coda.Collection(files=fl)


# setup/teardown