06f75fe5cd
This is a pretty massive change but my hope is it will make test.dart easier to maintain going forward. Instead of passing around a stringly-typed Map<String, dynamic> all throughout the program, we parse the options and then create a Configuration object that has typed getters for all of the various bits of configuration data. This is a little tedious because it means declaring a new option requires also declaring a corresponding field in the Configuration class and passing it through the constructor. I think it's worth it. Also, enum-like configuration properties like architecture and runtime now have their own classes as well. Moved a bunch of stuff from TestUtil into those classes now that there is an object to hang those methods off of. In the process, I found a few typos in string literals where the code wasn't correctly looking up a configuration property. Added more sanity checking and validation to status file parsing. You will get an error at parse time if you try to refer to a variable that isn't in the whitelist of known variables. Also, you'll get an error if you try to compare a variable to a value that it isn't expected to have. Many other small-scale cleanups. Aside from the status file validation, this should behave mostly the same as current test.dart except that tests may be enqueued in a slightly different order. The rewritten code for expanding configurations iterates through the architecture, runtime, etc. options in a slightly different order. R=whesse@google.com Review-Url: https://codereview.chromium.org/2901923003 .