diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
index 4aac924..49e5be4 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
@@ -385,7 +385,7 @@
   @Test
   public void testChangedExternalFile() throws Exception {
     tester.addFile("a/BUILD",
-        "load('/a/b', 'b')",
+        "load('//a:b.bzl', 'b')",
         "b()");
 
     tester.addFile("/b.bzl",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkSplitTransitionTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkSplitTransitionTest.java
index 738356f..e2cfd36 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkSplitTransitionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkSplitTransitionTest.java
@@ -54,7 +54,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/my_rule', 'my_rule')",
+        "load('//test/skylark:my_rule.bzl', 'my_rule')",
         "my_rule(name = 'test', deps = [':main1', ':main2'], dep = ':main1')",
         "cc_binary(name = 'main1', srcs = ['main1.c'])",
         "cc_binary(name = 'main2', srcs = ['main2.c'])");
diff --git a/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java b/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
index 96b352e..ab8471f 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/apple/SwiftConfigurationTest.java
@@ -47,7 +47,7 @@
     scratch.file(
         "examples/swift_skylark/BUILD",
         "package(default_visibility = ['//visibility:public'])",
-        "load('/examples/rule/apple_rules', 'swift_binary')",
+        "load('//examples/rule:apple_rules.bzl', 'swift_binary')",
         "swift_binary(",
         "   name='my_target',",
         ")");
diff --git a/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java b/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java
index ce8a890..060c01a 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/apple/XcodeVersionTest.java
@@ -56,7 +56,7 @@
     scratch.file(
         "examples/apple_skylark/BUILD",
         "package(default_visibility = ['//visibility:public'])",
-        "load('/examples/rule/apple_rules', 'my_rule')",
+        "load('//examples/rule:apple_rules.bzl', 'my_rule')",
         "my_rule(",
         "    name = 'my_target',",
         "    xcode = ':my_xcode',",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/IosDeviceTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/IosDeviceTest.java
index 6fed27e..02e58ba 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/IosDeviceTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/IosDeviceTest.java
@@ -128,7 +128,7 @@
     scratch.file(
         "examples/apple_skylark/BUILD",
         "package(default_visibility = ['//visibility:public'])",
-        "load('/examples/rule/apple_rules', 'my_rule')",
+        "load('//examples/rule:apple_rules.bzl', 'my_rule')",
         "my_rule(",
         "    name = 'my_target',",
         "    ios_device = ':my_device',",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java b/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java
index 7d3fa72..d2bfd5b 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/test/SkylarkTestingModuleTest.java
@@ -43,7 +43,7 @@
     scratch.file(
         "examples/apple_skylark/BUILD",
         "package(default_visibility = ['//visibility:public'])",
-        "load('/examples/rule/apple_rules', 'my_rule')",
+        "load('//examples/rule:apple_rules.bzl', 'my_rule')",
         "my_rule(",
         "    name = 'my_target',",
         ")");
@@ -68,7 +68,7 @@
     scratch.file(
         "examples/apple_skylark/BUILD",
         "package(default_visibility = ['//visibility:public'])",
-        "load('/examples/rule/apple_rules', 'my_rule')",
+        "load('//examples/rule:apple_rules.bzl', 'my_rule')",
         "my_rule(",
         "    name = 'my_target',",
         ")");
@@ -96,7 +96,7 @@
     scratch.file(
         "examples/apple_skylark/BUILD",
         "package(default_visibility = ['//visibility:public'])",
-        "load('/examples/rule/apple_rules', 'my_rule_test')",
+        "load('//examples/rule:apple_rules.bzl', 'my_rule_test')",
         "my_rule_test(",
         "    name = 'my_target',",
         ")");
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java
index a8c2316..8773d54 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageFunctionTest.java
@@ -428,10 +428,10 @@
   @Test
   public void testTransitiveSkylarkDepsStoredInPackage() throws Exception {
     scratch.file("foo/BUILD",
-        "load('/bar/ext', 'a')");
+        "load('//bar:ext.bzl', 'a')");
     scratch.file("bar/BUILD");
     scratch.file("bar/ext.bzl",
-        "load('/baz/ext', 'b')",
+        "load('//baz:ext.bzl', 'b')",
         "a = b");
     scratch.file("baz/BUILD");
     scratch.file("baz/ext.bzl",
@@ -448,7 +448,7 @@
         Label.parseAbsolute("//bar:ext.bzl"), Label.parseAbsolute("//baz:ext.bzl"));
 
     scratch.overwriteFile("bar/ext.bzl",
-        "load('/qux/ext', 'c')",
+        "load('//qux:ext.bzl', 'c')",
         "a = c");
     getSkyframeExecutor().invalidateFilesUnderPathForTesting(
         reporter,
@@ -464,7 +464,7 @@
   public void testNonExistingSkylarkExtension() throws Exception {
     reporter.removeHandler(failFastHandler);
     scratch.file("test/skylark/BUILD",
-        "load('/test/skylark/bad_extension', 'some_symbol')",
+        "load('//test/skylark:bad_extension.bzl', 'some_symbol')",
         "genrule(name = gr,",
         "    outs = ['out.txt'],",
         "    cmd = 'echo hello >@')");
@@ -486,10 +486,10 @@
   public void testNonExistingSkylarkExtensionFromExtension() throws Exception {
     reporter.removeHandler(failFastHandler);
     scratch.file("test/skylark/extension.bzl",
-        "load('/test/skylark/bad_extension', 'some_symbol')",
+        "load('//test/skylark:bad_extension.bzl', 'some_symbol')",
         "a = 'a'");
     scratch.file("test/skylark/BUILD",
-        "load('/test/skylark/extension', 'a')",
+        "load('//test/skylark:extension.bzl', 'a')",
         "genrule(name = gr,",
         "    outs = ['out.txt'],",
         "    cmd = 'echo hello >@')");
@@ -512,7 +512,7 @@
     Path extensionFilePath = scratch.resolve("/workspace/test/skylark/extension.bzl");
     FileSystemUtils.ensureSymbolicLink(extensionFilePath, PathFragment.create("extension.bzl"));
     scratch.file("test/skylark/BUILD",
-        "load('/test/skylark/extension', 'a')",
+        "load('//test/skylark:extension.bzl', 'a')",
         "genrule(name = gr,",
         "    outs = ['out.txt'],",
         "    cmd = 'echo hello >@')");
@@ -546,7 +546,7 @@
 
   @Test
   public void testLoadRelativePath() throws Exception {
-    scratch.file("pkg/BUILD", "load('ext', 'a')");
+    scratch.file("pkg/BUILD", "load(':ext.bzl', 'a')");
     scratch.file("pkg/ext.bzl", "a = 1");
     validPackage(PackageValue.key(PackageIdentifier.parse("@//pkg")));
   }
@@ -555,7 +555,7 @@
   public void testLoadAbsolutePath() throws Exception {
     scratch.file("pkg1/BUILD");
     scratch.file("pkg2/BUILD",
-        "load('/pkg1/ext', 'a')");
+        "load('//pkg1:ext.bzl', 'a')");
     scratch.file("pkg1/ext.bzl", "a = 1");
     validPackage(PackageValue.key(PackageIdentifier.parse("@//pkg2")));
   }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java
index ee996e0..bbf3489 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkylarkFileContentHashTests.java
@@ -55,22 +55,22 @@
 
     scratch.file(
         "foo/ext.bzl",
-        "load('/helper/ext', 'rule_impl')",
+        "load('//helper:ext.bzl', 'rule_impl')",
         "",
         "foo1 = rule(implementation = rule_impl)",
         "foo2 = rule(implementation = rule_impl)");
 
     scratch.file(
         "bar/ext.bzl",
-        "load('/helper/ext', 'rule_impl')",
+        "load('//helper:ext.bzl', 'rule_impl')",
         "",
         "bar1 = rule(implementation = rule_impl)");
 
     scratch.file(
         "pkg/BUILD",
-        "load('/foo/ext', 'foo1')",
-        "load('/foo/ext', 'foo2')",
-        "load('/bar/ext', 'bar1')",
+        "load('//foo:ext.bzl', 'foo1')",
+        "load('//foo:ext.bzl', 'foo2')",
+        "load('//bar:ext.bzl', 'bar1')",
         "",
         "foo1(name = 'foo1')",
         "foo2(name = 'foo2')",
@@ -87,7 +87,7 @@
     String bar1 = getHash("pkg", "bar1");
     scratch.overwriteFile(
         "bar/ext.bzl",
-        "load('/helper/ext', 'rule_impl')",
+        "load('//helper:ext.bzl', 'rule_impl')",
         "",
         "bar1 = rule(implementation = rule_impl)");
     invalidatePackages();
@@ -109,7 +109,7 @@
     String bar1 = getHash("pkg", "bar1");
     scratch.overwriteFile(
         "bar/ext.bzl",
-        "load('/helper/ext', 'rule_impl')",
+        "load('//helper:ext.bzl', 'rule_impl')",
         "# Some comments to change file hash",
         "",
         "bar1 = rule(implementation = rule_impl)");
@@ -139,7 +139,7 @@
     String foo2 = getHash("pkg", "foo2");
     scratch.overwriteFile(
         "bar/ext.bzl",
-        "load('/helper/ext', 'rule_impl')",
+        "load('//helper:ext.bzl', 'rule_impl')",
         "# Some comments to change file hash",
         "",
         "bar1 = rule(implementation = rule_impl)");
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
index df2ba60..4c24f56 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
@@ -293,7 +293,7 @@
         ")");
     scratch.file(
         "test/BUILD",
-        "load('/test/aspect', 'my_rule')",
+        "load('//test:aspect.bzl', 'my_rule')",
         "cc_library(",
         "     name = 'xxx',",
         ")",
@@ -338,7 +338,7 @@
     SkylarkKey providerKey = new SkylarkKey(Label.parseAbsoluteUnchecked("//test:aspect.bzl"), "p");
     scratch.file(
         "test/BUILD",
-        "load('/test/aspect', 'my_rule')",
+        "load('//test:aspect.bzl', 'my_rule')",
         "my_rule(name = 'xxx',)",
         "my_rule(name = 'yyy', dep = ':xxx')");
     AnalysisResult analysisResult = update("//test:yyy");
@@ -524,7 +524,7 @@
 
     scratch.file(
         "test/BUILD",
-        "load('/test/aspect', 'my_rule')",
+        "load('//test:aspect.bzl', 'my_rule')",
         "java_library(",
         "     name = 'yyy',",
         ")",
@@ -649,7 +649,7 @@
 
     scratch.file(
         "test/BUILD",
-        "load('/test/aspect', 'my_rule')",
+        "load('//test:aspect.bzl', 'my_rule')",
         "java_library(",
         "     name = 'yyy',",
         ")",
@@ -687,7 +687,7 @@
 
     scratch.file(
         "test/BUILD",
-        "load('/test/aspect', 'my_rule')",
+        "load('//test:aspect.bzl', 'my_rule')",
         "java_library(",
         "     name = 'yyy',",
         ")",
@@ -1413,7 +1413,7 @@
 
     scratch.file("foo/tool.sh", "#!/bin/bash");
     scratch.file("foo/BUILD",
-        "load('extension',  'my_rule')",
+        "load(':extension.bzl',  'my_rule')",
         "my_rule(name = 'main', exe1 = ':tool.sh', exe2 = ':tool.sh')"
     );
     AnalysisResult analysisResultOfRule =
@@ -1503,7 +1503,7 @@
         ")");
     scratch.file(
         "test/BUILD",
-        "load('/test/aspect', 'my_rule')",
+        "load('//test:aspect.bzl', 'my_rule')",
         "exports_files(['zzz'])",
         "my_rule(",
         "     name = 'yyy',",
@@ -1528,7 +1528,7 @@
     scratch.file("test/build_defs.bzl", aspectBzlFile("'deps'"));
     scratch.file(
         "test/BUILD",
-        "load('build_defs', 'repro', 'repro_no_aspect')",
+        "load(':build_defs.bzl', 'repro', 'repro_no_aspect')",
         "repro_no_aspect(name = 'r0')",
         "repro_no_aspect(name = 'r1', deps = [':r0'])",
         "repro(name = 'r2', deps = [':r1'])");
@@ -1617,7 +1617,7 @@
         ")");
 
     scratch.file("foo/BUILD",
-        "load('extension', 'rule_bin_out', 'rule_gen_out', 'main_rule')",
+        "load(':extension.bzl', 'rule_bin_out', 'rule_gen_out', 'main_rule')",
         "rule_bin_out(name = 'rbin')",
         "rule_gen_out(name = 'rgen')",
         "main_rule(name = 'main', deps = [':rbin', ':rgen'])"
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
index 3b8c91e..8b2770a 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
@@ -81,7 +81,7 @@
         "test/skylark",
         "the_rule",
         "no such package '@r//': The repository could not be resolved",
-        "load('/test/skylark/extension', 'my_rule')",
+        "load('//test/skylark:extension.bzl', 'my_rule')",
         "",
         "my_rule(name='the_rule')");
   }
@@ -93,14 +93,14 @@
     // Consequently, no "Recursion was detected" error must be thrown.
     scratch.file(
         "test/skylark/extension.bzl",
-        "load('/test/skylark/other', other_impl = 'impl')",
+        "load('//test/skylark:other.bzl', other_impl = 'impl')",
         "def impl(ctx):",
         "  other_impl(ctx)",
         "empty = rule(implementation = impl)");
     scratch.file("test/skylark/other.bzl", "def impl(ctx):", "  print('This rule does nothing')");
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'empty')",
+        "load('//test/skylark:extension.bzl', 'empty')",
         "empty(name = 'test_target')");
 
     getConfiguredTarget("//test/skylark:test_target");
@@ -127,7 +127,7 @@
         "  native.cc_library(name = name + '_suffix')");
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', macro_rule = 'macro', no_macro_rule = 'no_macro',",
+        "load('//test/skylark:extension.bzl', macro_rule = 'macro', no_macro_rule = 'no_macro',",
         "  native_macro_rule = 'native_macro')",
         "macro_rule(name = 'macro_target')",
         "no_macro_rule(name = 'no_macro_target')",
@@ -171,7 +171,7 @@
         "    attrs = { 'dep' : attr.label() })");
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension',  'my_rule')",
+        "load('//test/skylark:extension.bzl',  'my_rule')",
         "cc_binary(name = 'lib', data = ['a.txt'])",
         "my_rule(name='my', dep = ':lib')");
     NestedSet<Artifact> hiddenTopLevelArtifacts =
@@ -196,7 +196,7 @@
         "    attrs = { 'dep' : attr.label() })");
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension',  'my_rule')",
+        "load('//test/skylark:extension.bzl',  'my_rule')",
         "cc_binary(name = 'lib', data = ['a.txt'])",
         "my_rule(name='my', dep = ':lib')");
     NestedSet<Artifact> hiddenTopLevelArtifacts =
