3 from pprint import pprint
6 from unittest2 import TestCase, defaultTestLoader
8 from htsworkflow.submission.results import ResultMap
9 from submission_test_common import *
11 def generate_sample_results_tree(obj):
12 obj.tempdir = tempfile.mkdtemp(prefix="results_test")
13 obj.sourcedir = os.path.join(obj.tempdir, 'source')
14 obj.resultdir = os.path.join(obj.tempdir, 'results')
16 for d in [obj.sourcedir,
17 os.path.join(obj.sourcedir, S1_NAME),
18 os.path.join(obj.sourcedir, S2_NAME),
20 os.mkdir(os.path.join(obj.tempdir, d))
23 tomake.extend(S1_FILES)
24 tomake.extend(S2_FILES)
26 stream = open(os.path.join(obj.sourcedir, f), 'w')
31 class TestResultMap(TestCase):
33 generate_sample_results_tree(self)
36 shutil.rmtree(self.tempdir)
38 def test_dict_like(self):
39 """Make sure the result map works like an ordered dictionary
42 results['1000'] = 'dir1000'
43 results['2000'] = 'dir2000'
44 results['1500'] = 'dir1500'
46 self.failUnlessEqual(results.keys(), ['1000', '2000', '1500'])
47 self.failUnlessEqual(list(results.values()),
48 ['dir1000', 'dir2000', 'dir1500'])
49 self.failUnlessEqual(list(results.items()),
54 self.failUnlessEqual(results['1000'], 'dir1000')
55 self.failUnlessEqual(results['1500'], 'dir1500')
56 self.failUnlessEqual(results['2000'], 'dir2000')
58 self.assertTrue(u'2000' in results)
59 self.assertTrue('2000' in results)
60 self.assertFalse(u'77777' in results)
61 self.assertFalse('77777' in results)
63 def test_make_from_absolute(self):
64 """Test that make from works if ResultMap has absolute paths
67 sample1_dir = os.path.join(self.resultdir, S1_NAME)
68 sample2_dir = os.path.join(self.resultdir, S2_NAME)
69 results['1000'] = sample1_dir
70 results['2000'] = sample2_dir
72 results.make_tree_from(self.sourcedir, self.resultdir)
73 self.failUnless(os.path.isdir(sample1_dir))
74 self.failUnless(os.path.isdir(sample2_dir))
76 for f in S1_FILES + S2_FILES:
79 os.path.join(self.resultdir, f)))
81 def test_make_from_filename(self):
82 """Test that make from works if ResultMap has no path
85 results['1000'] = S1_NAME
86 results['2000'] = S2_NAME
88 results.make_tree_from(self.sourcedir, self.resultdir)
89 sample1_dir = os.path.join(self.resultdir, S1_NAME)
90 sample2_dir = os.path.join(self.resultdir, S2_NAME)
91 self.failUnless(os.path.isdir(sample1_dir))
92 self.failUnless(os.path.isdir(sample2_dir))
94 for f in S1_FILES + S2_FILES:
97 os.path.join(self.resultdir, f)))
101 suite = defaultTestLoader.loadTestsFromTestCase(TestResultMap)
104 if __name__ == "__main__":
106 logging.basicConfig(level=logging.DEBUG)
107 from unittest2 import main
108 main(defaultTest='suite')