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

import 'dart:io';

import '../../../../../pkg/pathos/lib/path.dart' as path;

import '../../../../pub/exit_codes.dart' as exit_codes;
import '../../test_pub.dart';

main() {
  initConfig();
  integration('path dependency to non-existent directory', () {
    var badPath = path.join(sandboxDir, "bad_path");

    dir(appPath, [
      pubspec({
        "name": "myapp",
        "dependencies": {
          "foo": {"path": badPath}
        }
      })
    ]).scheduleCreate();

    // TODO(rnystrom): The "\" in a Windows path gets treated like a regex
    // character, so hack escape. A better fix is to use a literal string
    // instead of a RegExp to validate, but that requires us to move the
    // stack traces out of the stderr when we invoke pub. See also: #4706.
    var escapePath = badPath.replaceAll(r"\", r"\\");

    schedulePub(args: ['install'],
        error:
            new RegExp("Could not find package 'foo' at '$escapePath'."),
        exitCode: exit_codes.DATA);
  });
}