assertThat(compilation) .generatedSourceFile("test/TestActivity__NavigationModelBinder") .hasSourceEquivalentTo(binderSource1); assertThat(compilation) .generatedSourceFile("test/TestSuperActivity__NavigationModelBinder") .hasSourceEquivalentTo(binderSource2);
@Test public void testInvalidAnnotationsOnInterface() { CommandSpec2YamlProcessor processor = new CommandSpec2YamlProcessor(); Compilation compilation = javac() .withProcessors(processor) .compile(JavaFileObjects.forResource( "picocli/examples/annotatedmethods/InvalidAnnotatedInterfaceMethodOptions.java")); assertThat(compilation).failed(); ImmutableList<Diagnostic<? extends JavaFileObject>> errors = compilation.errors(); assertEquals("expected error count", 3, errors.size()); for (Diagnostic<? extends JavaFileObject> diag : errors) { MatcherAssert.assertThat(diag.getMessage(Locale.ENGLISH), containsString("Invalid picocli annotation on interface field")); } //assertThat(compilation).hadErrorContaining("Invalid picocli annotation on interface field"); }
@Test public void intentBuilderGenerator_should_fail_when_extraIsPrivate() { JavaFileObject source = JavaFileObjects.forSourceString( "test.navigation.TestNavigationModel", Joiner.on('\n') .join( "package test.navigation;", "import dart.BindExtra;", "public class TestNavigationModel {", " @BindExtra private String extra;", "}")); Compilation compilation = javac().withProcessors(hensonProcessor()).compile(source); assertThat(compilation) .hadErrorContaining( "@BindExtra field must not be private or static. (test.navigation.TestNavigationModel.extra)"); }
private void assertOnlySourceVersionWarning(Compilation compilation) { assertThat(compilation).hadWarningCount(1); assertThat(compilation).hadWarningContaining("Supported source version 'RELEASE_6' from annotation processor 'picocli.annotation.processing.tests"); }
@Test public void generateNested() { AnnotatedCommandSourceGeneratorProcessor processor = new AnnotatedCommandSourceGeneratorProcessor(); Compilation compilation = javac() .withProcessors(processor) .compile(JavaFileObjects.forResource( "picocli/examples/PopulateFlagsMain.java")); assertThat(compilation).succeeded(); assertThat(compilation) .generatedFile(StandardLocation.SOURCE_OUTPUT, "generated/picocli/examples/PopulateFlagsMain.java") .hasSourceEquivalentTo(JavaFileObjects.forResource("generated/picocli/examples/PopulateFlagsMain.java")); }
@Ignore @Test public void generate() { AnnotatedCommandSourceGeneratorProcessor processor = new AnnotatedCommandSourceGeneratorProcessor(); Compilation compilation = javac() .withProcessors(processor) .compile(JavaFileObjects.forResource( "picocli/examples/subcommands/ParentCommandDemo.java")); assertThat(compilation).succeeded(); assertThat(compilation) .generatedSourceFile("GeneratedHelloWorld") .hasSourceEquivalentTo(JavaFileObjects.forResource("GeneratedHelloWorld.java")); }
@Test public void testPrivateField() { JavaFileObject javaFileObject = JavaFileObjects.forSourceString(getName("TestPrivateField"), "" + "package com.evernote.android.state.test;\n" + "\n" + "import com.evernote.android.state.State;\n" + "\n" + "public class TestPrivateField {\n" + " @State\n" + " private int test;\n" + "}\n"); Compilation compilation = Compiler.javac().withProcessors(new StateProcessor()).compile(javaFileObject); assertThat(compilation).failed(); assertThat(compilation) .hadErrorContaining("Field test must be either non-private or provide a getter and setter method") .inFile(javaFileObject) .onLine(7) .atColumn(17); }
shouldProcess ? new Processor() : null, externalDir).compilation; assertThat(externalCompilation).succeeded(); assertThat(compilation).failed(); MotifErrors errors = processor.getErrors(); Truth.assertThat(errors).isNotNull(); try { Field expectedException = testClass.getField("error"); assertThat(compilation).failed(); MotifErrors errors = processor.getErrors(); Truth.assertThat(errors).isNotEmpty(); expectedException.set(null, errors.get(0)); } catch (NoSuchFieldException ee) { assertThat(compilation).succeeded();
private static String getName(String className, String... typeArguments) { String typeArgumentString = String.join(",", typeArguments); if (!typeArgumentString.isEmpty()) { typeArgumentString = "<" + typeArgumentString + ">"; } SafeNameProcessor processor = new SafeNameProcessor(); Compilation compilation = javac() .withProcessors(processor) .compile(JavaFileObjects.forSourceLines( "test.Test", "package test;", "class Test<A extends String> {", className + typeArgumentString + " test() { return null; }", "}" )); CompilationSubject.assertThat(compilation).succeeded(); return processor.getSafeName(); }
/** Asserts that the compilation succeeded without warnings. */ public void succeededWithoutWarnings() { succeeded(); hadWarningCount(0); }
@Test public void fieldVisibility() { JavaFileObject source = JavaFileObjects.forSourceString( "test.TestNavigationModel", Joiner.on('\n') .join( "package test;", "import dart.BindExtra;", "import java.lang.Object;", "import java.lang.String;", "public class TestNavigationModel {", " @BindExtra(\"key_1\") String extra1;", " @BindExtra(\"key_2\") String extra2;", " @BindExtra(\"key_3\") String extra3;", "}")); Compilation compilation = javac().withProcessors(extraBinderProcessorsWithoutParceler()).compile(source); assertThat(compilation).succeededWithoutWarnings(); }
@CanIgnoreReturnValue @Override public UnsuccessfulCompilationClause failsToCompile() { Compilation compilation = compilation(); check().about(compilations()).that(compilation).failed(); return new UnsuccessfulCompilationBuilder(compilation); }
@CanIgnoreReturnValue @Override public SuccessfulCompilationClause compilesWithoutError() { Compilation compilation = compilation(); check().about(compilations()).that(compilation).succeeded(); return new SuccessfulCompilationBuilder(compilation); }
@CanIgnoreReturnValue @Override public CleanCompilationClause compilesWithoutWarnings() { Compilation compilation = compilation(); check().about(compilations()).that(compilation).succeededWithoutWarnings(); return new CleanCompilationBuilder(compilation); }
@CanIgnoreReturnValue @Override public FileClause<T> withWarningContaining(String messageFragment) { return new FileBuilder( check().about(compilations()).that(compilation).hadWarningContaining(messageFragment)); }
@CanIgnoreReturnValue @Override public T withWarningCount(int warningCount) { check().about(compilations()).that(compilation).hadWarningCount(warningCount); return thisObject(); }
@CanIgnoreReturnValue @Override public SuccessfulFileClause<T> generatesFileNamed( JavaFileManager.Location location, String packageName, String relativeName) { final JavaFileObjectSubject javaFileObjectSubject = check() .about(compilations()) .that(compilation) .generatedFile(location, packageName, relativeName); return new SuccessfulFileClause<T>() { @Override public GeneratedPredicateClause<T> and() { return GeneratedCompilationBuilder.this; } @Override public SuccessfulFileClause<T> withContents(ByteSource expectedByteSource) { javaFileObjectSubject.hasContents(expectedByteSource); return this; } @Override public SuccessfulFileClause<T> withStringContents(Charset charset, String expectedString) { javaFileObjectSubject.contentsAsString(charset).isEqualTo(expectedString); return this; } }; }
/** Asserts that compilation generated a source file for a type with a given qualified name. */ @CanIgnoreReturnValue public JavaFileObjectSubject generatedSourceFile(String qualifiedName) { return generatedFile( StandardLocation.SOURCE_OUTPUT, qualifiedName.replaceAll("\\.", "/") + ".java"); }
assertThat(compilation).succeeded(); assertThat(compilation).generatedSourceFile(getName(className, true)).hasSourceEquivalentTo(expected);
@Test public void testFinal() { JavaFileObject javaFileObject = JavaFileObjects.forSourceString(getName("TestFinal"), "" + "package com.evernote.android.state.test;\n" + "\n" + "import com.evernote.android.state.State;\n" + "\n" + "public class TestFinal {\n" + " @State\n" + " public final int test = 5;\n" + "}\n"); Compilation compilation = Compiler.javac().withProcessors(new StateProcessor()).compile(javaFileObject); assertThat(compilation).failed(); assertThat(compilation) .hadErrorContaining("Field must not be final") .inFile(javaFileObject) .onLine(7) .atColumn(22); }