@Override public <A extends Arg> JavaTest createBuildRule( TargetGraph targetGraph, BuildRuleParams params, BuildRuleResolver resolver, A args) throws NoSuchBuildTargetException { SourcePathResolver pathResolver = new SourcePathResolver(resolver); JavacOptions javacOptions = JavacOptionsFactory.create(templateJavacOptions, params, resolver, pathResolver, args); CxxLibraryEnhancement cxxLibraryEnhancement = new CxxLibraryEnhancement( params, args.useCxxLibraries, resolver, pathResolver, cxxPlatform); params = cxxLibraryEnhancement.updatedParams; BuildTarget abiJarTarget = params.getBuildTarget().withAppendedFlavors(CalculateAbi.FLAVOR); JavaTest test = resolver.addToIndex( new JavaTest( params.appendExtraDeps( Iterables.concat( BuildRules.getExportedRules( Iterables.concat( params.getDeclaredDeps().get(), resolver.getAllRules(args.providedDeps.get()))), pathResolver.filterBuildRuleInputs(javacOptions.getInputs(pathResolver)))), pathResolver, args.srcs.get(), ResourceValidator.validateResources( pathResolver, params.getProjectFilesystem(), args.resources.get()), javacOptions.getGeneratedSourceFolderName(), args.labels.get(), args.contacts.get(), args.proguardConfig.transform( SourcePaths.toSourcePath(params.getProjectFilesystem())), new BuildTargetSourcePath(abiJarTarget), javacOptions.trackClassUsage(), /* additionalClasspathEntries */ ImmutableSet.<Path>of(), args.testType.or(TestType.JUNIT), new JavacToJarStepFactory(javacOptions, JavacOptionsAmender.IDENTITY), javaOptions.getJavaRuntimeLauncher(), args.vmArgs.get(), cxxLibraryEnhancement.nativeLibsEnvironment, validateAndGetSourcesUnderTest( args.sourceUnderTest.get(), params.getBuildTarget(), resolver), args.resourcesRoot, args.mavenCoords, args.testRuleTimeoutMs.or(defaultTestRuleTimeoutMs), args.env.get(), args.getRunTestSeparately(), args.stdOutLogLevel, args.stdErrLogLevel)); resolver.addToIndex( CalculateAbi.of( abiJarTarget, pathResolver, params, new BuildTargetSourcePath(test.getBuildTarget()))); return test; }