| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2014 Google Inc. All rights reserved. | 2 # Copyright (c) 2014 Google Inc. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Tests for analyzer | 6 """Tests for analyzer |
| 7 """ | 7 """ |
| 8 | 8 |
| 9 import json | 9 import json |
| 10 import TestGyp | 10 import TestGyp |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 # Verifies config_path must be specified. | 157 # Verifies config_path must be specified. |
| 158 test.run_gyp('test.gyp') | 158 test.run_gyp('test.gyp') |
| 159 EnsureStdoutContains('Must specify files to analyze via config_path') | 159 EnsureStdoutContains('Must specify files to analyze via config_path') |
| 160 | 160 |
| 161 # Verifies config_path must point to a valid file. | 161 # Verifies config_path must point to a valid file. |
| 162 test.run_gyp('test.gyp', '-Gconfig_path=bogus_file', | 162 test.run_gyp('test.gyp', '-Gconfig_path=bogus_file', |
| 163 '-Ganalyzer_output_path=analyzer_output') | 163 '-Ganalyzer_output_path=analyzer_output') |
| 164 EnsureError('Unable to open file bogus_file') | 164 EnsureError('Unable to open file bogus_file') |
| 165 | 165 |
| 166 # Verify 'invalid_targets' is present when bad target is specified. | 166 # Verify 'invalid_targets' is present when bad target is specified. |
| 167 _CreateConfigFile(['exe2.c'], ['bad_target', 'all', 'exe2']) | 167 _CreateConfigFile(['exe2.c'], ['bad_target', 'allx', 'exe2']) |
| 168 run_analyzer() | 168 run_analyzer() |
| 169 EnsureInvalidTargets({'bad_target'}) | 169 EnsureInvalidTargets({'bad_target'}) |
| 170 | 170 |
| 171 # Verifies config_path must point to a valid json file. | 171 # Verifies config_path must point to a valid json file. |
| 172 _CreateBogusConfigFile() | 172 _CreateBogusConfigFile() |
| 173 run_analyzer() | 173 run_analyzer() |
| 174 EnsureError('Unable to parse config file test_file') | 174 EnsureError('Unable to parse config file test_file') |
| 175 | 175 |
| 176 # Trivial test of a source. | 176 # Trivial test of a source. |
| 177 _CreateConfigFile(['foo.c'], ['all', 'exe2']) | 177 _CreateConfigFile(['foo.c'], ['allx', 'exe2']) |
| 178 run_analyzer() | 178 run_analyzer() |
| 179 EnsureContains(matched=True, build_targets={'exe'}) | 179 EnsureContains(matched=True, build_targets={'exe'}) |
| 180 | 180 |
| 181 # Conditional source that is excluded. | 181 # Conditional source that is excluded. |
| 182 _CreateConfigFile(['conditional_source.c'], ['all', 'exe2']) | 182 _CreateConfigFile(['conditional_source.c'], ['allx', 'exe2']) |
| 183 run_analyzer() | 183 run_analyzer() |
| 184 EnsureContains(matched=False) | 184 EnsureContains(matched=False) |
| 185 | 185 |
| 186 # Conditional source that is included by way of argument. | 186 # Conditional source that is included by way of argument. |
| 187 _CreateConfigFile(['conditional_source.c'], ['all', 'exe2']) | 187 _CreateConfigFile(['conditional_source.c'], ['allx', 'exe2']) |
| 188 run_analyzer('-Dtest_variable=1') | 188 run_analyzer('-Dtest_variable=1') |
| 189 EnsureContains(matched=True, build_targets={'exe'}) | 189 EnsureContains(matched=True, build_targets={'exe'}) |
| 190 | 190 |
| 191 # Two unknown files. | 191 # Two unknown files. |
| 192 _CreateConfigFile(['unknown1.c', 'unoknow2.cc'], ['all', 'exe2']) | 192 _CreateConfigFile(['unknown1.c', 'unoknow2.cc'], ['allx', 'exe2']) |
| 193 run_analyzer() | 193 run_analyzer() |
| 194 EnsureContains() | 194 EnsureContains() |
| 195 | 195 |
| 196 # Two unknown files. | 196 # Two unknown files. |
| 197 _CreateConfigFile(['unknown1.c', 'subdir/subdir_sourcex.c'], ['all', 'exe2']) | 197 _CreateConfigFile(['unknown1.c', 'subdir/subdir_sourcex.c'], ['allx', 'exe2']) |
| 198 run_analyzer() | 198 run_analyzer() |
| 199 EnsureContains() | 199 EnsureContains() |
| 200 | 200 |
| 201 # Included dependency | 201 # Included dependency |
| 202 _CreateConfigFile(['unknown1.c', 'subdir/subdir_source.c'], ['all', 'exe2']) | 202 _CreateConfigFile(['unknown1.c', 'subdir/subdir_source.c'], ['allx', 'exe2']) |
| 203 run_analyzer() | 203 run_analyzer() |
| 204 EnsureContains(matched=True, build_targets={'exe', 'exe3'}) | 204 EnsureContains(matched=True, build_targets={'exe', 'exe3'}) |
| 205 | 205 |
| 206 # Included inputs to actions. | 206 # Included inputs to actions. |
| 207 _CreateConfigFile(['action_input.c'], ['all', 'exe2']) | 207 _CreateConfigFile(['action_input.c'], ['allx', 'exe2']) |
| 208 run_analyzer() | 208 run_analyzer() |
| 209 EnsureContains(matched=True, build_targets={'exe'}) | 209 EnsureContains(matched=True, build_targets={'exe'}) |
| 210 | 210 |
| 211 # Don't consider outputs. | 211 # Don't consider outputs. |
| 212 _CreateConfigFile(['action_output.c'], ['all', 'exe2']) | 212 _CreateConfigFile(['action_output.c'], ['allx', 'exe2']) |
| 213 run_analyzer() | 213 run_analyzer() |
| 214 EnsureContains(matched=False) | 214 EnsureContains(matched=False) |
| 215 | 215 |
| 216 # Rule inputs. | 216 # Rule inputs. |
| 217 _CreateConfigFile(['rule_input.c'], ['all', 'exe2']) | 217 _CreateConfigFile(['rule_input.c'], ['allx', 'exe2']) |
| 218 run_analyzer() | 218 run_analyzer() |
| 219 EnsureContains(matched=True, build_targets={'exe'}) | 219 EnsureContains(matched=True, build_targets={'exe'}) |
| 220 | 220 |
| 221 # Ignore path specified with PRODUCT_DIR. | 221 # Ignore path specified with PRODUCT_DIR. |
| 222 _CreateConfigFile(['product_dir_input.c'], ['all', 'exe2']) | 222 _CreateConfigFile(['product_dir_input.c'], ['allx', 'exe2']) |
| 223 run_analyzer() | 223 run_analyzer() |
| 224 EnsureContains(matched=False) | 224 EnsureContains(matched=False) |
| 225 | 225 |
| 226 # Path specified via a variable. | 226 # Path specified via a variable. |
| 227 _CreateConfigFile(['subdir/subdir_source2.c'], ['all', 'exe2']) | 227 _CreateConfigFile(['subdir/subdir_source2.c'], ['allx', 'exe2']) |
| 228 run_analyzer() | 228 run_analyzer() |
| 229 EnsureContains(matched=True, build_targets={'exe'}) | 229 EnsureContains(matched=True, build_targets={'exe'}) |
| 230 | 230 |
| 231 # Verifies paths with // are fixed up correctly. | 231 # Verifies paths with // are fixed up correctly. |
| 232 _CreateConfigFile(['parent_source.c'], ['all', 'exe2']) | 232 _CreateConfigFile(['parent_source.c'], ['allx', 'exe2']) |
| 233 run_analyzer() | 233 run_analyzer() |
| 234 EnsureContains(matched=True, build_targets={'exe', 'exe3'}) | 234 EnsureContains(matched=True, build_targets={'exe', 'exe3'}) |
| 235 | 235 |
| 236 # Verifies relative paths are resolved correctly. | 236 # Verifies relative paths are resolved correctly. |
| 237 _CreateConfigFile(['subdir/subdir_source.h'], ['all', 'exe2']) | 237 _CreateConfigFile(['subdir/subdir_source.h'], ['allx', 'exe2']) |
| 238 run_analyzer() | 238 run_analyzer() |
| 239 EnsureContains(matched=True, build_targets={'exe'}) | 239 EnsureContains(matched=True, build_targets={'exe'}) |
| 240 | 240 |
| 241 # Verifies relative paths in inputs are resolved correctly. | 241 # Verifies relative paths in inputs are resolved correctly. |
| 242 _CreateConfigFile(['rel_path1.h'], ['all', 'exe2']) | 242 _CreateConfigFile(['rel_path1.h'], ['allx', 'exe2']) |
| 243 run_analyzer() | 243 run_analyzer() |
| 244 EnsureContains(matched=True, build_targets={'exe'}) | 244 EnsureContains(matched=True, build_targets={'exe'}) |
| 245 | 245 |
| 246 # Various permutations when passing in targets. | 246 # Various permutations when passing in targets. |
| 247 _CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], | 247 _CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], |
| 248 ['exe', 'exe3', 'all', 'exe2']) | 248 ['exe', 'exe3', 'allx', 'exe2']) |
| 249 run_analyzer() | 249 run_analyzer() |
| 250 EnsureContains(matched=True, build_targets={'exe2', 'exe3'}) | 250 EnsureContains(matched=True, build_targets={'exe2', 'exe3'}) |
| 251 | 251 |
| 252 _CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], | 252 _CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], |
| 253 ['exe', 'all', 'exe2']) | 253 ['exe', 'allx', 'exe2']) |
| 254 run_analyzer() | 254 run_analyzer() |
| 255 EnsureContains(matched=True, build_targets={'exe2', 'exe3'}) | 255 EnsureContains(matched=True, build_targets={'exe2', 'exe3'}) |
| 256 | 256 |
| 257 # Verifies duplicates are ignored. | 257 # Verifies duplicates are ignored. |
| 258 _CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], | 258 _CreateConfigFile(['exe2.c', 'subdir/subdir2b_source.c'], |
| 259 ['exe', 'exe', 'all', 'exe2']) | 259 ['exe', 'exe', 'allx', 'exe2']) |
| 260 run_analyzer() | 260 run_analyzer() |
| 261 EnsureContains(matched=True, build_targets={'exe2', 'exe3'}) | 261 EnsureContains(matched=True, build_targets={'exe2', 'exe3'}) |
| 262 | 262 |
| 263 _CreateConfigFile(['exe2.c'], ['exe', 'all', 'exe2']) | 263 _CreateConfigFile(['exe2.c'], ['exe', 'allx', 'exe2']) |
| 264 run_analyzer() | 264 run_analyzer() |
| 265 EnsureContains(matched=True, build_targets={'exe2'}) | 265 EnsureContains(matched=True, build_targets={'exe2'}) |
| 266 | 266 |
| 267 _CreateConfigFile(['exe2.c'], ['all', 'exe2']) | 267 _CreateConfigFile(['exe2.c'], ['allx', 'exe2']) |
| 268 run_analyzer() | 268 run_analyzer() |
| 269 EnsureContains(matched=True, build_targets={'exe2'}) | 269 EnsureContains(matched=True, build_targets={'exe2'}) |
| 270 | 270 |
| 271 _CreateConfigFile(['subdir/subdir2b_source.c', 'exe2.c'], ['all', 'exe2']) | 271 _CreateConfigFile(['subdir/subdir2b_source.c', 'exe2.c'], ['allx', 'exe2']) |
| 272 run_analyzer() | 272 run_analyzer() |
| 273 EnsureContains(matched=True, build_targets={'exe2', 'exe3'}) | 273 EnsureContains(matched=True, build_targets={'exe2', 'exe3'}) |
| 274 | 274 |
| 275 _CreateConfigFile(['subdir/subdir2b_source.c'], ['exe3', 'all', 'exe2']) | 275 _CreateConfigFile(['subdir/subdir2b_source.c'], ['exe3', 'allx', 'exe2']) |
| 276 run_analyzer() | 276 run_analyzer() |
| 277 EnsureContains(matched=True, build_targets={'exe3'}) | 277 EnsureContains(matched=True, build_targets={'exe3'}) |
| 278 | 278 |
| 279 _CreateConfigFile(['foo.c'], ['all', 'exe2']) | 279 _CreateConfigFile(['foo.c'], ['allx', 'exe2']) |
| 280 run_analyzer() | 280 run_analyzer() |
| 281 EnsureContains(matched=True, build_targets={'exe'}) | 281 EnsureContains(matched=True, build_targets={'exe'}) |
| 282 | 282 |
| 283 # Assertions when modifying build (gyp/gypi) files, especially when said files | 283 # Assertions when modifying build (gyp/gypi) files, especially when said files |
| 284 # are included. | 284 # are included. |
| 285 _CreateConfigFile(['subdir2/d.cc'], ['exe', 'exe2', 'foo', 'exe3']) | 285 _CreateConfigFile(['subdir2/d.cc'], ['exe', 'exe2', 'foo', 'exe3']) |
| 286 run_analyzer2() | 286 run_analyzer2() |
| 287 EnsureContains(matched=True, build_targets={'exe'}) | 287 EnsureContains(matched=True, build_targets={'exe'}) |
| 288 | 288 |
| 289 _CreateConfigFile(['subdir2/subdir.includes.gypi'], | 289 _CreateConfigFile(['subdir2/subdir.includes.gypi'], |
| 290 ['exe', 'exe2', 'foo', 'exe3']) | 290 ['exe', 'exe2', 'foo', 'exe3']) |
| 291 run_analyzer2() | 291 run_analyzer2() |
| 292 EnsureContains(matched=True, build_targets={'exe'}) | 292 EnsureContains(matched=True, build_targets={'exe'}) |
| 293 | 293 |
| 294 _CreateConfigFile(['subdir2/subdir.gyp'], ['exe', 'exe2', 'foo', 'exe3']) | 294 _CreateConfigFile(['subdir2/subdir.gyp'], ['exe', 'exe2', 'foo', 'exe3']) |
| 295 run_analyzer2() | 295 run_analyzer2() |
| 296 EnsureContains(matched=True, build_targets={'exe'}) | 296 EnsureContains(matched=True, build_targets={'exe'}) |
| 297 | 297 |
| 298 _CreateConfigFile(['test2.includes.gypi'], ['exe', 'exe2', 'foo', 'exe3']) | 298 _CreateConfigFile(['test2.includes.gypi'], ['exe', 'exe2', 'foo', 'exe3']) |
| 299 run_analyzer2() | 299 run_analyzer2() |
| 300 EnsureContains(matched=True, build_targets={'exe', 'exe2', 'exe3'}) | 300 EnsureContains(matched=True, build_targets={'exe', 'exe2', 'exe3'}) |
| 301 | 301 |
| 302 # Verify modifying a file included makes all targets dirty. | 302 # Verify modifying a file included makes all targets dirty. |
| 303 _CreateConfigFile(['common.gypi'], ['exe', 'exe2', 'foo', 'exe3']) | 303 _CreateConfigFile(['common.gypi'], ['exe', 'exe2', 'foo', 'exe3']) |
| 304 run_analyzer2('-Icommon.gypi') | 304 run_analyzer2('-Icommon.gypi') |
| 305 EnsureMatchedAll({'exe', 'exe2', 'foo', 'exe3'}) | 305 EnsureMatchedAll({'exe', 'exe2', 'foo', 'exe3'}) |
| 306 | 306 |
| 307 # Assertions from test3.gyp. | 307 # Assertions from test3.gyp. |
| 308 _CreateConfigFile(['d.c', 'f.c'], ['a', 'all']) | 308 _CreateConfigFile(['d.c', 'f.c'], ['a', 'allx']) |
| 309 run_analyzer3() | 309 run_analyzer3() |
| 310 EnsureContains(matched=True, build_targets={'a', 'b'}) | 310 EnsureContains(matched=True, build_targets={'a', 'b'}) |
| 311 | 311 |
| 312 _CreateConfigFile(['f.c'], ['a', 'all']) | 312 _CreateConfigFile(['f.c'], ['a', 'allx']) |
| 313 run_analyzer3() | 313 run_analyzer3() |
| 314 EnsureContains(matched=True, build_targets={'a', 'b'}) | 314 EnsureContains(matched=True, build_targets={'a', 'b'}) |
| 315 | 315 |
| 316 _CreateConfigFile(['f.c'], ['all']) | 316 _CreateConfigFile(['f.c'], ['allx']) |
| 317 run_analyzer3() | 317 run_analyzer3() |
| 318 EnsureContains(matched=True, build_targets={'a', 'b'}) | 318 EnsureContains(matched=True, build_targets={'a', 'b'}) |
| 319 | 319 |
| 320 _CreateConfigFile(['c.c', 'e.c'], ['all']) | 320 _CreateConfigFile(['c.c', 'e.c'], ['allx']) |
| 321 run_analyzer3() | 321 run_analyzer3() |
| 322 EnsureContains(matched=True, build_targets={'a', 'b', 'c', 'e'}) | 322 EnsureContains(matched=True, build_targets={'a', 'b', 'c', 'e'}) |
| 323 | 323 |
| 324 _CreateConfigFile(['d.c'], ['a', 'all']) | 324 _CreateConfigFile(['d.c'], ['a', 'allx']) |
| 325 run_analyzer3() | 325 run_analyzer3() |
| 326 EnsureContains(matched=True, build_targets={'a', 'b'}) | 326 EnsureContains(matched=True, build_targets={'a', 'b'}) |
| 327 | 327 |
| 328 _CreateConfigFile(['a.c'], ['a', 'b', 'all']) | 328 _CreateConfigFile(['a.c'], ['a', 'b', 'allx']) |
| 329 run_analyzer3() | 329 run_analyzer3() |
| 330 EnsureContains(matched=True, build_targets={'a'}) | 330 EnsureContains(matched=True, build_targets={'a'}) |
| 331 | 331 |
| 332 _CreateConfigFile(['a.c'], ['a', 'b', 'all']) | 332 _CreateConfigFile(['a.c'], ['a', 'b', 'allx']) |
| 333 run_analyzer3() | 333 run_analyzer3() |
| 334 EnsureContains(matched=True, build_targets={'a'}) | 334 EnsureContains(matched=True, build_targets={'a'}) |
| 335 | 335 |
| 336 _CreateConfigFile(['d.c'], ['a', 'b', 'all']) | 336 _CreateConfigFile(['d.c'], ['a', 'b', 'allx']) |
| 337 run_analyzer3() | 337 run_analyzer3() |
| 338 EnsureContains(matched=True, build_targets={'a', 'b'}) | 338 EnsureContains(matched=True, build_targets={'a', 'b'}) |
| 339 | 339 |
| 340 _CreateConfigFile(['f.c'], ['a', 'all']) | 340 _CreateConfigFile(['f.c'], ['a', 'allx']) |
| 341 run_analyzer3() | 341 run_analyzer3() |
| 342 EnsureContains(matched=True, build_targets={'a', 'b'}) | 342 EnsureContains(matched=True, build_targets={'a', 'b'}) |
| 343 | 343 |
| 344 _CreateConfigFile(['a.c'], ['a', 'all']) | 344 _CreateConfigFile(['a.c'], ['a', 'allx']) |
| 345 run_analyzer3() | 345 run_analyzer3() |
| 346 EnsureContains(matched=True, build_targets={'a'}) | 346 EnsureContains(matched=True, build_targets={'a'}) |
| 347 | 347 |
| 348 _CreateConfigFile(['a.c'], ['all']) | 348 _CreateConfigFile(['a.c'], ['allx']) |
| 349 run_analyzer3() | 349 run_analyzer3() |
| 350 EnsureContains(matched=True, build_targets={'a'}) | 350 EnsureContains(matched=True, build_targets={'a'}) |
| 351 | 351 |
| 352 _CreateConfigFile(['d.c'], ['all']) | 352 _CreateConfigFile(['d.c'], ['allx']) |
| 353 run_analyzer3() | 353 run_analyzer3() |
| 354 EnsureContains(matched=True, build_targets={'a', 'b'}) | 354 EnsureContains(matched=True, build_targets={'a', 'b'}) |
| 355 | 355 |
| 356 # Assertions around test4.gyp. | 356 # Assertions around test4.gyp. |
| 357 _CreateConfigFile(['f.c'], ['a', 'e', 'h']) | 357 _CreateConfigFile(['f.c'], ['a', 'e', 'h']) |
| 358 run_analyzer4() | 358 run_analyzer4() |
| 359 EnsureContains(matched=True, build_targets={'e', 'f'}) | 359 EnsureContains(matched=True, build_targets={'e', 'f'}) |
| 360 | 360 |
| 361 _CreateConfigFile(['d.c'], ['a', 'e', 'h']) | 361 _CreateConfigFile(['d.c'], ['a', 'e', 'h']) |
| 362 run_analyzer4() | 362 run_analyzer4() |
| 363 EnsureContains(matched=True, build_targets={'a', 'b', 'c', 'd'}) | 363 EnsureContains(matched=True, build_targets={'a', 'b', 'c', 'd'}) |
| 364 | 364 |
| 365 _CreateConfigFile(['i.c'], ['a', 'e', 'h']) | 365 _CreateConfigFile(['i.c'], ['a', 'e', 'h']) |
| 366 run_analyzer4() | 366 run_analyzer4() |
| 367 EnsureContains(matched=True, build_targets={'h', 'i'}) | 367 EnsureContains(matched=True, build_targets={'h', 'i'}) |
| 368 | 368 |
| 369 test.pass_test() | 369 test.pass_test() |
| OLD | NEW |