Further improve reliability of make_tree_from.
[htsworkflow.git] / htsworkflow / submission / test / test_results.py
index 8579c582a5ea134dee51bcfd1be8cb6963a80a79..b7d6accd73af229fe12ac43dd3db07785a5c8740 100644 (file)
@@ -5,7 +5,8 @@ import os
 from pprint import pprint
 import shutil
 import tempfile
-import unittest
+
+from unittest2 import TestCase, defaultTestLoader
 
 from htsworkflow.submission.results import ResultMap
 
@@ -41,21 +42,20 @@ def generate_sample_results_tree(obj):
         stream.write(f)
         stream.close()
 
-class TestResultMap(unittest.TestCase):
+class TestResultMap(TestCase):
     def setUp(self):
         generate_sample_results_tree(self)
 
     def tearDown(self):
         shutil.rmtree(self.tempdir)
 
-
     def test_dict_like(self):
         """Make sure the result map works like an ordered dictionary
         """
         results = ResultMap()
-        results.add_result('1000', 'dir1000')
-        results.add_result('2000', 'dir2000')
-        results.add_result('1500', 'dir1500')
+        results['1000'] = 'dir1000'
+        results['2000'] = 'dir2000'
+        results['1500'] = 'dir1500'
 
         self.failUnlessEqual(results.keys(), ['1000', '2000', '1500'])
         self.failUnlessEqual(list(results.values()),
@@ -69,13 +69,37 @@ class TestResultMap(unittest.TestCase):
         self.failUnlessEqual(results['1500'], 'dir1500')
         self.failUnlessEqual(results['2000'], 'dir2000')
 
-    def test_make_from(self):
+        self.assertTrue(u'2000' in results)
+        self.assertTrue('2000' in results)
+        self.assertFalse(u'77777' in results)
+        self.assertFalse('77777' in results)
+
+    def test_make_from_absolute(self):
+        """Test that make from works if ResultMap has absolute paths
+        """
         results = ResultMap()
-        results.add_result('1000', S1_NAME)
-        results.add_result('2000', S2_NAME)
+        sample1_dir = os.path.join(self.resultdir, S1_NAME)
+        sample2_dir = os.path.join(self.resultdir, S2_NAME)
+        results['1000'] =  sample1_dir
+        results['2000'] =  sample2_dir
 
         results.make_tree_from(self.sourcedir, self.resultdir)
+        self.failUnless(os.path.isdir(sample1_dir))
+        self.failUnless(os.path.isdir(sample2_dir))
+
+        for f in S1_FILES + S2_FILES:
+            self.failUnless(
+                os.path.islink(
+                    os.path.join(self.resultdir, f)))
+
+    def test_make_from_filename(self):
+        """Test that make from works if ResultMap has no path
+        """
+        results = ResultMap()
+        results['1000'] =  S1_NAME
+        results['2000'] =  S2_NAME
 
+        results.make_tree_from(self.sourcedir, self.resultdir)
         sample1_dir = os.path.join(self.resultdir, S1_NAME)
         sample2_dir = os.path.join(self.resultdir, S2_NAME)
         self.failUnless(os.path.isdir(sample1_dir))
@@ -87,12 +111,12 @@ class TestResultMap(unittest.TestCase):
                     os.path.join(self.resultdir, f)))
 
 
-
-
 def suite():
-    suite = unittest.makeSuite(TestResultMap, 'test')
+    suite = defaultTestLoader.loadTestsFromTestCase(TestResultMap)
     return suite
 
 if __name__ == "__main__":
-    unittest.main(defaultTest='suite')
-
+    import logging
+    logging.basicConfig(level=logging.DEBUG)
+    from unittest2 import main
+    main(defaultTest='suite')