@@ -228,7 +228,7 @@
         "    attrs = { 'dep' : attr.label() })");
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension',  'my_rule')",
+        "load('//test/skylark:extension.bzl',  'my_rule')",
         "cc_binary(name = 'lib', data = ['a.txt'])",
         "my_rule(name='my', dep = ':lib')");
     NestedSet<Artifact> hiddenTopLevelArtifacts =
@@ -262,7 +262,7 @@
         "    attrs = { 'dep' : attr.label() })");
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension',  'my_rule')",
+        "load('//test/skylark:extension.bzl',  'my_rule')",
         "cc_binary(name = 'lib', data = ['a.txt'])",
         "my_rule(name='my', dep = ':lib')");
     NestedSet<Artifact> hiddenTopLevelArtifacts =
@@ -288,7 +288,7 @@
         "    attrs = { 'dep' : attr.label() })");
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension',  'my_rule')",
+        "load('//test/skylark:extension.bzl',  'my_rule')",
         "cc_binary(name = 'lib', data = ['a.txt'])",
         "my_rule(name='my', dep = ':lib')");
     NestedSet<Artifact> hiddenTopLevelArtifacts =
@@ -317,7 +317,7 @@
         "    attrs = { 'dep' : attr.label() })");
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension',  'my_rule')",
+        "load('//test/skylark:extension.bzl',  'my_rule')",
         "cc_binary(name = 'lib', data = ['a.txt'])",
         "my_rule(name='my', dep = ':lib')");
     NestedSet<Artifact> hiddenTopLevelArtifacts =
