Initial port to python3
[htsworkflow.git] / htsworkflow / pipelines / test / test_genomemap.py
index 421308d9bdbce0f6cc9c8873d6a84c8e72f863c2..350f46d19f636f2497700d34b6510b4ec3269cef 100644 (file)
@@ -2,27 +2,44 @@
 """More direct synthetic test cases for the eland output file processing
 """
 import os
-from StringIO import StringIO
+from io import StringIO
 import shutil
 import tempfile
-import unittest
+from unittest import TestCase
 
-from htsworkflow.pipelines.runfolder import ElementTree
+from htsworkflow.pipelines 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(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),
@@ -59,5 +76,13 @@ class TestGenomeMap(unittest.TestCase):
         self.assertEqual(g['chr1.fa'], '{0}/chr1.fa'.format(tempgenome))
 
 
+def suite():
+    from unittest import TestSuite, defaultTestLoader
+    suite = TestSuite()
+    suite.addTests(defaultTestLoader.loadTestsFromTestCase(TestGenomeMap))
+    return suite
+
+
 if __name__ == "__main__":
-    unittest.main()
+    from unittest import main
+    main(defaultTest="suite")