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

Unified Diff: test/runner/tag_test.dart

Issue 1490973003: Clean up the warning for unknown tags. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Code review changes Created 5 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/runner/load_suite.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/runner/tag_test.dart
diff --git a/test/runner/tag_test.dart b/test/runner/tag_test.dart
index be227a9ef21827c9d2f397c5afba46d1899b2403..6a2c297d8e30b8a95f498e860ada6d4a8d320f02 100644
--- a/test/runner/tag_test.dart
+++ b/test/runner/tag_test.dart
@@ -5,7 +5,6 @@
@TestOn("vm")
import 'package:scheduled_test/descriptor.dart' as d;
-import 'package:scheduled_test/scheduled_process.dart';
import 'package:scheduled_test/scheduled_stream.dart';
import 'package:scheduled_test/scheduled_test.dart';
@@ -30,56 +29,42 @@ void main() {
group("--tags", () {
test("runs all tests when no tags are specified", () {
var test = runTest(["test.dart"]);
+ test.stdout.expect(tagWarnings(['a', 'b', 'c']));
test.stdout.expect(consumeThrough(contains(": no tags")));
test.stdout.expect(consumeThrough(contains(": a")));
test.stdout.expect(consumeThrough(contains(": b")));
test.stdout.expect(consumeThrough(contains(": bc")));
test.stdout.expect(consumeThrough(contains("+4: All tests passed!")));
- expectTagWarnings(test, [
- ['a', 'a'],
- ['b', 'b'],
- ['b and c', 'bc']
- ]);
test.shouldExit(0);
});
test("runs a test with only a specified tag", () {
var test = runTest(["--tags=a", "test.dart"]);
+ test.stdout.expect(tagWarnings(['b', 'c']));
test.stdout.expect(consumeThrough(contains(": a")));
test.stdout.expect(consumeThrough(contains("+1: All tests passed!")));
- expectTagWarnings(test, [
- ['b', 'b'],
- ['b and c', 'bc']
- ]);
test.shouldExit(0);
});
test("runs a test with a specified tag among others", () {
var test = runTest(["--tags=c", "test.dart"]);
+ test.stdout.expect(tagWarnings(['a', 'b']));
test.stdout.expect(consumeThrough(contains(": bc")));
test.stdout.expect(consumeThrough(contains("+1: All tests passed!")));
- expectTagWarnings(test, [
- ['a', 'a'],
- ['b', 'b'],
- ['b', 'bc']
- ]);
test.shouldExit(0);
});
test("with multiple tags, runs only tests matching all of them", () {
var test = runTest(["--tags=b,c", "test.dart"]);
+ test.stdout.expect(tagWarnings(['a']));
test.stdout.expect(consumeThrough(contains(": bc")));
test.stdout.expect(consumeThrough(contains("+1: All tests passed!")));
- expectTagWarnings(test, [
- ['a', 'a']
- ]);
test.shouldExit(0);
});
test("prints no warnings when all tags are specified", () {
var test = runTest(["--tags=a,b,c", "test.dart"]);
test.stdout.expect(consumeThrough(contains("No tests ran.")));
- expectTagWarnings(test, []);
test.shouldExit(0);
});
});
@@ -87,40 +72,30 @@ void main() {
group("--exclude-tags", () {
test("dosn't run a test with only an excluded tag", () {
var test = runTest(["--exclude-tags=a", "test.dart"]);
+ test.stdout.expect(tagWarnings(['b', 'c']));
test.stdout.expect(consumeThrough(contains(": no tags")));
test.stdout.expect(consumeThrough(contains(": b")));
test.stdout.expect(consumeThrough(contains(": bc")));
test.stdout.expect(consumeThrough(contains("+3: All tests passed!")));
- expectTagWarnings(test, [
- ['b', 'b'],
- ['b and c', 'bc'],
- ]);
test.shouldExit(0);
});
test("doesn't run a test with an exluded tag among others", () {
var test = runTest(["--exclude-tags=c", "test.dart"]);
+ test.stdout.expect(tagWarnings(['a', 'b']));
test.stdout.expect(consumeThrough(contains(": no tags")));
test.stdout.expect(consumeThrough(contains(": a")));
test.stdout.expect(consumeThrough(contains(": b")));
test.stdout.expect(consumeThrough(contains("+3: All tests passed!")));
- expectTagWarnings(test, [
- ['a', 'a'],
- ['b', 'b'],
- ['b', 'bc'],
- ]);
test.shouldExit(0);
});
test("allows unused tags", () {
var test = runTest(["--exclude-tags=b,z", "test.dart"]);
+ test.stdout.expect(tagWarnings(['a', 'c']));
test.stdout.expect(consumeThrough(contains(": no tags")));
test.stdout.expect(consumeThrough(contains(": a")));
test.stdout.expect(consumeThrough(contains("+2: All tests passed!")));
- expectTagWarnings(test, [
- ['a', 'a'],
- ['c', 'bc'],
- ]);
test.shouldExit(0);
});
@@ -128,7 +103,6 @@ void main() {
var test = runTest(["--exclude-tags=a,b,c", "test.dart"]);
test.stdout.expect(consumeThrough(contains(": no tags")));
test.stdout.expect(consumeThrough(contains("+1: All tests passed!")));
- expectTagWarnings(test, []);
test.shouldExit(0);
});
});
@@ -193,19 +167,123 @@ void main() {
test.stdout.expect(consumeThrough(contains("No tests ran")));
test.shouldExit(0);
});
+
+ group("warning formatting", () {
+ test("for multiple tags", () {
+ d.file("test.dart", """
+ import 'package:test/test.dart';
+
+ void main() {
+ test("foo", () {}, tags: ["a", "b"]);
+ }
+ """).create();
+
+ var test = runTest(["test.dart"]);
+ test.stdout.expect(consumeThrough(lines(
+ 'Warning: Tags were used that weren\'t specified on the command '
+ 'line.\n'
+ ' a was used in the test "foo"\n'
+ ' b was used in the test "foo"')));
+ test.shouldExit(0);
+ });
+
+ test("for multiple tests", () {
+ d.file("test.dart", """
+ import 'package:test/test.dart';
+
+ void main() {
+ test("foo", () {}, tags: "a");
+ test("bar", () {}, tags: "a");
+ }
+ """).create();
+
+ var test = runTest(["test.dart"]);
+ test.stdout.expect(consumeThrough(lines(
+ 'Warning: A tag was used that wasn\'t specified on the command '
+ 'line.\n'
+ ' a was used in:\n'
+ ' the test "foo"\n'
+ ' the test "bar"')));
+ test.shouldExit(0);
+ });
+
+ test("for groups", () {
+ d.file("test.dart", """
+ import 'package:test/test.dart';
+
+ void main() {
+ group("group", () {
+ test("foo", () {});
+ test("bar", () {});
+ }, tags: "a");
+ }
+ """).create();
+
+ var test = runTest(["test.dart"]);
+ test.stdout.expect(consumeThrough(lines(
+ 'Warning: A tag was used that wasn\'t specified on the command '
+ 'line.\n'
+ ' a was used in the group "group"')));
+ test.shouldExit(0);
+ });
+
+ test("for suites", () {
+ d.file("test.dart", """
+ @Tags(const ["a"])
+ import 'package:test/test.dart';
+
+ void main() {
+ test("foo", () {});
+ test("bar", () {});
+ }
+ """).create();
+
+ var test = runTest(["test.dart"]);
+ test.stdout.expect(consumeThrough(lines(
+ 'Warning: A tag was used that wasn\'t specified on the command '
+ 'line.\n'
+ ' a was used in the suite itself')));
+ test.shouldExit(0);
+ });
+
+ test("doesn't double-print a tag warning", () {
+ d.file("test.dart", """
+ import 'package:test/test.dart';
+
+ void main() {
+ test("foo", () {}, tags: "a");
+ }
+ """).create();
+
+ var test = runTest(["-p", "vm,content-shell", "test.dart"]);
+ test.stdout.expect(consumeThrough(lines(
+ 'Warning: A tag was used that wasn\'t specified on the command '
+ 'line.\n'
+ ' a was used in the test "foo"')));
+ test.stdout.expect(never(startsWith("Warning:")));
+ test.shouldExit(0);
+ });
+ });
}
-/// Asserts that [test] emits [warnings] in order.
-///
-/// Each element of [warnings] should be a pair whose first element is the
-/// unrecognized tags and whose second is the name of the test in which they
-/// were detected.
-expectTagWarnings(ScheduledProcess test, List<List<String>> warnings) {
- for (var warning in warnings) {
- test.stderr.expect(consumeThrough(allOf([
- startsWith("Warning: Unknown tag"),
- endsWith('${warning.first} in test "${warning.last}".')
- ])));
+/// Returns a [StreamMatcher] that asserts that a test emits warnings for [tags]
+/// in order.
+StreamMatcher tagWarnings(List<String> tags) => inOrder(() sync* {
+ yield consumeThrough(
+ "Warning: ${tags.length == 1 ? 'A tag was' : 'Tags were'} used that "
+ "${tags.length == 1 ? "wasn't" : "weren't"} specified on the command "
+ "line.");
+
+ for (var tag in tags) {
+ yield consumeWhile(isNot(contains(" was used in")));
+ yield consumeThrough(startsWith(" $tag was used in"));
}
- test.stderr.expect(never(startsWith("Warning:")));
-}
+
+ // Consume until the end of the warning block, and assert that it has no
+ // further tags than the ones we specified.
+ yield consumeWhile(isNot(anyOf([contains(" was used in"), isEmpty])));
+ yield isEmpty;
+}());
+
+/// Returns a [StreamMatcher] that matches the lines of [string] in order.
+StreamMatcher lines(String string) => inOrder(string.split("\n"));
« no previous file with comments | « lib/src/runner/load_suite.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698