@@ -372,7 +372,7 @@
                 errorMessage);
     scratch.file(
         "test/skylark/extension.bzl",
-        "load('/test/skylark/functions', 'first')",
+        "load('//test/skylark:functions.bzl', 'first')",
         "def custom_rule_impl(ctx):",
         "  attr1 = ctx.files.attr1",
         "  ftb = depset(attr1)",
@@ -395,7 +395,7 @@
         "  " + object + ".index(1)");
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', attr1 = [':a.txt'])");
 
@@ -417,7 +417,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', attr1 = [':a.txt'])");
 
@@ -444,7 +444,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', attr1 = [':a.txt'])");
 
@@ -474,7 +474,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "cc_library(name = 'lib', data = ['a.txt'])",
         "custom_rule(name = 'cr1', x = ':lib')",
@@ -509,7 +509,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', attr1 = [':a.txt'])");
 
@@ -537,7 +537,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', data = [':a.txt'])");
 
@@ -570,7 +570,7 @@
         "cr",
         "Cannot specify the provider 'runfiles' together with "
             + "'data_runfiles' or 'default_runfiles'",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr')");
   }
@@ -592,7 +592,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "java_library(name='jl', srcs = [':A.java'])",
         "custom_rule(name = 'cr', attr1 = [':a.txt', ':a.random'], attr2 = [':jl'])");
