blob: 712cf5ec9e3e7720c2bbc338b2626fcd0174b57c [file] [log] [blame]
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
@TestOn("vm")
import 'dart:convert';
import 'package:test_descriptor/test_descriptor.dart' as d;
import 'package:test/src/util/exit_codes.dart' as exit_codes;
import 'package:test/test.dart';
import '../../io.dart';
void main() {
test("rejects an invalid fold_stack_frames", () async {
await d
.file("dart_test.yaml", JSON.encode({"fold_stack_frames": "flup"}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(["fold_stack_frames must be a map", "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects multiple fold_stack_frames keys", () async {
await d
.file(
"dart_test.yaml",
JSON.encode({
"fold_stack_frames": {
"except": ["blah"],
"only": ["blah"]
}
}))
.create();
var test = await runTest(["test.dart"]);
expect(
test.stderr,
containsInOrder(
['Can only contain one of "only" or "except".', "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects invalid fold_stack_frames keys", () async {
await d
.file(
"dart_test.yaml",
JSON.encode({
"fold_stack_frames": {"invalid": "blah"}
}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(['Must be "only" or "except".', "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects invalid fold_stack_frames values", () async {
await d
.file(
"dart_test.yaml",
JSON.encode({
"fold_stack_frames": {"only": "blah"}
}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(["Folded packages must be strings", "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid pause_after_load", () async {
await d
.file("dart_test.yaml", JSON.encode({"pause_after_load": "flup"}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(["pause_after_load must be a boolean", "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid verbose_trace", () async {
await d
.file("dart_test.yaml", JSON.encode({"verbose_trace": "flup"}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(["verbose_trace must be a boolean", "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid chain_stack_traces", () async {
await d
.file("dart_test.yaml", JSON.encode({"chain_stack_traces": "flup"}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(["chain_stack_traces must be a boolean", "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid retry", () async {
await d.file("dart_test.yaml", JSON.encode({"retry": "flup"})).create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(["retry must be a non-negative int", "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an negative retry values", () async {
await d.file("dart_test.yaml", JSON.encode({"retry": -1})).create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(["retry must be a non-negative int", "^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid js_trace", () async {
await d.file("dart_test.yaml", JSON.encode({"js_trace": "flup"})).create();
var test = await runTest(["test.dart"]);
expect(
test.stderr, containsInOrder(["js_trace must be a boolean", "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
group("reporter", () {
test("rejects an invalid type", () async {
await d.file("dart_test.yaml", JSON.encode({"reporter": 12})).create();
var test = await runTest(["test.dart"]);
expect(test.stderr, containsInOrder(["reporter must be a string", "^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid name", () async {
await d
.file("dart_test.yaml", JSON.encode({"reporter": "non-existent"}))
.create();
var test = await runTest(["test.dart"]);
expect(
test.stderr,
containsInOrder(
['Unknown reporter "non-existent"', "^^^^^^^^^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
});
test("rejects an invalid pub serve port", () async {
await d.file("dart_test.yaml", JSON.encode({"pub_serve": "foo"})).create();
var test = await runTest(["test.dart"]);
expect(test.stderr, containsInOrder(["pub_serve must be an int", "^^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid concurrency", () async {
await d
.file("dart_test.yaml", JSON.encode({"concurrency": "foo"}))
.create();
var test = await runTest(["test.dart"]);
expect(
test.stderr, containsInOrder(["concurrency must be an int", "^^^^^"]));
await test.shouldExit(exit_codes.data);
});
group("timeout", () {
test("rejects an invalid type", () async {
await d.file("dart_test.yaml", JSON.encode({"timeout": 12})).create();
var test = await runTest(["test.dart"]);
expect(test.stderr, containsInOrder(["timeout must be a string", "^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid format", () async {
await d.file("dart_test.yaml", JSON.encode({"timeout": "12p"})).create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(["Invalid timeout: expected unit", "^^^^^"]));
await test.shouldExit(exit_codes.data);
});
});
group("names", () {
test("rejects an invalid list type", () async {
await d.file("dart_test.yaml", JSON.encode({"names": "vm"})).create();
var test = await runTest(["test.dart"]);
expect(test.stderr, containsInOrder(["names must be a list", "^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid member type", () async {
await d
.file(
"dart_test.yaml",
JSON.encode({
"names": [12]
}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr, containsInOrder(["Names must be strings", "^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid RegExp", () async {
await d
.file(
"dart_test.yaml",
JSON.encode({
"names": ["(foo"]
}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(['Invalid name: Unterminated group(foo', "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
});
group("plain_names", () {
test("rejects an invalid list type", () async {
await d
.file("dart_test.yaml", JSON.encode({"plain_names": "vm"}))
.create();
var test = await runTest(["test.dart"]);
expect(
test.stderr, containsInOrder(["plain_names must be a list", "^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid member type", () async {
await d
.file(
"dart_test.yaml",
JSON.encode({
"plain_names": [12]
}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr, containsInOrder(["Names must be strings", "^^"]));
await test.shouldExit(exit_codes.data);
});
});
group("platforms", () {
test("rejects an invalid list type", () async {
await d.file("dart_test.yaml", JSON.encode({"platforms": "vm"})).create();
var test = await runTest(["test.dart"]);
expect(
test.stderr, containsInOrder(["platforms must be a list", "^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid member type", () async {
await d
.file(
"dart_test.yaml",
JSON.encode({
"platforms": [12]
}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr, containsInOrder(["Platforms must be strings", "^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid member name", () async {
await d
.file(
"dart_test.yaml",
JSON.encode({
"platforms": ["foo"]
}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr, containsInOrder(['Unknown platform "foo"', "^^^^^"]));
await test.shouldExit(exit_codes.data);
});
});
group("paths", () {
test("rejects an invalid list type", () async {
await d.file("dart_test.yaml", JSON.encode({"paths": "test"})).create();
var test = await runTest(["test.dart"]);
expect(test.stderr, containsInOrder(["paths must be a list", "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid member type", () async {
await d
.file(
"dart_test.yaml",
JSON.encode({
"paths": [12]
}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr, containsInOrder(["Paths must be strings", "^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an absolute path", () async {
await d
.file(
"dart_test.yaml",
JSON.encode({
"paths": ["/foo"]
}))
.create();
var test = await runTest(["test.dart"]);
expect(
test.stderr, containsInOrder(['Paths must be relative.', "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid URI", () async {
await d
.file(
"dart_test.yaml",
JSON.encode({
"paths": ["[invalid]"]
}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(['Invalid path: Invalid character', "^^^^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
});
group("filename", () {
test("rejects an invalid type", () async {
await d.file("dart_test.yaml", JSON.encode({"filename": 12})).create();
var test = await runTest(["test.dart"]);
expect(
test.stderr, containsInOrder(['filename must be a string.', "^^"]));
await test.shouldExit(exit_codes.data);
});
test("rejects an invalid format", () async {
await d
.file("dart_test.yaml", JSON.encode({"filename": "{foo"}))
.create();
var test = await runTest(["test.dart"]);
expect(test.stderr,
containsInOrder(['Invalid filename: expected ",".', "^^^^^^"]));
await test.shouldExit(exit_codes.data);
});
});
}