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

Side by Side Diff: test/runner_test.dart

Issue 979523002: Move more files around. (Closed) Base URL: git@github.com:dart-lang/unittest@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « test/runner/runner_test.dart ('k') | test/util/multi_channel_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
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.
4
5 import 'dart:io';
6
7 import 'package:path/path.dart' as p;
8 import 'package:unittest/src/util/exit_codes.dart' as exit_codes;
9 import 'package:unittest/unittest.dart';
10
11 import 'io.dart';
12
13 String _sandbox;
14
15 final _success = """
16 import 'dart:async';
17
18 import 'package:unittest/unittest.dart';
19
20 void main() {
21 test("success", () {});
22 }
23 """;
24
25 final _failure = """
26 import 'dart:async';
27
28 import 'package:unittest/unittest.dart';
29
30 void main() {
31 test("failure", () => throw new TestFailure("oh no"));
32 }
33 """;
34
35 final _usage = """
36 Usage: pub run unittest:unittest [files or directories...]
37
38 -h, --help Shows this usage information.
39 --[no-]color Whether to use terminal colors.
40 (auto-detected by default)
41 """;
42
43 void main() {
44 setUp(() {
45 _sandbox = Directory.systemTemp.createTempSync('unittest_').path;
46 });
47
48 tearDown(() {
49 new Directory(_sandbox).deleteSync(recursive: true);
50 });
51
52 test("prints help information", () {
53 var result = _runUnittest(["--help"]);
54 expect(result.stdout, equals("""
55 Runs tests in this package.
56
57 $_usage"""));
58 expect(result.exitCode, equals(exit_codes.success));
59 });
60
61 group("fails gracefully if", () {
62 test("an invalid option is passed", () {
63 var result = _runUnittest(["--asdf"]);
64 expect(result.stderr, equals("""
65 Could not find an option named "asdf".
66
67 $_usage"""));
68 expect(result.exitCode, equals(exit_codes.usage));
69 });
70
71 test("a non-existent file is passed", () {
72 var result = _runUnittest(["file"]);
73 expect(result.stderr, equals('Failed to load "file": Does not exist.\n'));
74 expect(result.exitCode, equals(exit_codes.data));
75 });
76
77 test("the default directory doesn't exist", () {
78 var result = _runUnittest([]);
79 expect(result.stderr, equals(
80 'Failed to load "test": No test files were passed and the default '
81 'directory doesn\'t exist.\n'));
82 expect(result.exitCode, equals(exit_codes.data));
83 });
84
85 test("a test file fails to load", () {
86 var testPath = p.join(_sandbox, "test.dart");
87 new File(testPath).writeAsStringSync("invalid Dart file");
88 var result = _runUnittest(["test.dart"]);
89
90 expect(result.stderr, equals(
91 'Failed to load "${p.relative(testPath, from: _sandbox)}":\n'
92 "line 1 pos 1: unexpected token 'invalid'\n"
93 "invalid Dart file\n"
94 "^\n"));
95 expect(result.exitCode, equals(exit_codes.data));
96 });
97
98 test("a test file throws", () {
99 var testPath = p.join(_sandbox, "test.dart");
100 new File(testPath).writeAsStringSync("void main() => throw 'oh no';");
101
102 var result = _runUnittest(["test.dart"]);
103 expect(result.stderr, startsWith(
104 'Failed to load "${p.relative(testPath, from: _sandbox)}": oh no\n'));
105 expect(result.exitCode, equals(exit_codes.data));
106 });
107
108 test("a test file doesn't have a main defined", () {
109 var testPath = p.join(_sandbox, "test.dart");
110 new File(testPath).writeAsStringSync("void foo() {}");
111
112 var result = _runUnittest(["test.dart"]);
113 expect(result.stderr, startsWith(
114 'Failed to load "${p.relative(testPath, from: _sandbox)}": No '
115 'top-level main() function defined.\n'));
116 expect(result.exitCode, equals(exit_codes.data));
117 });
118
119 test("a test file has a non-function main", () {
120 var testPath = p.join(_sandbox, "test.dart");
121 new File(testPath).writeAsStringSync("int main;");
122
123 var result = _runUnittest(["test.dart"]);
124 expect(result.stderr, startsWith(
125 'Failed to load "${p.relative(testPath, from: _sandbox)}": Top-level '
126 'main getter is not a function.\n'));
127 expect(result.exitCode, equals(exit_codes.data));
128 });
129
130 test("a test file has a main with arguments", () {
131 var testPath = p.join(_sandbox, "test.dart");
132 new File(testPath).writeAsStringSync("void main(arg) {}");
133
134 var result = _runUnittest(["test.dart"]);
135 expect(result.stderr, startsWith(
136 'Failed to load "${p.relative(testPath, from: _sandbox)}": Top-level '
137 'main() function takes arguments.\n'));
138 expect(result.exitCode, equals(exit_codes.data));
139 });
140
141 // TODO(nweiz): test what happens when a test file is unreadable once issue
142 // 15078 is fixed.
143 });
144
145 group("runs successful tests", () {
146 test("defined in a single file", () {
147 new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_success);
148 var result = _runUnittest(["test.dart"]);
149 expect(result.exitCode, equals(0));
150 });
151
152 test("defined in a directory", () {
153 for (var i = 0; i < 3; i++) {
154 new File(p.join(_sandbox, "${i}_test.dart"))
155 .writeAsStringSync(_success);
156 }
157
158 var result = _runUnittest(["."]);
159 expect(result.exitCode, equals(0));
160 });
161
162 test("defaulting to the test directory", () {
163 new Directory(p.join(_sandbox, "test")).createSync();
164 for (var i = 0; i < 3; i++) {
165 new File(p.join(_sandbox, "test", "${i}_test.dart"))
166 .writeAsStringSync(_success);
167 }
168
169 var result = _runUnittest([]);
170 expect(result.exitCode, equals(0));
171 });
172
173 test("directly", () {
174 new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_success);
175 var result = _runDart([
176 "--package-root=${p.join(packageDir, 'packages')}",
177 "test.dart"
178 ]);
179 expect(result.stdout, contains("All tests passed!"));
180 });
181 });
182
183 group("runs failing tests", () {
184 test("defined in a single file", () {
185 new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_failure);
186 var result = _runUnittest(["test.dart"]);
187 expect(result.exitCode, equals(1));
188 });
189
190 test("defined in a directory", () {
191 for (var i = 0; i < 3; i++) {
192 new File(p.join(_sandbox, "${i}_test.dart"))
193 .writeAsStringSync(_failure);
194 }
195
196 var result = _runUnittest(["."]);
197 expect(result.exitCode, equals(1));
198 });
199
200 test("defaulting to the test directory", () {
201 new Directory(p.join(_sandbox, "test")).createSync();
202 for (var i = 0; i < 3; i++) {
203 new File(p.join(_sandbox, "test", "${i}_test.dart"))
204 .writeAsStringSync(_failure);
205 }
206
207 var result = _runUnittest([]);
208 expect(result.exitCode, equals(1));
209 });
210
211 test("directly", () {
212 new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_failure);
213 var result = _runDart([
214 "--package-root=${p.join(packageDir, 'packages')}",
215 "test.dart"
216 ]);
217 expect(result.stdout, contains("Some tests failed."));
218 });
219 });
220
221 group("flags", () {
222 test("with the --color flag, uses colors", () {
223 new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_failure);
224 var result = _runUnittest(["--color", "test.dart"]);
225 // This is the color code for red.
226 expect(result.stdout, contains("\u001b[31m"));
227 });
228 });
229 }
230
231 ProcessResult _runUnittest(List<String> args) =>
232 runUnittest(args, workingDirectory: _sandbox);
233
234 ProcessResult _runDart(List<String> args) =>
235 runDart(args, workingDirectory: _sandbox);
OLDNEW
« no previous file with comments | « test/runner/runner_test.dart ('k') | test/util/multi_channel_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698