Test reading the xml out of a file too.
authorDiane Trout <diane@caltech.edu>
Wed, 11 Jul 2012 00:29:00 +0000 (17:29 -0700)
committerDiane Trout <diane@caltech.edu>
Wed, 11 Jul 2012 00:29:00 +0000 (17:29 -0700)
You write some code and think "oh this is simple,
it should be ok without tests" and then you watch the stack traces.
Now its tested -- at least a bit.

htsworkflow/pipelines/test/test_genomemap.py

index 421308d9bdbce0f6cc9c8873d6a84c8e72f863c2..d0c1e660e5a786c50794d278f164678026a5cb74 100644 (file)
@@ -10,19 +10,36 @@ import unittest
 from htsworkflow.pipelines.runfolder import ElementTree
 from htsworkflow.pipelines import genomemap
 
-class TestGenomeMap(unittest.TestCase):
-    def test_genomesizes_xml(self):
-        xml = ElementTree.fromstring("""<sequenceSizes>
+MINI_GENOME_XML = '''<sequenceSizes>
         <chromosome fileName="chr2.fa" contigName="chr2" totalBases="181748087"/>
         <chromosome fileName="chr1.fa" contigName="chr1" totalBases="197195432"/>
- </sequenceSizes>
-""")
+</sequenceSizes>
+'''
+class TestGenomeMap(unittest.TestCase):
+    def test_genomesizes_xml(self):
+        xml = ElementTree.fromstring(MINI_GENOME_XML)
         g = genomemap.GenomeMap()
         g.build_map_from_element(xml)
 
         self.assertTrue('chr1.fa' in g)
         self.assertEqual(g['chr1.fa'], 'mm9/chr1.fa')
 
+    def test_genomesizes_file(self):
+        g = genomemap.GenomeMap()
+        try:
+            tempdir = tempfile.mkdtemp(prefix='tmp_genome')
+            name = os.path.join(tempdir, '11111_NoIndex_L001_genomesize.xml')
+            stream = open(name, 'w')
+            stream.write(MINI_GENOME_XML)
+            stream.close()
+            g.parse_genomesize(name)
+        finally:
+            shutil.rmtree(tempdir)
+
+        self.assertTrue('chr1.fa' in g)
+        self.assertEqual(len(g), 2)
+        self.assertEqual(g['chr1.fa'], 'mm9/chr1.fa')
+
     def test_simulated_genome_dir(self):
         vlds = [genomemap.vldInfo('chr1.fa.vld', False),
                 genomemap.vldInfo('chr2.fa.vld', False),