예제 #1
0
  private void createAndroidBinaryRuleAndTestCopyNativeLibraryCommand(
      ImmutableSet<String> cpuFilters,
      String sourceDir,
      String destinationDir,
      ImmutableList<String> expectedShellCommands) {
    BuildRuleResolver ruleResolver = new BuildRuleResolver();
    AndroidBinaryRule.Builder builder =
        AndroidBinaryRule.newAndroidBinaryRuleBuilder(new FakeAbstractBuildRuleBuilderParams())
            .setBuildTarget(BuildTargetFactory.newInstance("//:fbandroid_with_dash_debug_fbsign"))
            .setManifest("AndroidManifest.xml")
            .setKeystore(addKeystoreRule(ruleResolver))
            .setTarget("Google Inc:Google APIs:16");

    for (String filter : cpuFilters) {
      builder.addCpuFilter(filter);
    }

    ImmutableList.Builder<Step> commands = ImmutableList.builder();
    AndroidBinaryRule buildRule = ruleResolver.buildAndAddToIndex(builder);
    buildRule.copyNativeLibrary(sourceDir, destinationDir, commands);

    ImmutableList<Step> steps = commands.build();

    assertEquals(steps.size(), expectedShellCommands.size());
    ExecutionContext context = createMock(ExecutionContext.class);
    replay(context);

    for (int i = 0; i < steps.size(); ++i) {
      Iterable<String> observedArgs = ((BashStep) steps.get(i)).getShellCommand(context);
      String observedCommand = Joiner.on(' ').join(observedArgs);
      assertEquals(expectedShellCommands.get(i), observedCommand);
    }

    verify(context);
  }
예제 #2
0
  @Test
  public void testGetInputsToCompareToOutput() {
    BuildRuleResolver ruleResolver = new BuildRuleResolver();
    AndroidBinaryRule.Builder androidBinaryRuleBuilder =
        AndroidBinaryRule.newAndroidBinaryRuleBuilder(new FakeAbstractBuildRuleBuilderParams())
            .setBuildTarget(BuildTargetFactory.newInstance("//java/src/com/facebook:app"))
            .setManifest("java/src/com/facebook/AndroidManifest.xml")
            .setTarget("Google Inc.:Google APIs:16")
            .setKeystore(addKeystoreRule(ruleResolver));

    BuildContext context = createMock(BuildContext.class);
    replay(context);

    MoreAsserts.assertListEquals(
        "getInputsToCompareToOutput() should include manifest.",
        ImmutableList.of("java/src/com/facebook/AndroidManifest.xml"),
        ruleResolver.buildAndAddToIndex(androidBinaryRuleBuilder).getInputsToCompareToOutput());

    SourcePath proguardConfig = new FileSourcePath("java/src/com/facebook/proguard.cfg");
    androidBinaryRuleBuilder.setProguardConfig(Optional.of(proguardConfig));
    MoreAsserts.assertListEquals(
        "getInputsToCompareToOutput() should include Proguard config, if present.",
        ImmutableList.of(
            "java/src/com/facebook/AndroidManifest.xml", "java/src/com/facebook/proguard.cfg"),
        ruleResolver.buildAndAddToIndex(androidBinaryRuleBuilder).getInputsToCompareToOutput());

    verify(context);
  }