()
| 412 | |
| 413 | |
| 414 | def main(): |
| 415 | if not self_test(): |
| 416 | sys.stderr.write("Self-test failed") |
| 417 | return 1 |
| 418 | |
| 419 | cmdline_parser = optparse.OptionParser() |
| 420 | cmdline_parser.add_option("--show_changes") |
| 421 | cmdline_parser.add_option("--expected_errors") |
| 422 | cmdline_parser.add_option("--stamp") |
| 423 | arg_options, arg_values = cmdline_parser.parse_args() |
| 424 | |
| 425 | if len(arg_values) < 1: |
| 426 | sys.stderr.write("Usage: %s [--show_changes] <protocol-1> [, <protocol-2>...]\n" % sys.argv[0]) |
| 427 | return 1 |
| 428 | |
| 429 | domains = [] |
| 430 | baseline_domains = [] |
| 431 | version = load_domains_and_baselines(arg_values[0], domains, baseline_domains) |
| 432 | for dependency in arg_values[1:]: |
| 433 | load_domains_and_baselines(dependency, domains, baseline_domains) |
| 434 | |
| 435 | expected_errors = [] |
| 436 | if arg_options.expected_errors: |
| 437 | expected_errors_file = open(arg_options.expected_errors, "r") |
| 438 | expected_errors = json.loads(expected_errors_file.read())["errors"] |
| 439 | expected_errors_file.close() |
| 440 | |
| 441 | errors = compare_schemas(baseline_domains, domains, False) |
| 442 | unexpected_errors = [] |
| 443 | for i in range(len(errors)): |
| 444 | if errors[i] not in expected_errors: |
| 445 | unexpected_errors.append(errors[i]) |
| 446 | if len(unexpected_errors) > 0: |
| 447 | sys.stderr.write(" Compatibility checks FAILED\n") |
| 448 | for error in unexpected_errors: |
| 449 | sys.stderr.write(" %s\n" % error) |
| 450 | return 1 |
| 451 | |
| 452 | if arg_options.show_changes: |
| 453 | changes = compare_schemas(domains, baseline_domains, True) |
| 454 | if len(changes) > 0: |
| 455 | print(" Public changes since %s:" % version) |
| 456 | for change in changes: |
| 457 | print(" %s" % change) |
| 458 | |
| 459 | if arg_options.stamp: |
| 460 | with open(arg_options.stamp, 'a') as _: |
| 461 | pass |
| 462 | |
| 463 | if __name__ == '__main__': |
| 464 | sys.exit(main()) |
no test coverage detected
searching dependent graphs…