예제 #1
0
    def test_rollforward(self):
        with config.tempdir() as scratch:
            rpkg = os.path.join(scratch, 'tostrip.refpkg')
            shutil.copytree(config.data_path('lactobacillus2-0.2.refpkg'),
                            rpkg)
            r = refpkg.Refpkg(rpkg, create=False)
            original_contents = copy.deepcopy(r.contents)
            r.update_metadata('boris', 'hilda')
            r.update_metadata('meep', 'natasha')
            updated_contents = copy.deepcopy(r.contents)
            r.rollback()
            r.rollback()

            class _Args(object):
                refpkg = rpkg

                def __init__(self, n):
                    self.n = n

            self.assertEqual(rollforward.action(_Args(3)), 1)
            r._sync_from_disk()
            self.assertEqual(r.contents['metadata'],
                             original_contents['metadata'])

            self.assertEqual(rollforward.action(_Args(2)), 0)
            r._sync_from_disk()
            self.assertEqual(r.contents['metadata'],
                             updated_contents['metadata'])
            self.assertEqual(r.contents['rollforward'], None)
            self.assertNotEqual(r.contents['rollback'], None)
예제 #2
0
    def test_create(self):
        with config.tempdir() as scratch:
            class _Args(object):
                clobber = True
                locus = 'Nowhere'
                description = 'A description'
                author = 'Boris the Mad Baboon'
                package_version = '0.3'
                package_name = os.path.join(scratch, 'test.refpkg')
                tree_stats = None
                aln_fasta = None
                aln_sto = None
                phylo_model = None
                seq_info = None
                mask = None
                profile = None
                readme = None
                tree = None
                taxonomy = None
                reroot = False
                rppr = 'rppr'
            create.action(_Args())
            r = refpkg.Refpkg(_Args().package_name, create=False)
            self.assertEqual(r.metadata('locus'), 'Nowhere')
            self.assertEqual(r.metadata('description'), 'A description')
            self.assertEqual(r.metadata('author'), 'Boris the Mad Baboon')
            self.assertEqual(r.metadata('package_version'), '0.3')
            self.assertEqual(r.metadata('format_version'), '1.1')
            self.assertEqual(r.contents['rollback'], None)

            args2 = _Args()
            args2.package_name = os.path.join(scratch, 'test.refpkg')
            args2.clobber = True
            self.assertEqual(0, create.action(args2))
예제 #3
0
    def test_rollforward(self):
        with config.tempdir() as scratch:
            rpkg = os.path.join(scratch, 'tostrip.refpkg')
            shutil.copytree(config.data_path('lactobacillus2-0.2.refpkg'), rpkg)
            r = refpkg.Refpkg(rpkg, create=False)
            original_contents = copy.deepcopy(r.contents)
            r.update_metadata('boris', 'hilda')
            r.update_metadata('meep', 'natasha')
            updated_contents = copy.deepcopy(r.contents)
            r.rollback()
            r.rollback()

            class _Args(object):
                refpkg = rpkg
                def __init__(self, n):
                    self.n = n

            self.assertEqual(rollforward.action(_Args(3)), 1)
            r._sync_from_disk()
            self.assertEqual(r.contents['metadata'], original_contents['metadata'])

            self.assertEqual(rollforward.action(_Args(2)), 0)
            r._sync_from_disk()
            self.assertEqual(r.contents['metadata'], updated_contents['metadata'])
            self.assertEqual(r.contents['rollforward'], None)
            self.assertNotEqual(r.contents['rollback'], None)
예제 #4
0
    def _test_create_phylo_model(self, stats_path, stats_type=None,
                                 frequency_type=None):
        with config.tempdir() as scratch:
            args = self._Args(scratch)
            args.tree_stats = stats_path
            args.stats_type = stats_type
            args.frequency_type = frequency_type
            create.action(args)

            r = refpkg.Refpkg(args.package_name, create=False)
            self.assertIn('phylo_model', r.contents['files'])
예제 #5
0
 def test_metadata_action(self):
     with config.tempdir() as scratch:
         pkg_path = os.path.join(scratch, 'test.refpkg')
         r = refpkg.Refpkg(pkg_path, create=True)
         self.args.changes = ['meep=boris', 'hilda=vrrp']
         self.args.metadata = True
         self.args.refpkg = pkg_path
         update.action(self.args)
         r._sync_from_disk()
         self.assertEqual(r.metadata('meep'), 'boris')
         self.assertEqual(r.metadata('hilda'), 'vrrp')
