aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2017-09-20 20:02:36 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-09-21 11:02:53 +0200
commit503d0d1f431c280ad73c4ca070d9778dba748498 (patch)
tree9a2b2054f0b9d7be95e0fc44043e37fdf07901f2 /src/test
parent9aafbb7c02f382cd237612ed6e02ac4dab0eaddc (diff)
Add ability to write param files to disk.
PiperOrigin-RevId: 169418286
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java28
1 files changed, 24 insertions, 4 deletions
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 983539a49a..c4f5f5af30 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
@@ -57,6 +57,7 @@ import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.regex.Pattern;
import org.junit.Before;
import org.junit.Rule;
@@ -624,8 +625,7 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase {
SkylarkRuleContext ruleContext = createRuleContext("//foo:foo");
checkErrorContains(
ruleContext,
- "Cannot convert parameter 'content' to type string, in method "
- + "write(File output, int content, bool is_executable) of 'actions'",
+ "Cannot convert parameter 'content' to type string or Args",
"ruleContext.actions.write(",
" output = ruleContext.files.srcs[0],",
" content = 1,",
@@ -1841,6 +1841,27 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase {
}
@Test
+ public void testWriteArgsToParamFile() throws Exception {
+ SkylarkRuleContext ruleContext = createRuleContext("//foo:foo");
+ evalRuleContextCode(
+ ruleContext,
+ "args = ruleContext.actions.args()",
+ "args.add('--foo')",
+ "output=ruleContext.actions.declare_file('out')",
+ "ruleContext.actions.write(",
+ " output=output,",
+ " content=args,",
+ ")");
+ List<ActionAnalysisMetadata> actions =
+ ruleContext.getRuleContext().getAnalysisEnvironment().getRegisteredActions();
+ Optional<ActionAnalysisMetadata> action =
+ actions.stream().filter(a -> a instanceof ParameterFileWriteAction).findFirst();
+ assertThat(action.isPresent()).isTrue();
+ ParameterFileWriteAction paramAction = (ParameterFileWriteAction) action.get();
+ assertThat(paramAction.getContents()).containsExactly("--foo");
+ }
+
+ @Test
public void testLazyArgsWithParamFileInvalidFormatString() throws Exception {
SkylarkRuleContext ruleContext = createRuleContext("//foo:foo");
checkError(
@@ -1855,8 +1876,7 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase {
checkError(
ruleContext,
"Invalid value for parameter \"format\": Expected one of \"shell\", \"multiline\"",
- "args = ruleContext.actions.args()\n"
- + "args.use_param_file('--file=%s', format='illegal')");
+ "args = ruleContext.actions.args()\n" + "args.set_param_file_format('illegal')");
}
@Test