Index: utils/tests/pub/install/path/relative_symlink_test.dart |
diff --git a/utils/tests/pub/install/path/relative_symlink_test.dart b/utils/tests/pub/install/path/relative_symlink_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9460d7d4b2a48cc50ee919f72c36d60758f50a81 |
--- /dev/null |
+++ b/utils/tests/pub/install/path/relative_symlink_test.dart |
@@ -0,0 +1,54 @@ |
+// 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/path/lib/path.dart' as path; |
+ |
+import '../../../../pub/exit_codes.dart' as exit_codes; |
+import '../../test_pub.dart'; |
+ |
+main() { |
+ // Pub uses NTFS junction points to create links in the packages directory. |
+ // These (unlike the symlinks that are supported in Vista and later) do not |
+ // support relative paths. So this test, by design, will not pass on Windows. |
+ // So just skip it. |
+ if (Platform.operatingSystem == "windows") return; |
+ |
+ initConfig(); |
+ integration("generates a symlink with a relative path if the dependency " |
+ "path was relative", () { |
+ dir("foo", [ |
+ libDir("foo"), |
+ libPubspec("foo", "0.0.1") |
+ ]).scheduleCreate(); |
+ |
+ dir(appPath, [ |
+ pubspec({ |
+ "name": "myapp", |
+ "dependencies": { |
+ "foo": {"path": "../foo"} |
+ } |
+ }) |
+ ]).scheduleCreate(); |
+ |
+ schedulePub(args: ["install"], |
+ output: new RegExp(r"Dependencies installed!$")); |
+ |
+ dir("moved").scheduleCreate(); |
+ |
+ // Move the app and package. Since they are still next to each other, it |
+ // should still be found. |
+ scheduleRename("foo", path.join("moved", "foo")); |
+ scheduleRename(appPath, path.join("moved", appPath)); |
+ |
+ dir("moved", [ |
+ dir(packagesPath, [ |
+ dir("foo", [ |
+ file("foo.dart", 'main() => "foo";') |
+ ]) |
+ ]) |
+ ]).scheduleValidate(); |
+ }); |
+} |