OLD | NEW |
---|---|
1 # Copyright (c) 2009, Google Inc. All rights reserved. | 1 # Copyright (c) 2009, Google Inc. All rights reserved. |
2 # | 2 # |
3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
5 # met: | 5 # met: |
6 # | 6 # |
7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
123 | 123 |
124 | 124 |
125 def current_build_link(host): | 125 def current_build_link(host): |
126 """Returns a link to the current job if running on buildbot, or None.""" | 126 """Returns a link to the current job if running on buildbot, or None.""" |
127 master_name = host.environ.get('BUILDBOT_MASTERNAME') | 127 master_name = host.environ.get('BUILDBOT_MASTERNAME') |
128 builder_name = host.environ.get('BUILDBOT_BUILDERNAME') | 128 builder_name = host.environ.get('BUILDBOT_BUILDERNAME') |
129 build_number = host.environ.get('BUILDBOT_BUILDNUMBER') | 129 build_number = host.environ.get('BUILDBOT_BUILDNUMBER') |
130 if not (master_name and builder_name and build_number): | 130 if not (master_name and builder_name and build_number): |
131 return None | 131 return None |
132 return 'https://build.chromium.org/p/%s/builders/%s/builds/%s' % (master_nam e, builder_name, build_number) | 132 return 'https://build.chromium.org/p/%s/builders/%s/builds/%s' % (master_nam e, builder_name, build_number) |
133 | |
134 | |
135 def filter_latest_builds(builds): | |
136 """Filters Build objects to include only the latest for each builder. | |
137 | |
138 Args: | |
139 builds: A collection of Build objects. | |
140 | |
141 Returns: | |
142 A list of Build objects; only one Build object per builder name. If | |
143 there are only Builds with no build number, then one is kept; if there | |
144 are Builds with build numbers, then the one with the highest build | |
145 number is kept. Builds with the highest | |
146 """ | |
147 builder_to_latest_build = {} | |
148 for build in builds: | |
149 if build.builder_name not in builder_to_latest_build: | |
150 builder_to_latest_build[build.builder_name] = build | |
151 elif build.build_number > builder_to_latest_build[build.builder_name].bu ild_number: | |
152 builder_to_latest_build[build.builder_name] = build | |
wkorman
2017/02/17 23:24:00
Same as two lines up -- could turn these 4 lines i
qyearsley
2017/02/17 23:45:34
Yep! Good catch. Now removed this repetition.
| |
153 return sorted(builder_to_latest_build.values()) | |
OLD | NEW |