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

Side by Side Diff: tools/testing/test_case.py

Issue 8469016: Adding in-browser correctness testing via selenium. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 # Copyright (c) 2011, 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 """Common TestCase subclasses used to define a single test.""" 5 """Common TestCase subclasses used to define a single test."""
6 6
7 import os 7 import os
8 import tempfile 8 import tempfile
9 9
10 import test 10 import test
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 53
54 def GetSource(self): 54 def GetSource(self):
55 return file(self.filename).read() 55 return file(self.filename).read()
56 56
57 def Cleanup(self): 57 def Cleanup(self):
58 # TODO(ngeoffray): We run out of space on the build bots for these tests if 58 # TODO(ngeoffray): We run out of space on the build bots for these tests if
59 # the temp directories are not removed right after running the test. 59 # the temp directories are not removed right after running the test.
60 if not self.context.keep_temporary_files: 60 if not self.context.keep_temporary_files:
61 self.run_arch.Cleanup() 61 self.run_arch.Cleanup()
62 62
63 def BeforeRunHelper(self, command):
Siggi Cherem (dart-lang) 2011/11/11 00:06:02 I'm not sure why this refactoring needed?
Emily Fortuna 2011/11/11 00:58:41 Because I wanted to be able to compile tests, but
64 """Helper method to merge shared code between StandardTestCase and
65 BrowserTestCase"""
66 if command:
67 # We change the directory where dartc/frog will be launched because
68 # it is not predictable on the location of the compiled file. In
69 # case the test is a web test, we make sure the app file is not
70 # in a subdirectory.
71 cwd = None
72 if self.run_arch.is_web_test: cwd = self.run_arch.temp_dir
73 command = command[:1] + self.context.flags + command[1:]
74 test_output = self.RunCommand(command, cwd=cwd, cleanup=False)
75
76 # If errors were found, fail fast and show compile errors:
77 if test_output.output.exit_code != 0:
78 return test_output
79
80 def BeforeRun(self):
81 """Optionally compile tests."""
82 command = self.run_arch.GetCompileCommand()
83 return self.BeforeRunHelper(command)
84
63 85
64 class MultiTestCase(StandardTestCase): 86 class MultiTestCase(StandardTestCase):
65 """Multiple test cases defined within a single *Test.dart file.""" 87 """Multiple test cases defined within a single *Test.dart file."""
66 88
67 def __init__(self, context, path, filename, kind, mode, arch, component, 89 def __init__(self, context, path, filename, kind, mode, arch, component,
68 vm_options = None): 90 vm_options = None):
69 super(MultiTestCase, self).__init__(context, path, filename, mode, arch, 91 super(MultiTestCase, self).__init__(context, path, filename, mode, arch,
70 component, vm_options) 92 component, vm_options)
71 self.kind = kind 93 self.kind = kind
72 94
(...skipping 13 matching lines...) Expand all
86 if self.kind == 'compile-time error': 108 if self.kind == 'compile-time error':
87 return True 109 return True
88 if self.kind == 'runtime error': 110 if self.kind == 'runtime error':
89 return True 111 return True
90 if self.kind == 'static type error': 112 if self.kind == 'static type error':
91 return self.run_arch.HasFatalTypeErrors() 113 return self.run_arch.HasFatalTypeErrors()
92 return False 114 return False
93 115
94 116
95 class BrowserTestCase(StandardTestCase): 117 class BrowserTestCase(StandardTestCase):
96 """A test case that executes inside a browser (or DumpRenderTree).""" 118 """A test case that executes inside DumpRenderTree."""
97 119
98 def __init__(self, context, path, filename, 120 def __init__(self, context, path, filename,
99 fatal_static_type_errors, mode, arch, component, vm_options=None) : 121 fatal_static_type_errors, mode, arch, component, vm_options=None) :
100 super(BrowserTestCase, self).__init__( 122 super(BrowserTestCase, self).__init__(
101 context, path, filename, mode, arch, component, vm_options) 123 context, path, filename, mode, arch, component, vm_options)
102 self.fatal_static_type_errors = fatal_static_type_errors 124 self.fatal_static_type_errors = fatal_static_type_errors
103 125
126 def BeforeRun(self):
127 command = self.run_arch.GetCompileCommand(self.fatal_static_type_errors)
128 return self.BeforeRunHelper(command)
129
104 def Run(self): 130 def Run(self):
105 """Optionally compiles and then runs the specified test.""" 131 """Runs the specified test, with an update to the exit code to compensate
106 command = self.run_arch.GetCompileCommand(self.fatal_static_type_errors) 132 for DumpRenderTree."""
Jennifer Messerly 2011/11/10 23:57:08 as long as this looks good to Siggi it works for m
107 if command:
108 # We change the directory where dartc will be launched because
109 # it is not predictable on the location of the compiled file. In
110 # case the test is a web test, we make sure the app file is not
111 # in a subdirectory.
112 cwd = None
113 if self.run_arch.is_web_test: cwd = self.run_arch.temp_dir
114 command = command[:1] + self.context.flags + command[1:]
115 test_output = self.RunCommand(command, cwd=cwd, cleanup=False)
116
117 # If errors were found, fail fast and show compile errors:
118 if test_output.output.exit_code != 0:
119 return test_output
120
121 command = self.run_arch.GetRunCommand() 133 command = self.run_arch.GetRunCommand()
122 test_output = self.RunCommand(command) 134 test_output = self.RunCommand(command)
123 # The return value of DumpRenderedTree does not indicate test failing, but 135 # The return value of DumpRenderedTree does not indicate test failing, but
124 # the output does. 136 # the output does.
125 if self.run_arch.HasFailed(test_output.output.stdout): 137 if self.run_arch.HasFailed(test_output.output.stdout):
126 test_output.output.exit_code = 1 138 test_output.output.exit_code = 1
127 139
128 return test_output 140 return test_output
129 141
130 142
(...skipping 30 matching lines...) Expand all
161 self.filename] 173 self.filename]
162 174
163 return cmd 175 return cmd
164 176
165 def GetName(self): 177 def GetName(self):
166 return self.path[-1] 178 return self.path[-1]
167 179
168 def Cleanup(self): 180 def Cleanup(self):
169 if not self.context.keep_temporary_files: 181 if not self.context.keep_temporary_files:
170 self.run_arch.Cleanup() 182 self.run_arch.Cleanup()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698