Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Side by Side Diff: ppapi/generate_ppapi_include_tests.py

Issue 5340003: Make a new test to enforce the sizes of all structs and enums in the C API.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/c/ppb_var.h ('k') | ppapi/generate_ppapi_size_checks.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # This script should be run manually on occasion to make sure the gyp file and 7 # This script should be run manually on occasion to make sure the gyp file and
8 # the includes tests are up to date. 8 # the includes tests are up to date.
9 # It does the following: 9 # It does the following:
10 # - Verifies that all source code is in ppapi.gyp 10 # - Verifies that all source code is in ppapi.gyp
11 # - Verifies that all sources in ppapi.gyp really do exist 11 # - Verifies that all sources in ppapi.gyp really do exist
12 # - Generates tests/test_c_includes.c 12 # - Generates tests/test_c_includes.c
13 # - Generates tests/test_cc_includes.cc 13 # - Generates tests/test_cpp_includes.cc
14 # These tests are checked in to SVN. 14 # These tests are checked in to SVN.
15 # TODO(dmichael): Make this script execute as a gyp action, move the include 15 # TODO(dmichael): Make this script execute as a gyp action, move the include
16 # tests to some 'generated' area, and remove them from version 16 # tests to some 'generated' area, and remove them from version
17 # control. 17 # control.
18 18
19 import re 19 import re
20 import os 20 import os
21 import sys 21 import sys
22 import posixpath 22 import posixpath
23 23
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 85
86 86
87 def WriteLines(filename, lines): 87 def WriteLines(filename, lines):
88 outfile = open(filename, 'w') 88 outfile = open(filename, 'w')
89 for line in lines: 89 for line in lines:
90 outfile.write(line) 90 outfile.write(line)
91 outfile.write('\n') 91 outfile.write('\n')
92 92
93 93
94 COPYRIGHT_STRING_C = \ 94 COPYRIGHT_STRING_C = \
95 """ 95 """/* Copyright (c) 2010 The Chromium Authors. All rights reserved.
96 /* Copyright (c) 2010 The Chromium Authors. All rights reserved.
97 * Use of this source code is governed by a BSD-style license that can be 96 * Use of this source code is governed by a BSD-style license that can be
98 * found in the LICENSE file. 97 * found in the LICENSE file.
99 * 98 *
100 * This test simply includes all the C headers to ensure they compile with a C 99 * This test simply includes all the C headers to ensure they compile with a C
101 * compiler. If it compiles, it passes. 100 * compiler. If it compiles, it passes.
102 */ 101 */
103 """ 102 """
104 103
105 COPYRIGHT_STRING_CC = \ 104 COPYRIGHT_STRING_CC = \
106 """ 105 """// Copyright (c) 2010 The Chromium Authors. All rights reserved.
107 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
108 // Use of this source code is governed by a BSD-style license that can be 106 // Use of this source code is governed by a BSD-style license that can be
109 // found in the LICENSE file. 107 // found in the LICENSE file.
110 // 108 //
111 // This test simply includes all the C++ headers to ensure they compile with a 109 // This test simply includes all the C++ headers to ensure they compile with a
112 // C++ compiler. If it compiles, it passes. 110 // C++ compiler. If it compiles, it passes.
113 // 111 //
114 """ 112 """
115 113
116 114
117 # Get the source file names out of the given gyp file data object (as evaluated 115 # Get the source file names out of the given gyp file data object (as evaluated
118 # from a gyp file) for the given target name. Return the string names in 116 # from a gyp file) for the given target name. Return the string names in
119 # sorted order. 117 # sorted order.
120 def GetSourcesForTarget(target_name, gyp_file_data): 118 def GetSourcesForTarget(target_name, gyp_file_data):
121 for target in gyp_file_data[GYP_TARGETS_KEY]: 119 for target in gyp_file_data[GYP_TARGETS_KEY]:
122 if target[GYP_TARGET_NAME_KEY] == target_name: 120 if target[GYP_TARGET_NAME_KEY] == target_name:
123 sources = target[GYP_SOURCES_KEY] 121 sources = target[GYP_SOURCES_KEY]
124 sources.sort() 122 sources.sort()
125 return sources 123 return sources
126 print 'Warning: no target named ', target, ' found.' 124 print 'Warning: no target named ', target, ' found.'
127 return [] 125 return []
128 126
129 127
130 # Generate test_c_includes.c, which is a test to ensure that all the headers in 128 # Generate all_c_includes.h, which includes all C headers. This is part of
131 # ppapi/c can be compiled with a C compiler. 129 # tests/test_c_sizes.c, which includes all C API files to ensure that all
130 # the headers in ppapi/c can be compiled with a C compiler, and also asserts
131 # (with compile-time assertions) that all structs and enums are a particular
132 # size.
132 def GenerateCIncludeTest(gyp_file_data): 133 def GenerateCIncludeTest(gyp_file_data):
133 c_sources = GetSourcesForTarget('ppapi_c', gyp_file_data) 134 c_sources = GetSourcesForTarget('ppapi_c', gyp_file_data)
134 lines = [COPYRIGHT_STRING_C] 135 lines = [COPYRIGHT_STRING_C]
136 lines.append('#ifndef PPAPI_TESTS_ALL_C_INCLUDES_H_\n')
137 lines.append('#define PPAPI_TESTS_ALL_C_INCLUDES_H_\n\n')
135 for source in c_sources: 138 for source in c_sources:
136 lines.append('#include "ppapi/' + source + '"\n') 139 lines.append('#include "ppapi/' + source + '"\n')
137 WriteLines('tests/test_c_includes.c', lines) 140 lines.append('\n#endif /* PPAPI_TESTS_ALL_C_INCLUDES_H_ */\n')
141 WriteLines('tests/all_c_includes.h', lines)
138 142
139 143
140 # Generate test_cc_includes.cc, which is a test to ensure that all the headers 144 # Generate all_cpp_includes.h, which is used by test_cpp_includes.cc to ensure
141 # in ppapi/cpp can be compiled with a C++ compiler. 145 # that all the headers in ppapi/cpp can be compiled with a C++ compiler.
142 def GenerateCCIncludeTest(gyp_file_data): 146 def GenerateCCIncludeTest(gyp_file_data):
143 cc_sources = GetSourcesForTarget('ppapi_cpp_objects', gyp_file_data) 147 cc_sources = GetSourcesForTarget('ppapi_cpp_objects', gyp_file_data)
144 header_re = re.compile('.+\.h$') 148 header_re = re.compile('.+\.h$')
145 lines = [COPYRIGHT_STRING_CC] 149 lines = [COPYRIGHT_STRING_CC]
150 lines.append('#ifndef PPAPI_TESTS_ALL_CPP_INCLUDES_H_\n')
151 lines.append('#define PPAPI_TESTS_ALL_CPP_INCLUDES_H_\n\n')
146 for source in cc_sources: 152 for source in cc_sources:
147 if header_re.match(source): 153 if header_re.match(source):
148 lines.append('#include "ppapi/' + source + '"\n') 154 lines.append('#include "ppapi/' + source + '"\n')
149 WriteLines('tests/test_cc_includes.cc', lines) 155 lines.append('\n#endif // PPAPI_TESTS_ALL_CPP_INCLUDES_H_\n')
156 WriteLines('tests/all_cpp_includes.h', lines)
150 157
151 158
152 def main(): 159 def main():
153 ppapi_gyp_file_name = 'ppapi.gyp' 160 ppapi_gyp_file_name = 'ppapi.gyp'
154 gyp_file_contents = open(ppapi_gyp_file_name).read() 161 gyp_file_contents = open(ppapi_gyp_file_name).read()
155 gyp_file_data = eval(gyp_file_contents) 162 gyp_file_data = eval(gyp_file_contents)
156 VerifyGypFile(gyp_file_data) 163 VerifyGypFile(gyp_file_data)
157 GenerateCIncludeTest(gyp_file_data) 164 GenerateCIncludeTest(gyp_file_data)
158 GenerateCCIncludeTest(gyp_file_data) 165 GenerateCCIncludeTest(gyp_file_data)
159 return 0 166 return 0
160 167
161 168
162 if __name__ == '__main__': 169 if __name__ == '__main__':
163 sys.exit(main()) 170 sys.exit(main())
164 171
OLDNEW
« no previous file with comments | « ppapi/c/ppb_var.h ('k') | ppapi/generate_ppapi_size_checks.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698