Skip to content

Commit 07071da

Browse files
committed
Creating integration tests. androidannotations#343
1 parent 2a166d8 commit 07071da

File tree

13 files changed

+884
-0
lines changed

13 files changed

+884
-0
lines changed

AndroidAnnotations/androidannotations/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,16 @@
2626
<groupId>junit</groupId>
2727
<artifactId>junit</artifactId>
2828
</dependency>
29+
<dependency>
30+
<groupId>com.google.guava</groupId>
31+
<artifactId>guava</artifactId>
32+
</dependency>
33+
<dependency>
34+
<groupId>com.google.android</groupId>
35+
<artifactId>android</artifactId>
36+
<version>1.6_r2</version>
37+
<scope>test</scope>
38+
</dependency>
2939
</dependencies>
3040

3141
<build>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.googlecode.androidannotations.manifest;
2+
3+
import android.app.Activity;
4+
5+
import com.googlecode.androidannotations.annotations.EActivity;
6+
7+
@EActivity
8+
public class ActivityInManifest extends Activity {
9+
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.googlecode.androidannotations.manifest;
2+
3+
import android.app.Activity;
4+
5+
import com.googlecode.androidannotations.annotations.EActivity;
6+
7+
@EActivity
8+
public class ActivityNotInManifest extends Activity {
9+
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.googlecode.androidannotations.manifest;
2+
3+
import android.app.Activity;
4+
5+
import com.googlecode.androidannotations.annotations.EActivity;
6+
7+
@EActivity
8+
public class ActivitySubclassInManifest extends Activity {
9+
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.googlecode.androidannotations.manifest;
2+
3+
import java.io.IOException;
4+
5+
import org.junit.Before;
6+
import org.junit.Test;
7+
8+
import com.googlecode.androidannotations.AndroidAnnotationProcessor;
9+
import com.googlecode.androidannotations.utils.AAProcessorTestHelper;
10+
11+
public class AndroidManifestErrorsTest extends AAProcessorTestHelper {
12+
13+
@Before
14+
public void setup() {
15+
addManifestProcessorParameter(AndroidManifestErrorsTest.class);
16+
addProcessor(new AndroidAnnotationProcessor());
17+
}
18+
19+
@Test
20+
public void activity_subclass_in_manifest_compiles() {
21+
CompileResult result = compileFiles(ActivitySubclassInManifest.class);
22+
assertCompilationSuccessful(result);
23+
}
24+
25+
@Test
26+
public void activity_in_manifest_does_not_compile() throws IOException {
27+
CompileResult result = compileFiles(ActivityInManifest.class);
28+
assertCompilationErrorOn(ActivityInManifest.class, "@EActivity", result);
29+
}
30+
31+
@Test
32+
public void activity_not_in_manifest_compiles_with_warning() throws IOException {
33+
CompileResult result = compileFiles(ActivityNotInManifest.class);
34+
assertCompilationWarningOn(ActivityNotInManifest.class, "@EActivity", result);
35+
}
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.googlecode.androidannotations.manifest;
2+
3+
import java.io.File;
4+
import java.io.FileNotFoundException;
5+
import java.io.IOException;
6+
import java.io.InputStream;
7+
8+
import org.junit.Before;
9+
import org.junit.Test;
10+
11+
import com.google.common.io.Files;
12+
import com.google.common.io.InputSupplier;
13+
import com.googlecode.androidannotations.AndroidAnnotationProcessor;
14+
import com.googlecode.androidannotations.utils.AAProcessorTestHelper;
15+
16+
public class AndroidManifestFinderTest extends AAProcessorTestHelper {
17+
18+
@Before
19+
public void setup() {
20+
addProcessor(new AndroidAnnotationProcessor());
21+
}
22+
23+
@Test
24+
public void fails_if_no_manifest() throws Exception {
25+
CompileResult result = compileFiles(SomeClass.class);
26+
assertCompilationError(result);
27+
}
28+
29+
@Test
30+
public void finds_specified_manifest() {
31+
addManifestProcessorParameter(AndroidManifestFinderTest.class);
32+
CompileResult result = compileFiles(SomeClass.class);
33+
assertCompilationSuccessful(result);
34+
}
35+
36+
@Test
37+
public void finds_manifest_in_generated_source_parent_folder() throws Exception {
38+
copyManifestToParentOfOutputDirectory();
39+
CompileResult result = compileFiles(SomeClass.class);
40+
assertCompilationSuccessful(result);
41+
deleteManifestFromParentOfOutputDirectory();
42+
}
43+
44+
private void deleteManifestFromParentOfOutputDirectory() {
45+
manifestFileInParentOfOutputDirectory().delete();
46+
}
47+
48+
private void copyManifestToParentOfOutputDirectory() throws FileNotFoundException, IOException {
49+
InputSupplier<InputStream> from = new InputSupplier<InputStream>() {
50+
@Override
51+
public InputStream getInput() throws IOException {
52+
return AndroidManifestFinderTest.class.getResourceAsStream("AndroidManifest.xml");
53+
}
54+
};
55+
Files.copy(from, manifestFileInParentOfOutputDirectory());
56+
}
57+
58+
private File manifestFileInParentOfOutputDirectory() {
59+
File outputDirectory = getOuputDirectory();
60+
File manifestFile = new File(outputDirectory.getParentFile(), "AndroidManifest.xml");
61+
return manifestFile;
62+
}
63+
64+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.googlecode.androidannotations.manifest;
2+
3+
import com.googlecode.androidannotations.annotations.EBean;
4+
5+
@EBean
6+
public class SomeClass {
7+
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.googlecode.androidannotations.utils;
2+
3+
import java.io.File;
4+
5+
import com.googlecode.androidannotations.helper.ModelConstants;
6+
7+
public class AAProcessorTestHelper extends ProcessorTestHelper {
8+
9+
public void addManifestProcessorParameter(Class<?> classOfPackagingContainingManifest) {
10+
String manifestPath = classOfPackagingContainingManifest.getResource("AndroidManifest.xml").getPath();
11+
String manifestPackagePath = manifestPath.substring(0, manifestPath.lastIndexOf("/"));
12+
addProcessorParameter("androidManifestFile", manifestPackagePath);
13+
}
14+
15+
public File toGeneratedFile(Class<?> compiledClass) {
16+
File output = new File(OUTPUT_DIRECTORY, toPath(compiledClass.getPackage()) + "/" + compiledClass + ModelConstants.GENERATION_SUFFIX + SOURCE_FILE_SUFFIX);
17+
return output;
18+
}
19+
20+
}

0 commit comments

Comments
 (0)