@@ -624,7 +624,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "java_library(name='jl', srcs = [':A.java'])",
         "custom_rule(name = 'cr', attr1 = [':a.txt', ':a.random'], attr2 = [':jl'])");
@@ -654,7 +654,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', attr1 = [':a.txt'])");
 
@@ -685,8 +685,8 @@
         "b",
         "in dependencies attribute of main_rule rule //test:b: "
             + "'//test:a' does not have mandatory providers: 'some_provider'",
-        "load('/test/skylark/extension', 'dependent_rule')",
-        "load('/test/skylark/extension', 'main_rule')",
+        "load('//test/skylark:extension.bzl', 'dependent_rule')",
+        "load('//test/skylark:extension.bzl', 'main_rule')",
         "",
         "dependent_rule(name = 'a')",
         "main_rule(name = 'b', dependencies = [':a'])");
@@ -745,7 +745,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', attr1 = [':a.txt'])");
 
@@ -781,7 +781,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', public_attr = 'bar')");
 
@@ -823,7 +823,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule', 'empty_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule', 'empty_rule')",
         "",
         "empty_rule(name = 'foo')",
         "custom_rule(name = 'cr', public_attr = '//test/skylark:foo')");
@@ -863,7 +863,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(",
         "  name='cr',",
@@ -902,7 +902,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', attr1 = None)");
 
@@ -928,7 +928,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr')");
 
@@ -952,7 +952,7 @@
         "test/skylark",
         "cr",
         "Multiple outputs with the same key: o",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', o = [':bar.txt'])");
   }
