@Test public void testArgsWithLocationMacroAffectDependenciesAndExpands() throws Exception { BuildRuleResolver resolver = new BuildRuleResolver(TargetGraph.EMPTY, new DefaultTargetNodeToBuildRuleTransformer()); SourcePathResolver pathResolver = new SourcePathResolver(resolver); BuildRule shBinaryRule = new ShBinaryBuilder(BuildTargetFactory.newInstance("//:my_exe")) .setMain(new FakeSourcePath("bin/exe")) .build(resolver); BuildRule exportFileRule = ExportFileBuilder.newExportFileBuilder(BuildTargetFactory.newInstance("//:file")) .setSrc(new FakeSourcePath("file.txt")) .build(resolver); WorkerToolBuilder workerToolBuilder = WorkerToolBuilder.newWorkerToolBuilder(BuildTargetFactory.newInstance("//:worker_rule")) .setExe(shBinaryRule.getBuildTarget()) .setArgs("--input $(location //:file)"); WorkerTool workerTool = (WorkerTool) workerToolBuilder.build(resolver); assertThat( workerToolBuilder.findImplicitDeps(), Matchers.hasItem(exportFileRule.getBuildTarget())); assertThat(workerTool.getDeps(), Matchers.hasItems(shBinaryRule, exportFileRule)); assertThat(workerTool.getRuntimeDeps(), Matchers.hasItems(shBinaryRule, exportFileRule)); assertThat( workerTool.getArgs(), Matchers.containsString( pathResolver .getAbsolutePath(new BuildTargetSourcePath(exportFileRule.getBuildTarget())) .toString())); }