diff --git a/lib/packages_file.dart b/lib/packages_file.dart
index 3f432aa..f30781d 100644
--- a/lib/packages_file.dart
+++ b/lib/packages_file.dart
@@ -57,11 +57,11 @@
     }
     var packageUri = new String.fromCharCodes(source, separatorIndex + 1, end);
     var packageLocation = Uri.parse(packageUri);
+    packageLocation = baseLocation.resolveUri(packageLocation);
     if (!packageLocation.path.endsWith('/')) {
       packageLocation =
           packageLocation.replace(path: packageLocation.path + "/");
     }
-    packageLocation = baseLocation.resolveUri(packageLocation);
     if (result.containsKey(packageName)) {
       throw new FormatException(
           "Same package name occured twice.", source, start);
diff --git a/test/parse_test.dart b/test/parse_test.dart
index 6f830a1..8ed5c2e 100644
--- a/test/parse_test.dart
+++ b/test/parse_test.dart
@@ -50,13 +50,27 @@
         equals(base.resolve("../test/").resolve("bar/baz.dart")));
   });
 
-  test("single absolute", () {
+  test("single absolute authority", () {
     var packages = doParse(singleAbsoluteSample, base);
     expect(packages.packages.toList(), equals(["foo"]));
     expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")),
         equals(Uri.parse("http://example.com/some/where/bar/baz.dart")));
   });
 
+  test("single empty path", () {
+    var packages = doParse(singleEmptyPathSample, base);
+    expect(packages.packages.toList(), equals(["foo"]));
+    expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")),
+        equals(base.replace(path: "${base.path}/bar/baz.dart")));
+  });
+
+  test("single absolute path", () {
+    var packages = doParse(singleAbsolutePathSample, base);
+    expect(packages.packages.toList(), equals(["foo"]));
+    expect(packages.resolve(Uri.parse("package:foo/bar/baz.dart")),
+        equals(base.replace(path: "/test/bar/baz.dart")));
+  });
+
   test("multiple", () {
     var packages = doParse(multiRelativeSample, base);
     expect(
@@ -121,14 +135,16 @@
 }
 
 // Valid samples.
-var emptySample = "";
-var commentOnlySample = "# comment only\n";
-var emptyLinesSample = "\n\n\r\n";
-var singleRelativeSample = "foo:../test/\n";
-var singleRelativeSampleNoSlash = "foo:../test\n";
+var emptySample                   = "";
+var commentOnlySample             = "# comment only\n";
+var emptyLinesSample              = "\n\n\r\n";
+var singleRelativeSample          = "foo:../test/\n";
+var singleRelativeSampleNoSlash   = "foo:../test\n";
 var singleRelativeSampleNoNewline = "foo:../test/";
-var singleAbsoluteSample = "foo:http://example.com/some/where/\n";
-var multiRelativeSample = "foo:../test/\nbar:../test2/\n";
+var singleAbsoluteSample          = "foo:http://example.com/some/where/\n";
+var singleEmptyPathSample         = "foo:\n";
+var singleAbsolutePathSample      = "foo:/test/\n";
+var multiRelativeSample           = "foo:../test/\nbar:../test2/\n";
 // All valid path segment characters in an URI.
 var allValidChars =
     r"!$&'()*+,-.0123456789;="