@@ -982,7 +982,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', attr1 = 'bar', out=['other'])");
 
@@ -1057,7 +1057,7 @@
         "empty = rule(implementation = _impl)");
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'empty')",
+        "load('//test/skylark:extension.bzl', 'empty')",
         "empty(name = 'test_target')");
 
     getConfiguredTarget("//test/skylark:test_target");
@@ -1073,7 +1073,7 @@
         "test/skylark",
         "cr",
         "impl() does not accept positional arguments",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr')");
   }
@@ -1096,7 +1096,7 @@
         "test/skylark",
         "cr",
         "Attribute 'bad_attr' either doesn't exist or uses a select()",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', attr1 = 'bar')");
   }
@@ -1118,7 +1118,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "",
         "custom_rule(name = 'cr', attr1 = [':a.txt'])");
 
@@ -1144,12 +1144,12 @@
 
     scratch.file(
         "test/skylark1/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "custom_rule(name = 'cr1')");
 
     scratch.file(
         "test/skylark2/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "custom_rule(name = 'cr2', dep = ['//test/skylark1:cr1'])");
 
     getConfiguredTarget("//test/skylark2:cr2");
@@ -1165,7 +1165,7 @@
         "s = gen()");
 
     scratch.file(
-        "test/skylark/BUILD", "load('extension', 'r', 's')", "r(name = 'r')", "s(name = 's')");
+        "test/skylark/BUILD", "load(':extension.bzl', 'r', 's')", "r(name = 'r')", "s(name = 's')");
 
     getConfiguredTarget("//test/skylark:r");
     getConfiguredTarget("//test/skylark:s");
