Fix symlinking under output_root

- output_root_inputs contains paths, relative to output root
- but method createOutputArtifact() awaits paths, relative to working directory

Closes #10800.

PiperOrigin-RevId: 295526181
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaActionsHelper.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaActionsHelper.java
index 48b3915..3eae54d 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaActionsHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaActionsHelper.java
@@ -90,10 +90,17 @@
       return;
     }
     for (String input : this.outputRootInputs) {
-      PathFragment inputPathFragment = PathFragment.create(input);
-      DerivedArtifact derivedArtifact = artifactsHelper.createOutputArtifact(inputPathFragment);
+      // output_root_inputs are relative to the output_root directory, and we should
+      // pass inside createOutputArtifact() paths, relative to working directory.
+      DerivedArtifact derivedArtifact =
+          artifactsHelper.createOutputArtifact(
+              artifactsHelper
+                  .getOutputRootPath()
+                  .getRelative(input)
+                  .relativeTo(artifactsHelper.getWorkingDirectory()));
+      // This method already expects the path relative to output_root.
       PathFragment absolutePath =
-          artifactsHelper.createAbsolutePathUnderOutputRoot(inputPathFragment);
+          artifactsHelper.createAbsolutePathUnderOutputRoot(PathFragment.create(input));
       SymlinkAction symlinkAction =
           SymlinkAction.toAbsolutePath(
               ruleContext.getActionOwner(),
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaGraphTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaGraphTest.java
index 09703f4..6563072 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaGraphTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/ninja/NinjaGraphTest.java
@@ -66,14 +66,14 @@
         "build_config/build.ninja",
         "rule echo",
         "  command = echo \"Hello $$(cat ${in})!\" > ${out}",
-        "build hello.txt: echo input.txt");
+        "build build_config/hello.txt: echo build_config/input.txt");
 
+    // Working directory is workspace root.
     ConfiguredTarget configuredTarget =
         scratchConfiguredTarget(
             "",
             "graph",
             "ninja_graph(name = 'graph', output_root = 'build_config',",
-            " working_directory = 'build_config',",
             " main = 'build_config/build.ninja',",
             " output_root_inputs = ['input.txt'])");
     assertThat(configuredTarget).isInstanceOf(RuleConfiguredTarget.class);
@@ -90,7 +90,7 @@
             ninjaAction.getCommandLines().getCommandLines();
         assertThat(commandLines).hasSize(1);
         assertThat(commandLines.get(0).commandLine.toString())
-            .endsWith("cd build_config && echo \"Hello $(cat input.txt)!\" > hello.txt");
+            .endsWith("echo \"Hello $(cat build_config/input.txt)!\" > build_config/hello.txt");
         assertThat(ninjaAction.getPrimaryInput().getExecPathString())
             .isEqualTo("build_config/input.txt");
         assertThat(ninjaAction.getPrimaryOutput().getExecPathString())