// Copyright (c) 2015, 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 'package:scheduled_test/descriptor.dart' as d;
import 'package:scheduled_test/scheduled_test.dart';

import '../../io.dart';

void main() {
  useSandbox();

  test("prints the platform name when running on multiple platforms", () {
    d
        .file(
            "test.dart",
            """
import 'dart:async';

import 'package:path/path.dart' as p;
import 'package:test/test.dart';

void main() {
  test("success", () {});
}
""")
        .create();

    var test = runTest(
        ["-p", "content-shell", "-p", "vm", "-j", "1", "test.dart"],
        reporter: "compact");

    test.stdout.expect(containsInOrder(["[VM]", "[Dartium Content Shell]"]));

    test.shouldExit(0);
  }, tags: 'content-shell');
}