@@ -1177,14 +1177,14 @@
 
     scratch.file(
         "test/skylark/extension.bzl",
-        "load('/test/skylark/implementation', 'custom_rule_impl')",
+        "load('//test/skylark:implementation.bzl', 'custom_rule_impl')",
         "",
         "custom_rule = rule(implementation = custom_rule_impl,",
         "     attrs = {'dep': attr.label_list(allow_files=True)})");
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension', 'custom_rule')",
+        "load('//test/skylark:extension.bzl', 'custom_rule')",
         "custom_rule(name = 'cr')");
 
     getConfiguredTarget("//test/skylark:cr");
@@ -1199,7 +1199,7 @@
 
     scratch.file(
         "test/skylark/ext.bzl",
-        "load('/test/skylark/implementation', 'custom_rule')",
+        "load('//test/skylark:implementation.bzl', 'custom_rule')",
         "def impl(ctx): return struct()",
         "custom_rule1 = rule(implementation = impl)",
         "custom_rule2 = custom_rule1",
@@ -1207,7 +1207,7 @@
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/ext', 'custom_rule1', 'custom_rule2', 'custom_rule3')",
+        "load('//test/skylark:ext.bzl', 'custom_rule1', 'custom_rule2', 'custom_rule3')",
         "custom_rule4 = custom_rule3",
         "custom_rule1(name = 'cr1')",
         "custom_rule2(name = 'cr2')",
@@ -1222,13 +1222,13 @@
 
   @Test
   public void testRecursiveImport() throws Exception {
-    scratch.file("test/skylark/ext2.bzl", "load('/test/skylark/ext1', 'symbol2')");
+    scratch.file("test/skylark/ext2.bzl", "load('//test/skylark:ext1.bzl', 'symbol2')");
 
-    scratch.file("test/skylark/ext1.bzl", "load('/test/skylark/ext2', 'symbol1')");
+    scratch.file("test/skylark/ext1.bzl", "load('//test/skylark:ext2.bzl', 'symbol1')");
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/ext1', 'custom_rule')",
+        "load('//test/skylark:ext1.bzl', 'custom_rule')",
         "genrule(name = 'rule')");
 
     reporter.removeHandler(failFastHandler);
@@ -1279,18 +1279,19 @@
     scratch.file("test/skylark/implementation.bzl", "def custom_rule_impl(ctx):", "  return None");
 
     scratch.file(
-        "test/skylark/extension2.bzl", "load('/test/skylark/implementation', 'custom_rule_impl')");
+        "test/skylark/extension2.bzl",
+        "load('//test/skylark:implementation.bzl', 'custom_rule_impl')");
 
     scratch.file(
         "test/skylark/extension1.bzl",
-        "load('/test/skylark/extension2', 'custom_rule_impl')",
+        "load('//test/skylark:extension2.bzl', 'custom_rule_impl')",
         "",
         "custom_rule = rule(implementation = custom_rule_impl,",
         "     attrs = {'dep': attr.label_list()})");
 
     scratch.file(
         "test/skylark/BUILD",
-        "load('/test/skylark/extension1', 'custom_rule')",
+        "load('//test/skylark:extension1.bzl', 'custom_rule')",
         "custom_rule(name = 'cr')");
 
     getConfiguredTarget("//test/skylark:cr");
@@ -1558,13 +1559,13 @@
     @Override
     @Test
     public void testRecursiveImport() throws Exception {
-      scratch.file("test/skylark/ext2.bzl", "load('/test/skylark/ext1', 'symbol2')");
+      scratch.file("test/skylark/ext2.bzl", "load('//test/skylark:ext1.bzl', 'symbol2')");
 
-      scratch.file("test/skylark/ext1.bzl", "load('/test/skylark/ext2', 'symbol1')");
+      scratch.file("test/skylark/ext1.bzl", "load('//test/skylark:ext2.bzl', 'symbol1')");
 
       scratch.file(
           "test/skylark/BUILD",
-          "load('/test/skylark/ext1', 'custom_rule')",
+          "load('//test/skylark:ext1.bzl', 'custom_rule')",
           "genrule(name = 'rule')");
 
       reporter.removeHandler(failFastHandler);
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index ccf7309..0371315 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -951,7 +951,7 @@
         "  }",
         ")");
     scratch.file("third_party/foo/BUILD",
-        "load('/test/rule', 'some_rule')",
+        "load('//test:rule.bzl', 'some_rule')",
         "some_rule(",
         "    name='r',",
         "    licenses = ['unencumbered']",
@@ -1604,7 +1604,7 @@
       ")"
     );
     scratch.file("third_party/foo/BUILD",
-      "load('extension',  'my_rule')",
+      "load(':extension.bzl', 'my_rule')",
       "my_rule(name = 'main', exe = ':tool.sh')"
     );
 
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
index 07079d9..af8b8aa 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
@@ -462,7 +462,7 @@
 
     scratch.file(
         "test/BUILD",
-        "load('/test/empty', 'empty_action_rule')",
+        "load('//test:empty.bzl', 'empty_action_rule')",
         "empty_action_rule(name = 'my_empty_action',",
         "                srcs = ['foo.in', 'other_foo.in'])",
         "action_listener(name = 'listener',",
@@ -1673,7 +1673,7 @@
         ")");
     scratch.file(
         "test/BUILD",
-        "load('/test/glob', 'glob_rule')",
+        "load('//test:glob.bzl', 'glob_rule')",
         "glob_rule(name = 'my_glob',",
         "  srcs = ['foo.bar', 'other_foo.bar'])");
     reporter.removeHandler(failFastHandler);