예제 #6
0
 def test_metadata_action(self):
     with config.tempdir() as scratch:
         pkg_path = os.path.join(scratch, 'test.refpkg')
         r = refpkg.Refpkg(pkg_path, create=True)
         self.args.changes = ['meep=boris', 'hilda=vrrp']
         self.args.metadata = True
         self.args.refpkg = pkg_path
         update.action(self.args)
         r._sync_from_disk()
         self.assertEqual(r.metadata('meep'), 'boris')
         self.assertEqual(r.metadata('hilda'), 'vrrp')
예제 #7
0
 def test_metadata_action(self):
     with config.tempdir() as scratch:
         pkg_path = os.path.join(scratch, 'test.refpkg')
         r = refpkg.Refpkg(pkg_path)
         class _Args(object):
             refpkg=pkg_path
             changes = ['meep=boris', 'hilda=vrrp']
             metadata = True
         update.action(_Args())
         r._sync_from_disk()
         self.assertEqual(r.metadata('meep'), 'boris')
         self.assertEqual(r.metadata('hilda'), 'vrrp')
예제 #8
0
 def test_action(self):
     with config.tempdir() as scratch:
         pkg_path = os.path.join(scratch, 'test.refpkg')
         r = refpkg.Refpkg(pkg_path)
         test_file = config.data_path('bv_refdata.csv')
         class _Args(object):
             refpkg=pkg_path
             changes = ['meep='+test_file, 'hilda='+test_file]
             metadata = False
         update.action(_Args())
         r._sync_from_disk()
         self.assertEqual(r.contents['files']['meep'], 'bv_refdata.csv')
         self.assertEqual(r.contents['files']['hilda'], 'bv_refdata.csv1')
예제 #9
0
    def _test_create_phylo_model(self,
                                 stats_path,
                                 stats_type=None,
                                 frequency_type=None):
        with config.tempdir() as scratch:
            args = self._Args(scratch)
            args.tree_stats = stats_path
            args.stats_type = stats_type
            args.frequency_type = frequency_type
            create.action(args)

            r = refpkg.Refpkg(args.package_name, create=False)
            self.assertIn('phylo_model', r.contents['files'])
예제 #10
0
 def test_create(self):
     with config.tempdir() as scratch:
         args = self._Args(scratch)
         create.action(args)
         r = refpkg.Refpkg(args.package_name, create=False)
         self.assertEqual(r.metadata('locus'), 'Nowhere')
         self.assertEqual(r.metadata('description'), 'A description')
         self.assertEqual(r.metadata('author'), 'Boris the Mad Baboon')
         self.assertEqual(r.metadata('package_version'), '0.3')
         self.assertEqual(r.metadata('format_version'), '1.1')
         self.assertEqual(r.contents['rollback'], None)
         args2 = self._Args(scratch)
         args2.package_name = os.path.join(scratch, 'test.refpkg')
         args2.clobber = True
         self.assertEqual(0, create.action(args2))
예제 #11
0
    def test_strip(self):
        with config.tempdir() as scratch:
            rpkg = os.path.join(scratch, 'tostrip.refpkg')
            shutil.copytree(config.data_path('lactobacillus2-0.2.refpkg'), rpkg)
            r = refpkg.Refpkg(rpkg, create=False)
            r.update_metadata('boris', 'hilda')
            r.update_metadata('meep', 'natasha')

            class _Args(object):
                refpkg = rpkg
            strip.action(_Args())

            r._sync_from_disk()
            self.assertEqual(r.contents['rollback'], None)
            self.assertEqual(r.contents['rollforward'], None)
