commit | 065910f0c159212833a1ff7e45cf9b17a3a4349c | [log] [tgz] |
---|---|---|
author | Jonas Termansen <sortie@google.com> | Fri Mar 22 11:11:00 2019 +0000 |
committer | Jonas Termansen <sortie@google.com> | Fri Mar 22 11:11:00 2019 +0000 |
tree | c9dfe937b43b009790234cb55cc04ffaff3fa42a | |
parent | 81b984d73508f49b340ec4de5c6b29e2fc903355 [diff] |
[infra] Add support for pre-approvals in approved_results.json. This change adds a 'preapprovals' field to approved_results.json, which is a map from gerrit Change-Id values to a pre-approval record, containing: * 'from': What the previous approval was. * 'result': What the new approval is. * 'matches': Whether the new approval matches the expectation. * 'expected': The expectation for the new approval. * 'preapprover': Who did the preapproval. * 'preapproved_at': When the preapproval occurred. tools/approve_results.dart now produces pre-approval records instead of updating the actual approvals. This ensures pre-approvals don't take effect immediately and fixes the problem of pre-approving one kind of failure becoming another kind of failure. The script needed to query the gerrit API in order to determine the Change-Id of changelists. This query also lets approve_results know what the latest changelist and lifts the restriction that the patchset must be supplied when pre-approving. The innards of approve_results has been refactored so it better can handle selective modification of approve_results.dart. approve_results now also checks for race conditions with any other concurrent approval in interactive mode. This should catch most cases where people leave approve_results running for long. There still is a small race condition, so there is no check done in the non-interactive mode as the results would just have been downloaded anyway. The new tools/bots/apply_preapprovals.dart script will be used by the recipe. It locates the outstanding pre-approved changelists and checks the git history for whether they have landed by searching for their Change-Id. It then applies their pre-approvals in order, warning about any merge conflicts. Optionally it uploads the pre-approvals. This will work for the commit queue where the pre-approvals can be applied temporarily, and in the continuous integration where the pre-approvals become permanent approvals. This change allows empty approval records that only contain preapprovals but with no actual base approval. tools/bots/compare_results.dart has been updared to handle that case. This changelist addresses https://github.com/dart-lang/sdk/issues/36279 by ensuring only verified fields make it into new approved_results.json records and adds a temporary workaround for 14 days to remove existing needless existing fields. Change-Id: I7b3ff59756dc0d28721c6db480782b4ea983b55d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97308 Reviewed-by: William Hesse <whesse@google.com>
Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.
Visit the dartlang.org to learn more about the language, tools, getting started, and more.
Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.
If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.
There are more documents on our wiki.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.