@@ -1720,7 +1720,7 @@
     scratch.file("test/b.bar", "b");
     scratch.file(
         "test/BUILD",
-        "load('/test/glob', 'glob_rule')",
+        "load('//test:glob.bzl', 'glob_rule')",
         "glob_rule(name = 'my_glob', srcs = glob(['*.bar']))");
     ConfiguredTarget ct = getConfiguredTarget("//test:my_glob");
     assertThat(ct).isNotNull();
@@ -1742,7 +1742,7 @@
     );
     scratch.file(
         "test/BUILD",
-        "load('/test/rule', 'silly_rule')",
+        "load('//test:rule.bzl', 'silly_rule')",
         "silly_rule(name = 'silly')");
     thrown.handleAssertionErrors(); // Compatibility with JUnit 4.11
     thrown.expect(AssertionError.class);
@@ -2016,7 +2016,7 @@
   public void testLazyArgsObjectImmutability() throws Exception {
     scratch.file(
         "test/BUILD",
-        "load('/test/rules', 'main_rule', 'dep_rule')",
+        "load('//test:rules.bzl', 'main_rule', 'dep_rule')",
         "dep_rule(name = 'dep')",
         "main_rule(name = 'main', deps = [':dep'])");
     scratch.file(
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
index b3b2c0b..c618d6f 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
@@ -25,7 +25,6 @@
 import com.google.devtools.build.lib.syntax.Parser.ParsingLevel;
 import com.google.devtools.build.lib.syntax.SkylarkImports.SkylarkImportSyntaxException;
 import com.google.devtools.build.lib.syntax.util.EvaluationTestCase;
-import com.google.devtools.build.lib.vfs.PathFragment;
 import java.util.LinkedList;
 import java.util.List;
 import org.junit.Test;
@@ -1088,26 +1087,6 @@
     assertContainsError("syntax error");
   }
 
-  @Test
-  public void testValidAbsoluteImportPath() throws SkylarkImportSyntaxException {
-    String importString = "/some/skylark/file";
-    List<Statement> statements =
-        parseFileForSkylark("load('" + importString + "', 'fun_test')\n");
-    LoadStatement stmt = (LoadStatement) statements.get(0);
-    SkylarkImport imp = SkylarkImports.create(stmt.getImport().getValue());
-
-    assertThat(imp.getImportString()).named("getImportString()").isEqualTo("/some/skylark/file");
-    assertThat(imp.hasAbsolutePath()).named("hasAbsolutePath()").isTrue();
-    assertThat(imp.getAbsolutePath()).named("getAbsolutePath()")
-        .isEqualTo(PathFragment.create("/some/skylark/file.bzl"));
-
-    int startOffset = stmt.getImport().getLocation().getStartOffset();
-    int endOffset = stmt.getImport().getLocation().getEndOffset();
-    assertThat(startOffset).named("getStartOffset()").isEqualTo(5);
-    assertThat(endOffset).named("getEndOffset()")
-        .isEqualTo(startOffset + importString.length() + 2);
-  }
-
   private void validNonAbsoluteImportTest(String importString, String containingFileLabelString,
       String expectedLabelString) throws SkylarkImportSyntaxException {
     List<Statement> statements =
