@Override public void configure(Task task) { LOGGER.info("running configurer for :" + task.getName()); Test test = (Test) task; ModuleDefinition moduleDefinition = moduleInfoService.findModuleDefinition( task.getProject().getName()).orElse(null); if (moduleDefinition == null) { throw new IllegalStateException("Cant find module definition for " + task.getProject().getName() + " inside task " + task.getName()); } test.doFirst(action -> { JavaSawExtension extension = (JavaSawExtension) project.getExtensions().getByName(JAVA_SAW_TEST_EXT_NAME); JavaCompileTaskArgs compilerArgs = argsPatcher.patch(test.getClasspath().getAsPath(), extension, moduleDefinition); CompileArg arg = compilerArgs.getArgByName(JavaCompileTaskArgs.MODULE_PATH); arg.getArguments().addAll(mainOutputDirsPath()); List<String> compilerResultArgs = compilerArgs.getCompilerResultArgs(); compilerResultArgs.add(ADD_READS); compilerResultArgs.add(moduleDefinition.getName() + "=" + "org.junit.jupiter.api"); // todo compilerResultArgs.add(PATCH_MODULE); compilerResultArgs.add(moduleDefinition.getName() + "=" + testOutputDirsPath()); compilerResultArgs.add(ADD_MODULE); compilerResultArgs.add("ALL-MODULE-PATH"); // todo test.setJvmArgs(compilerResultArgs); LOGGER.debug("result jvm arguments is : " + test.getJvmArgs()); }); } private List<String> mainOutputDirsPath() {
var args = new ArrayList<>(testJava.getJvmArgs());
private void configureTestTask(final Test test, final ImmutableSet<String> moduleNameIset) { setModuleNamesInputProperty(test, moduleNameIset); test.doFirst(task -> { final Project project = test.getProject(); final List<String> args = test.getJvmArgs(); addModulePathArgument(args, test.getClasspath()); args.add(OPTION_ADD_MODULES); args.add(ALL_MODULE_PATH); KnownTestFrameworkModuleInfo.from(test).configureTestTask(args, moduleNameIset); addPatchModuleArguments(args, moduleNameIset, project.files(getSourceSets(project).getByName(TEST_SOURCE_SET_NAME).getJava().getOutputDir())); test.setClasspath(project.files()); }); }