예제 #12
0
 def test_create(self):
     with config.tempdir() as scratch:
         args = self._Args(scratch)
         create.action(args)
         r = refpkg.Refpkg(args.package_name, create=False)
         self.assertEqual(r.metadata('locus'), 'Nowhere')
         self.assertEqual(r.metadata('description'), 'A description')
         self.assertEqual(r.metadata('author'), 'Boris the Mad Baboon')
         self.assertEqual(r.metadata('package_version'), '0.3')
         self.assertEqual(r.metadata('format_version'), '1.1')
         self.assertEqual(r.contents['rollback'], None)
         args2 = self._Args(scratch)
         args2.package_name = os.path.join(scratch, 'test.refpkg')
         args2.clobber = True
         self.assertEqual(0, create.action(args2))
예제 #13
0
    def test_strip(self):
        with config.tempdir() as scratch:
            rpkg = os.path.join(scratch, 'tostrip.refpkg')
            shutil.copytree(config.data_path('lactobacillus2-0.2.refpkg'),
                            rpkg)
            r = refpkg.Refpkg(rpkg, create=False)
            r.update_metadata('boris', 'hilda')
            r.update_metadata('meep', 'natasha')

            class _Args(object):
                refpkg = rpkg

            strip.action(_Args())

            r._sync_from_disk()
            self.assertEqual(r.contents['rollback'], None)
            self.assertEqual(r.contents['rollforward'], None)
예제 #14
0
    def test_update_stats_action(self):
        with config.tempdir() as scratch:
            pkg_path = os.path.join(scratch, 'test.refpkg')
            r = refpkg.Refpkg(pkg_path, create=True)

            args = self.args
            stats_path = os.path.join(config.datadir, 'phyml_aa_stats.txt')

            args.refpkg = pkg_path
            args.changes = ['tree_stats=' + stats_path]
            args.frequency_type = 'empirical'

            update.action(args)

            r._sync_from_disk()

            self.assertIn('tree_stats', r.contents['files'])
            self.assertIn('phylo_model', r.contents['files'])
            self.assertTrue(r.contents['files']['phylo_model'].endswith('.json'))
예제 #15
0
    def test_update_stats_action(self):
        with config.tempdir() as scratch:
            pkg_path = os.path.join(scratch, 'test.refpkg')
            r = refpkg.Refpkg(pkg_path, create=True)

            args = self.args
            stats_path = os.path.join(config.datadir, 'phyml_aa_stats.txt')

            args.refpkg = pkg_path
            args.changes = ['tree_stats=' + stats_path]
            args.frequency_type = 'empirical'

            update.action(args)

            r._sync_from_disk()

            self.assertIn('tree_stats', r.contents['files'])
            self.assertIn('phylo_model', r.contents['files'])
            self.assertTrue(
                r.contents['files']['phylo_model'].endswith('.json'))
예제 #16
0
    def test_action(self):
        with config.tempdir() as scratch:
            pkg_path = os.path.join(scratch, 'test.refpkg')
            r = refpkg.Refpkg(pkg_path, create=True)
            test_file = config.data_path('bv_refdata.csv')

            self.args.refpkg = pkg_path
            self.args.changes = ['meep=' + test_file, 'hilda=' + test_file]

            update.action(self.args)
            r._sync_from_disk()
            self.assertEqual(r.contents['files']['meep'], 'bv_refdata.csv')

            # Second file should have been assigned a non-clashing name
            h = r.contents['files']['hilda']
            self.assertNotEqual(h, 'bv_refdata.csv')
            self.assertTrue(h.startswith('bv_refdata'))
            self.assertTrue(h.endswith('.csv'))

            self.assertTrue(os.path.exists(r.resource_path('hilda')))
예제 #17
0
    def test_action(self):
        with config.tempdir() as scratch:
            pkg_path = os.path.join(scratch, 'test.refpkg')
            r = refpkg.Refpkg(pkg_path, create=True)
            test_file = config.data_path('bv_refdata.csv')
            class _Args(object):
                refpkg=pkg_path
                changes = ['meep='+test_file, 'hilda='+test_file]
                metadata = False
            update.action(_Args())
            r._sync_from_disk()
            self.assertEqual(r.contents['files']['meep'], 'bv_refdata.csv')

            # Second file should have been assigned a non-clashing name
            h = r.contents['files']['hilda']
            self.assertNotEqual(h, 'bv_refdata.csv')
            self.assertTrue(h.startswith('bv_refdata'))
            self.assertTrue(h.endswith('.csv'))

            self.assertTrue(os.path.exists(r.resource_path('hilda')))