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

Side by Side Diff: recipe_engine/third_party/expect_tests/handle_train.py

Issue 2387763003: Add initial postprocess unit test thingy. (Closed)
Patch Set: Rebase Created 4 years, 2 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
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import collections 5 import collections
6 import os 6 import os
7 import sys 7 import sys
8 import time 8 import time
9 9
10 from .type_definitions import DirSeen, Handler, MultiTest, Failure 10 from .type_definitions import DirSeen, Handler, MultiTest, Failure
11 from .serialize import WriteNewData, DiffData, NonExistant, GetCurrentData 11 from .serialize import WriteNewData, DiffData, NonExistant, GetCurrentData
12 from .handle_test import FailChecks
12 13
13 14
14 ForcedWriteAction = collections.namedtuple('ForcedWriteAction', 'test') 15 ForcedWriteAction = collections.namedtuple('ForcedWriteAction', 'test')
15 DiffWriteAction = collections.namedtuple('DiffWriteAction', 'test') 16 DiffWriteAction = collections.namedtuple('DiffWriteAction', 'test')
16 SchemaDiffWriteAction = collections.namedtuple('SchemaDiffWriteAction', 'test') 17 SchemaDiffWriteAction = collections.namedtuple('SchemaDiffWriteAction', 'test')
17 MissingWriteAction = collections.namedtuple('MissingWriteAction', 'test') 18 MissingWriteAction = collections.namedtuple('MissingWriteAction', 'test')
18 NoAction = collections.namedtuple('NoAction', 'test') 19 NoAction = collections.namedtuple('NoAction', 'test')
19 20
20 21
21 class TrainHandler(Handler): 22 class TrainHandler(Handler):
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 diff = DiffData(current, result.data) 60 diff = DiffData(current, result.data)
60 if diff is not None or not same_schema: 61 if diff is not None or not same_schema:
61 WriteNewData(test, result.data) 62 WriteNewData(test, result.data)
62 if current is NonExistant: 63 if current is NonExistant:
63 put_next_stage(MissingWriteAction(test)) 64 put_next_stage(MissingWriteAction(test))
64 elif diff: 65 elif diff:
65 put_next_stage(DiffWriteAction(test)) 66 put_next_stage(DiffWriteAction(test))
66 else: 67 else:
67 put_next_stage(SchemaDiffWriteAction(test)) 68 put_next_stage(SchemaDiffWriteAction(test))
68 else: 69 else:
69 put_next_stage(NoAction(test)) 70 failed_checks = [check for check in result.checks if not check.passed]
71 if failed_checks:
72 put_next_stage(FailChecks(test, failed_checks))
73 else:
74 put_next_stage(NoAction(test))
70 75
71 class ResultStageHandler(Handler.ResultStageHandler): 76 class ResultStageHandler(Handler.ResultStageHandler):
72 def __init__(self, opts): 77 def __init__(self, opts):
73 super(TrainHandler.ResultStageHandler, self).__init__(opts) 78 super(TrainHandler.ResultStageHandler, self).__init__(opts)
74 self.dirs_seen = set() 79 self.dirs_seen = set()
75 self.files_expected = collections.defaultdict(set) 80 self.files_expected = collections.defaultdict(set)
76 self.start = time.time() 81 self.start = time.time()
77 self.num_tests = 0 82 self.num_tests = 0
78 self.verbose_actions = [] 83 self.verbose_actions = []
79 self.normal_actions = [] 84 self.normal_actions = []
80 85
81 def _record_expected(self, test, indicator): 86 def _record_expected(self, test, indicator):
82 self.num_tests += 1 87 self.num_tests += 1
83 if not self.opts.quiet: 88 if not self.opts.quiet:
84 sys.stdout.write(indicator) 89 sys.stdout.write(indicator)
85 sys.stdout.flush() 90 sys.stdout.flush()
86 if test.expect_path() is not None: 91 if test.expect_path() is not None:
87 head, tail = os.path.split(test.expect_path()) 92 head, tail = os.path.split(test.expect_path())
88 self.files_expected[head].add(tail) 93 self.files_expected[head].add(tail)
89 94
90 def _record_write(self, test, indicator, why): 95 def _record_write(self, test, indicator, why):
91 self._record_expected(test, indicator) 96 self._record_expected(test, indicator)
92 if test.expect_path() is not None: 97 if test.expect_path() is not None:
93 name = test.expect_path() if self.opts.verbose else test.name 98 name = test.expect_path() if self.opts.verbose else test.name
94 self.normal_actions.append('Wrote %s: %s' % (name, why)) 99 self.normal_actions.append('Wrote %s: %s' % (name, why))
95 100
96 def handle_DirSeen(self, dirseen): 101 def handle_DirSeen(self, dirseen):
97 self.dirs_seen.add(dirseen.dir) 102 self.dirs_seen.add(dirseen.dir)
98 103
104 def handle_FailChecks(self, fc):
105 self._record_expected(fc.test, 'C')
106 self.normal_actions.append(
107 ('%r failed checks!\n' % fc.test.name) + fc.format(2))
108 return Failure()
109
99 def handle_NoAction(self, result): 110 def handle_NoAction(self, result):
100 self._record_expected(result.test, '.') 111 self._record_expected(result.test, '.')
101 self.verbose_actions.append('%s did not change' % result.test.name) 112 self.verbose_actions.append('%s did not change' % result.test.name)
102 113
103 def handle_ForcedWriteAction(self, result): 114 def handle_ForcedWriteAction(self, result):
104 self._record_write(result.test, 'F', 'forced') 115 self._record_write(result.test, 'F', 'forced')
105 116
106 def handle_DiffWriteAction(self, result): 117 def handle_DiffWriteAction(self, result):
107 self._record_write(result.test, 'D', 'diff') 118 self._record_write(result.test, 'D', 'diff')
108 119
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 if self.normal_actions: 151 if self.normal_actions:
141 print '\n'.join(self.normal_actions) 152 print '\n'.join(self.normal_actions)
142 if self.opts.verbose: 153 if self.opts.verbose:
143 if self.verbose_actions: 154 if self.verbose_actions:
144 print '\n'.join(self.verbose_actions) 155 print '\n'.join(self.verbose_actions)
145 156
146 trained = sum(len(x) for x in self.files_expected.itervalues()) 157 trained = sum(len(x) for x in self.files_expected.itervalues())
147 print '-' * 70 158 print '-' * 70
148 print 'Trained %d tests in %0.3fs (ran %d tests)' % ( 159 print 'Trained %d tests in %0.3fs (ran %d tests)' % (
149 trained, time.time() - self.start, self.num_tests) 160 trained, time.time() - self.start, self.num_tests)
OLDNEW
« no previous file with comments | « recipe_engine/third_party/expect_tests/handle_test.py ('k') | recipe_engine/third_party/expect_tests/type_definitions.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698