Rename CommandLinesAndParamFiles -> CommandLines.

When going ahead with the implementation, the full name felt too verbose. CommandLines still shows that we have a list of command lines, and the attached param file info is secondary enough that I'm comfortable omitting the name.

RELNOTES: None
PiperOrigin-RevId: 192731592
diff --git a/src/test/java/com/google/devtools/build/lib/actions/CommandLinesTest.java b/src/test/java/com/google/devtools/build/lib/actions/CommandLinesTest.java
new file mode 100644
index 0000000..4d57313
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/actions/CommandLinesTest.java
@@ -0,0 +1,152 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.actions;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander;
+import com.google.devtools.build.lib.actions.CommandLines.ExpandedCommandLines;
+import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType;
+import com.google.devtools.build.lib.vfs.FileSystemUtils;
+import com.google.devtools.build.lib.vfs.Path;
+import com.google.devtools.build.lib.vfs.PathFragment;
+import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
+import java.nio.charset.StandardCharsets;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Tests for {@link CommandLines}. */
+@RunWith(JUnit4.class)
+public class CommandLinesTest {
+
+  private final ArtifactExpander artifactExpander = null;
+  private final PathFragment execPath = PathFragment.create("output.txt");
+
+  @Test
+  public void testSimpleCommandLine() throws Exception {
+    ExpandedCommandLines expanded =
+        CommandLines.builder()
+            .addCommandLine(CommandLine.of(ImmutableList.of("--foo", "--bar")))
+            .build()
+            .expand(artifactExpander, execPath, 1024, 0);
+    assertThat(expanded.arguments()).containsExactly("--foo", "--bar");
+    assertThat(expanded.getParamFiles()).isEmpty();
+  }
+
+  @Test
+  public void testSimpleParamFileUseAlways() throws Exception {
+    ExpandedCommandLines expanded =
+        CommandLines.builder()
+            .addCommandLine(
+                CommandLine.of(ImmutableList.of("--foo", "--bar")),
+                ParamFileInfo.builder(ParameterFileType.UNQUOTED).setUseAlways(true).build())
+            .build()
+            .expand(artifactExpander, execPath, 1024, 0);
+    assertThat(expanded.arguments()).containsExactly("@output.txt-0.params");
+    assertThat(expanded.getParamFiles()).hasSize(1);
+    assertThat(expanded.getParamFiles().get(0).arguments).containsExactly("--foo", "--bar");
+  }
+
+  @Test
+  public void testMaybeUseParamsFiles() throws Exception {
+    CommandLines commandLines =
+        CommandLines.builder()
+            .addCommandLine(
+                CommandLine.of(ImmutableList.of("--foo", "--bar")),
+                ParamFileInfo.builder(ParameterFileType.UNQUOTED).setUseAlways(false).build())
+            .build();
+    // Set max length to longer than command line, no param file needed
+    ExpandedCommandLines expanded = commandLines.expand(artifactExpander, execPath, 1024, 0);
+    assertThat(expanded.arguments()).containsExactly("--foo", "--bar");
+    assertThat(expanded.getParamFiles()).isEmpty();
+
+    // Set max length to 0, spill to param file is forced
+    expanded = commandLines.expand(artifactExpander, execPath, 0, 0);
+    assertThat(expanded.arguments()).containsExactly("@output.txt-0.params");
+    assertThat(expanded.getParamFiles()).hasSize(1);
+    assertThat(expanded.getParamFiles().get(0).arguments).containsExactly("--foo", "--bar");
+  }
+
+  @Test
+  public void testMixOfCommandLinesAndParamFiles() throws Exception {
+    ExpandedCommandLines expanded =
+        CommandLines.builder()
+            .addCommandLine(CommandLine.of(ImmutableList.of("a", "b")))
+            .addCommandLine(
+                CommandLine.of(ImmutableList.of("c", "d")),
+                ParamFileInfo.builder(ParameterFileType.UNQUOTED).setUseAlways(true).build())
+            .addCommandLine(CommandLine.of(ImmutableList.of("e", "f")))
+            .addCommandLine(
+                CommandLine.of(ImmutableList.of("g", "h")),
+                ParamFileInfo.builder(ParameterFileType.UNQUOTED).setUseAlways(true).build())
+            .build()
+            .expand(artifactExpander, execPath, 1024, 0);
+    assertThat(expanded.arguments())
+        .containsExactly("a", "b", "@output.txt-0.params", "e", "f", "@output.txt-1.params");
+    assertThat(expanded.getParamFiles()).hasSize(2);
+    assertThat(expanded.getParamFiles().get(0).arguments).containsExactly("c", "d");
+    assertThat(expanded.getParamFiles().get(0).paramFileExecPath.getPathString())
+        .isEqualTo("output.txt-0.params");
+    assertThat(expanded.getParamFiles().get(1).arguments).containsExactly("g", "h");
+    assertThat(expanded.getParamFiles().get(1).paramFileExecPath.getPathString())
+        .isEqualTo("output.txt-1.params");
+  }
+
+  @Test
+  public void testFirstParamFilePassesButSecondFailsLengthTest() throws Exception {
+    ExpandedCommandLines expanded =
+        CommandLines.builder()
+            .addCommandLine(
+                CommandLine.of(ImmutableList.of("a", "b")),
+                ParamFileInfo.builder(ParameterFileType.UNQUOTED).setUseAlways(false).build())
+            .addCommandLine(
+                CommandLine.of(ImmutableList.of("c", "d")),
+                ParamFileInfo.builder(ParameterFileType.UNQUOTED).setUseAlways(false).build())
+            .build()
+            .expand(artifactExpander, execPath, 4, 0);
+    assertThat(expanded.arguments()).containsExactly("a", "b", "@output.txt-0.params");
+    assertThat(expanded.getParamFiles()).hasSize(1);
+    assertThat(expanded.getParamFiles().get(0).arguments).containsExactly("c", "d");
+  }
+
+  @Test
+  public void testWriteParamFiles() throws Exception {
+    CommandLines commandLines =
+        CommandLines.builder()
+            .addCommandLine(
+                CommandLine.of(ImmutableList.of("--foo", "--bar")),
+                ParamFileInfo.builder(ParameterFileType.UNQUOTED).setUseAlways(true).build())
+            .addCommandLine(
+                CommandLine.of(ImmutableList.of("--baz")),
+                ParamFileInfo.builder(ParameterFileType.UNQUOTED).setUseAlways(true).build())
+            .build();
+    InMemoryFileSystem inMemoryFileSystem = new InMemoryFileSystem();
+    Path execRoot = inMemoryFileSystem.getPath("/exec");
+    execRoot.createDirectoryAndParents();
+    ExpandedCommandLines expanded =
+        commandLines.expand(artifactExpander, PathFragment.create("my/param/file/out"), 0, 0);
+    expanded.writeParamFiles(execRoot);
+
+    assertThat(
+            FileSystemUtils.readLines(
+                execRoot.getRelative("my/param/file/out-0.params"), StandardCharsets.ISO_8859_1))
+        .containsExactly("--foo", "--bar");
+    assertThat(
+            FileSystemUtils.readLines(
+                execRoot.getRelative("my/param/file/out-1.params"), StandardCharsets.ISO_8859_1))
+        .containsExactly("--baz");
+  }
+}