def test_is_methods(self): container = self.test_container container = self.test_container file_with_prefix = stor.join(container, 'analysis.txt') # ensure container is created but empty container.post() self.assertTrue(stor.isdir(container)) self.assertFalse(stor.isfile(container)) self.assertTrue(stor.exists(container)) self.assertFalse(stor.listdir(container)) folder = stor.join(container, 'analysis') subfolder = stor.join(container, 'analysis', 'alignments') file_in_folder = stor.join(container, 'analysis', 'alignments', 'bam.bam') self.assertFalse(stor.exists(file_in_folder)) self.assertFalse(stor.isdir(folder)) self.assertFalse(stor.isdir(folder + '/')) with stor.open(file_with_prefix, 'w') as fp: fp.write('data\n') self.assertFalse(stor.isdir(folder)) self.assertTrue(stor.isfile(file_with_prefix)) with stor.open(file_in_folder, 'w') as fp: fp.write('blah.txt\n') self.assertTrue(stor.isdir(folder)) self.assertFalse(stor.isfile(folder)) self.assertTrue(stor.isdir(subfolder))
def test_walkfiles(self): with NamedTemporaryDirectory(change_dir=True): # Make a dataset with files that will match a particular pattern (*.sh) # and also empty directories that should be ignored when calling walkfiles open('aabc.sh', 'w').close() open('aabc', 'w').close() os.mkdir('b') open('b/c.sh', 'w').close() os.mkdir('empty') open('b/d', 'w').close() open('b/abbbc', 'w').close() Path('.').copytree(self.test_dir) unfiltered_files = list(self.test_dir.walkfiles()) self.assertEquals( set(unfiltered_files), set([ stor.join(self.test_dir, 'aabc.sh'), stor.join(self.test_dir, 'aabc'), stor.join(self.test_dir, 'b/c.sh'), stor.join(self.test_dir, 'b/d'), stor.join(self.test_dir, 'b/abbbc'), ])) prefix_files = list(self.test_dir.walkfiles('*.sh')) self.assertEquals( set(prefix_files), set([ stor.join(self.test_dir, 'aabc.sh'), stor.join(self.test_dir, 'b/c.sh'), ])) double_infix_files = list(self.test_dir.walkfiles('a*b*c')) self.assertEquals( set(double_infix_files), set([ stor.join(self.test_dir, 'aabc'), stor.join(self.test_dir, 'b/abbbc'), ])) suffix_files = list(self.test_dir.walkfiles('a*')) self.assertEquals( set(suffix_files), set([ stor.join(self.test_dir, 'aabc.sh'), stor.join(self.test_dir, 'aabc'), stor.join(self.test_dir, 'b/abbbc'), ])) # should still *make* an empty directory assert stor.exists(stor.join(self.test_dir, 'empty'))