// Copyright (c) 2014, 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.

// @dart = 2.9

// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups

/// Tests that Isolate.spanUri completes with an error when the given URI
/// doesn't resolve to an existing resource.
library test.isolate.spawn_uri_missing_test;

import 'dart:isolate';

import 'dart:async';

import 'package:async_helper/async_helper.dart';

const UNEXPECTED_MESSAGE = 'Created isolate from missing file.';

Future doTest() {
  return Isolate
      .spawnUri(Uri.base.resolve('no_such_file'), [], null)
      .then((Isolate isolate) {
    throw UNEXPECTED_MESSAGE;
  }).catchError((error) {
    if (error == UNEXPECTED_MESSAGE) throw error;
    print('An error was thrown as expected');
    return null;
  });
}

main() {
  asyncTest(doTest);
}
