1 | import unittest |
---|
2 | import tempfile |
---|
3 | import os |
---|
4 | import shutil |
---|
5 | |
---|
6 | from anuga.utilities.file_utils import copy_code_files, get_all_swwfiles |
---|
7 | from anuga.utilities.file_utils import del_dir |
---|
8 | |
---|
9 | |
---|
10 | class Test_FileUtils(unittest.TestCase): |
---|
11 | |
---|
12 | def test_copy_code_files(self): |
---|
13 | '''test that the copy_code_files() function is sane.''' |
---|
14 | |
---|
15 | def create_file(f): |
---|
16 | fd = open(f, 'w') |
---|
17 | fd.write('%s\n' % f) |
---|
18 | fd.close() |
---|
19 | |
---|
20 | # create working directories and test files |
---|
21 | work_dir = tempfile.mkdtemp() |
---|
22 | dst_dir = tempfile.mkdtemp(dir=work_dir) |
---|
23 | src_dir = tempfile.mkdtemp(dir=work_dir) |
---|
24 | |
---|
25 | f1 = 'file1' |
---|
26 | filename1 = os.path.join(src_dir, f1) |
---|
27 | create_file(filename1) |
---|
28 | f2 = 'file2' |
---|
29 | filename2 = os.path.join(src_dir, f2) |
---|
30 | create_file(filename2) |
---|
31 | f3 = 'file3' |
---|
32 | filename3 = os.path.join(src_dir, f3) |
---|
33 | create_file(filename3) |
---|
34 | f4 = 'file4' |
---|
35 | filename4 = os.path.join(src_dir, f4) |
---|
36 | create_file(filename4) |
---|
37 | f5 = 'file5' |
---|
38 | filename5 = os.path.join(src_dir, f5) |
---|
39 | create_file(filename5) |
---|
40 | |
---|
41 | # exercise the copy function |
---|
42 | copy_code_files(dst_dir, filename1) |
---|
43 | copy_code_files(dst_dir, filename1, filename2) |
---|
44 | copy_code_files(dst_dir, (filename4, filename5, filename3)) |
---|
45 | |
---|
46 | # test that files were actually copied |
---|
47 | self.failUnless(os.access(os.path.join(dst_dir, f1), os.F_OK)) |
---|
48 | self.failUnless(os.access(os.path.join(dst_dir, f2), os.F_OK)) |
---|
49 | self.failUnless(os.access(os.path.join(dst_dir, f3), os.F_OK)) |
---|
50 | self.failUnless(os.access(os.path.join(dst_dir, f4), os.F_OK)) |
---|
51 | self.failUnless(os.access(os.path.join(dst_dir, f5), os.F_OK)) |
---|
52 | |
---|
53 | # clean up |
---|
54 | shutil.rmtree(work_dir) |
---|
55 | |
---|
56 | def test_get_all_swwfiles(self): |
---|
57 | try: |
---|
58 | swwfiles = get_all_swwfiles('','test.txt') #Invalid |
---|
59 | except IOError: |
---|
60 | pass |
---|
61 | else: |
---|
62 | raise 'Should have raised exception' |
---|
63 | |
---|
64 | def test_get_all_swwfiles1(self): |
---|
65 | |
---|
66 | temp_dir = tempfile.mkdtemp('','sww_test') |
---|
67 | filename0 = tempfile.mktemp('.sww','test',temp_dir) |
---|
68 | filename1 = tempfile.mktemp('.sww','test',temp_dir) |
---|
69 | filename2 = tempfile.mktemp('.sww','test',temp_dir) |
---|
70 | filename3 = tempfile.mktemp('.sww','test',temp_dir) |
---|
71 | |
---|
72 | #print'filename', filename0,filename1,filename2,filename3 |
---|
73 | |
---|
74 | fid0 = open(filename0, 'w') |
---|
75 | fid1 = open(filename1, 'w') |
---|
76 | fid2 = open(filename2, 'w') |
---|
77 | fid3 = open(filename3, 'w') |
---|
78 | |
---|
79 | fid0.write('hello') |
---|
80 | fid1.write('hello') |
---|
81 | fid2.write('hello') |
---|
82 | fid3.write('hello') |
---|
83 | |
---|
84 | fid0.close() |
---|
85 | fid1.close() |
---|
86 | fid2.close() |
---|
87 | fid3.close() |
---|
88 | |
---|
89 | |
---|
90 | dir, name0 = os.path.split(filename0) |
---|
91 | #print 'dir',dir,name0 |
---|
92 | |
---|
93 | iterate=get_all_swwfiles(dir,'test') |
---|
94 | |
---|
95 | del_dir(temp_dir) |
---|
96 | # removeall(temp_dir) |
---|
97 | |
---|
98 | _, name0 = os.path.split(filename0) |
---|
99 | #print'name0',name0[:-4],iterate[0] |
---|
100 | _, name1 = os.path.split(filename1) |
---|
101 | _, name2 = os.path.split(filename2) |
---|
102 | _, name3 = os.path.split(filename3) |
---|
103 | |
---|
104 | assert name0[:-4] in iterate |
---|
105 | assert name1[:-4] in iterate |
---|
106 | assert name2[:-4] in iterate |
---|
107 | assert name3[:-4] in iterate |
---|
108 | |
---|
109 | assert len(iterate)==4 |
---|
110 | |
---|
111 | #------------------------------------------------------------- |
---|
112 | |
---|
113 | if __name__ == "__main__": |
---|
114 | #suite = unittest.makeSuite(Test_Data_Manager, 'test_sww2domain2') |
---|
115 | suite = unittest.makeSuite(Test_FileUtils, 'test_sww') |
---|
116 | runner = unittest.TextTestRunner() #verbosity=2) |
---|
117 | runner.run(suite) |
---|