Updated osl submodule
[clay.git] / tests / check_source_result.py
blob83cdf9b612d656266bd55676e6acb2a21fdfc9cc
1 #!/usr/bin/python
4 import sys
5 import os
6 import subprocess
7 import string
10 # Check arguments
11 if (len(sys.argv) < 3):
12 print 'Usage:', sys.argv[0], 'source.c source.c.scop [clay_path] [clay options...]'
13 sys.exit(2)
15 # Get arguments
16 source_filename = sys.argv[1]
17 scop_filename = sys.argv[2]
19 # Display arguments
20 print sys.argv[0], source_filename, scop_filename
22 # Check if source_filename and scop_filename exist
23 if (os.path.exists(source_filename) == False):
24 print 'Error:', source_filename, ' file does not exist'
25 sys.exit(3)
26 if (os.path.exists(scop_filename) == False):
27 print 'Error:', scop_filename, ' file does not exist'
28 sys.exit(4)
30 # Custom clay
31 clay = ""
32 if (len(sys.argv) >= 4):# and os.path.exists(sys.argv[3]) and os.access(sys.argv[3], os.X_OK)):
33 clay = sys.argv[3]
34 else:
35 clay = "clay"
36 # clay options
37 clay_options = ["--readc"]
38 if (len(sys.argv) > 4):
39 i = 4
40 while (i < len(sys.argv)):
41 clay_options += [sys.argv[i]]
42 i += 1
43 # Final clay
44 print "clay =", clay, clay_options
47 # Get scop form clay
48 clay_output,clay_error_output = subprocess.Popen([clay, source_filename] + clay_options, stdout = subprocess.PIPE, stderr = subprocess.PIPE).communicate()
49 clay_output += clay_error_output
50 #print clay_output
52 # Get scop
53 scop_file = open(scop_filename, 'r')
54 scop = ""
55 for line in scop_file:
56 #sys.stdout.write(line)
57 scop += line
58 scop_file.close()
61 # Compare clay_output and scop
62 s0 = ""
63 s1 = ""
64 # Remove empty line
65 skip_next_line = False
66 for line in string.split(clay_output, '\n'):
67 if (skip_next_line):
68 skip_next_line = False
69 continue
70 if (line == '# File name'): skip_next_line = True
71 if line != '' and (string.find(line, 'enerated by') == -1): s0 += line + '\n'
72 for line in string.split(scop, '\n'):
73 if (skip_next_line):
74 skip_next_line = False
75 continue
76 if (line == '# File name'): skip_next_line = True
77 if line != '' and (string.find(line, 'enerated by') == -1): s1 += line + '\n'
78 # Print
79 print s0
80 print s1
81 # Result
82 if (s0 != s1):
83 print 'Result:', '"clay', source_filename + '"', 'and', '"' + scop_filename + '"', 'are different'
84 sys.exit(1)
85 else:
86 print 'Result:', '"clay', source_filename + '"', 'and', '"' + scop_filename + '"', 'have no difference'
88 # End
89 sys.exit(0)