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

Side by Side Diff: tools/testing/dart/test_options.dart

Issue 2863253002: Tighten up a bunch of types in test.dart. (Closed)
Patch Set: Merge branch 'master' into types-for-test Created 3 years, 7 months 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
« no previous file with comments | « tools/testing/dart/test_configurations.dart ('k') | tools/testing/dart/test_progress.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test_options_parser; 5 library test_options_parser;
6 6
7 import "dart:io"; 7 import "dart:io";
8 import "drt_updater.dart"; 8 import "drt_updater.dart";
9 import "test_suite.dart"; 9 import "test_suite.dart";
10 import "path.dart"; 10 import "path.dart";
(...skipping 25 matching lines...) Expand all
36 * the Map returned from the [TestOptionParser] parse method. 36 * the Map returned from the [TestOptionParser] parse method.
37 */ 37 */
38 class _TestOptionSpecification { 38 class _TestOptionSpecification {
39 _TestOptionSpecification( 39 _TestOptionSpecification(
40 this.name, this.description, this.keys, this.values, this.defaultValue, 40 this.name, this.description, this.keys, this.values, this.defaultValue,
41 {this.type: 'string'}); 41 {this.type: 'string'});
42 String name; 42 String name;
43 String description; 43 String description;
44 List<String> keys; 44 List<String> keys;
45 List<String> values; 45 List<String> values;
46 var defaultValue; 46 Object defaultValue;
47 String type; 47 String type;
48 } 48 }
49 49
50 /** 50 /**
51 * Parser of test options. 51 * Parser of test options.
52 */ 52 */
53 class TestOptionsParser { 53 class TestOptionsParser {
54 /** 54 /**
55 * Creates a test options parser initialized with the known options. 55 * Creates a test options parser initialized with the known options.
56 */ 56 */
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 print('No value supplied for option $name'); 553 print('No value supplied for option $name');
554 return null; 554 return null;
555 } 555 }
556 value = arguments[++i]; 556 value = arguments[++i];
557 } 557 }
558 } 558 }
559 } else { 559 } else {
560 // The argument does not start with '-' or '--' and is 560 // The argument does not start with '-' or '--' and is
561 // therefore not an option. We use it as a test selection 561 // therefore not an option. We use it as a test selection
562 // pattern. 562 // pattern.
563 configuration.putIfAbsent('selectors', () => []); 563 var patterns = configuration.putIfAbsent('selectors', () => <String>[]);
564 var patterns = configuration['selectors'];
565 patterns.add(arg); 564 patterns.add(arg);
566 continue; 565 continue;
567 } 566 }
568 567
569 // Multiple uses of a flag are an error, because there is no 568 // Multiple uses of a flag are an error, because there is no
570 // naturally correct way to handle conflicting options. 569 // naturally correct way to handle conflicting options.
571 if (configuration.containsKey(spec.name)) { 570 if (configuration.containsKey(spec.name)) {
572 print('Error: test.dart disallows multiple "--${spec.name}" flags'); 571 print('Error: test.dart disallows multiple "--${spec.name}" flags');
573 exit(1); 572 exit(1);
574 } 573 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 List<Map> result = expandedConfigs.where(_isValidConfig).toList(); 610 List<Map> result = expandedConfigs.where(_isValidConfig).toList();
612 for (var config in result) { 611 for (var config in result) {
613 config['_reproducing_arguments_'] = 612 config['_reproducing_arguments_'] =
614 _constructReproducingCommandArguments(config); 613 _constructReproducingCommandArguments(config);
615 } 614 }
616 return result.isEmpty ? null : result; 615 return result.isEmpty ? null : result;
617 } 616 }
618 617
619 // For printing out reproducing command lines, we don't want to add these 618 // For printing out reproducing command lines, we don't want to add these
620 // options. 619 // options.
621 Set<String> _blacklistedOptions = new Set<String>.from([ 620 final _blacklistedOptions = [
622 'append_logs', 621 'append_logs',
623 'build_directory', 622 'build_directory',
624 'chrome', 623 'chrome',
625 'copy_coredumps', 624 'copy_coredumps',
626 'dart', 625 'dart',
627 'flutter', 626 'flutter',
628 'dartium', 627 'dartium',
629 'drt', 628 'drt',
630 'exclude_suite', 629 'exclude_suite',
631 'failure-summary', 630 'failure-summary',
632 'firefox', 631 'firefox',
633 'local_ip', 632 'local_ip',
634 'progress', 633 'progress',
635 'report', 634 'report',
636 'safari', 635 'safari',
637 'shard', 636 'shard',
638 'shards', 637 'shards',
639 'step_name', 638 'step_name',
640 'tasks', 639 'tasks',
641 'time', 640 'time',
642 'verbose', 641 'verbose',
643 'write_debug_log', 642 'write_debug_log',
644 'write_test_outcome_log', 643 'write_test_outcome_log',
645 ]); 644 ].toSet();
646 645
647 List<String> _constructReproducingCommandArguments(Map config) { 646 List<String> _constructReproducingCommandArguments(Map config) {
648 var arguments = new List<String>(); 647 var arguments = new List<String>();
649 for (var option in _options) { 648 for (var option in _options) {
650 var name = option.name; 649 var name = option.name;
651 if (!config.containsKey(name) || _blacklistedOptions.contains(name)) { 650 if (!config.containsKey(name) || _blacklistedOptions.contains(name)) {
652 continue; 651 continue;
653 } 652 }
654 var value = config[name]; 653 var value = config[name];
655 if (config[name] == option.defaultValue || 654 if (config[name] == option.defaultValue ||
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 // regular expressions to be used on the full path of a test file 805 // regular expressions to be used on the full path of a test file
807 // in that test suite. If no selectors are explicitly given use 806 // in that test suite. If no selectors are explicitly given use
808 // the default suite patterns. 807 // the default suite patterns.
809 var selectors = configuration['selectors']; 808 var selectors = configuration['selectors'];
810 if (selectors is! Map) { 809 if (selectors is! Map) {
811 if (selectors == null) { 810 if (selectors == null) {
812 if (configuration['suite_dir'] != null) { 811 if (configuration['suite_dir'] != null) {
813 var suite_path = new Path(configuration['suite_dir']); 812 var suite_path = new Path(configuration['suite_dir']);
814 selectors = [suite_path.filename]; 813 selectors = [suite_path.filename];
815 } else { 814 } else {
816 selectors = new List.from(defaultTestSelectors); 815 selectors = defaultTestSelectors.toList();
817 } 816 }
818 817
819 var exclude_suites = configuration['exclude_suite'] != null 818 var excludeSuites = configuration['exclude_suite'] != null
820 ? configuration['exclude_suite'].split(',') 819 ? configuration['exclude_suite'].split(',')
821 : []; 820 : [];
822 for (var exclude in exclude_suites) { 821 for (var exclude in excludeSuites) {
823 if (selectors.contains(exclude)) { 822 if (selectors.contains(exclude)) {
824 selectors.remove(exclude); 823 selectors.remove(exclude);
825 } else { 824 } else {
826 print("Warning: default selectors does not contain $exclude"); 825 print("Warning: default selectors does not contain $exclude");
827 } 826 }
828 } 827 }
829 } 828 }
830 Map<String, RegExp> selectorMap = new Map<String, RegExp>(); 829 var selectorMap = <String, RegExp>{};
831 for (var i = 0; i < selectors.length; i++) { 830 for (var i = 0; i < selectors.length; i++) {
832 var pattern = selectors[i]; 831 var pattern = selectors[i];
833 var suite = pattern; 832 var suite = pattern;
834 var slashLocation = pattern.indexOf('/'); 833 var slashLocation = pattern.indexOf('/');
835 if (slashLocation != -1) { 834 if (slashLocation != -1) {
836 suite = pattern.substring(0, slashLocation); 835 suite = pattern.substring(0, slashLocation);
837 pattern = pattern.substring(slashLocation + 1); 836 pattern = pattern.substring(slashLocation + 1);
838 pattern = pattern.replaceAll('*', '.*'); 837 pattern = pattern.replaceAll('*', '.*');
839 } else { 838 } else {
840 pattern = ".?"; 839 pattern = ".?";
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 return option; 1003 return option;
1005 } 1004 }
1006 } 1005 }
1007 print('Unknown test option $name'); 1006 print('Unknown test option $name');
1008 exit(1); 1007 exit(1);
1009 return null; // Unreachable. 1008 return null; // Unreachable.
1010 } 1009 }
1011 1010
1012 List<_TestOptionSpecification> _options; 1011 List<_TestOptionSpecification> _options;
1013 } 1012 }
OLDNEW
« no previous file with comments | « tools/testing/dart/test_configurations.dart ('k') | tools/testing/dart/test_progress.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698