Skip to content

Commit

Permalink
Test android maven publish plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
warnyul committed Jul 19, 2017
1 parent 4c0cbe8 commit b83b2f3
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 11 deletions.
3 changes: 3 additions & 0 deletions android-test/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="digital.wup.android_maven_publish">
</manifest>
1 change: 1 addition & 0 deletions plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,6 @@ dependencies {
compile gradleApi()
compile localGroovy()
testCompile gradleTestKit()
testCompile 'com.android.tools.build:gradle:2.3.3'
testCompile 'junit:junit:4.12'
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,51 @@
package digital.wup.android_maven_publish

import org.gradle.api.Project
import org.gradle.testfixtures.ProjectBuilder
import org.junit.Assert
import org.junit.Test
import org.gradle.api.internal.component.Usage

import static org.junit.Assert.assertNotNull
import static org.junit.Assert.assertTrue
class AndroidMavenPublishTest extends BaseTestCase {

class AndroidMavenPublishTest {

@Test
public void testMavenPublishPluginRequired() {
Project project = ProjectBuilder.builder().build();

project.plugins.apply(AndroidMavenPublishPlugin)
Project project = buildAndroidProject()

assertNotNull("maven-publish plugin hasn't applied", project.plugins.findPlugin('maven-publish'))
}

public void testAndroidComponent() {
Project project = buildAndroidProject()

assertNotNull("Android component not found", project.components.getByName('android'))

def android = project.components.android
assertTrue("Android component is not instance of AndroidLibrary", android instanceof AndroidLibrary)
assertEquals("android", android.getName())
assertFalse(android.getUsages().isEmpty())
}

public void testCompileUsage() {
def component = buildAndroidProject().components.android

Usage usage = component.getUsages().getAt(0)
assertEquals('It is not compile usage', 'compile', usage.getName())
assertFalse("Artifacts not found", usage.getArtifacts().isEmpty())

def artifact = usage.getArtifacts().getAt(0)

assertTrue(artifact instanceof AarPublishArtifact)

assertTrue(usage.getDependencies().isEmpty())
}

public void testAarArtifact() {
Project project = buildAndroidProject()
AndroidLibrary android = project.components.android
Usage usage = android.getUsages().getAt(0)
AarPublishArtifact artifact = usage.getArtifacts().getAt(0)
assertEquals(PROJECT_NAME, artifact.getName())
assertNull(artifact.getClassifier())
assertNull(artifact.getDate())
assertEquals('aar', artifact.getExtension())
assertEquals(new File(getProjectAarOutputsDir(), "${PROJECT_NAME}-release.aar").path, artifact.getFile().path)
assertEquals('aar', artifact.getType())
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*
* Copyright 2017 W.UP Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package digital.wup.android_maven_publish

import junit.framework.TestCase
import org.gradle.api.Project
import org.gradle.testfixtures.ProjectBuilder

import java.security.CodeSource

abstract class BaseTestCase extends TestCase {

protected static final String PROJECT_NAME = 'android-test'

protected final Project buildAndroidProject() {

Project p = ProjectBuilder.builder()
.withProjectDir(getAndroidTestDir())
.withName(PROJECT_NAME)
.build()
p.apply plugin: 'com.android.library'
p.plugins.apply(AndroidMavenPublishPlugin.class)

p.android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
}
p.evaluate()
return p
}

/**
* Returns the gradle plugin test folder.
*/
protected final File getAndroidTestDir() {
CodeSource source = getClass().getProtectionDomain().getCodeSource()
if (source != null) {
URL location = source.getLocation();
try {
File dir = new File(location.toURI())
assertTrue(dir.getPath(), dir.exists())
File f = dir.getParentFile().getParentFile().getParentFile().getParentFile()

return new File(f, PROJECT_NAME)
} catch (URISyntaxException e) {
fail(e.getLocalizedMessage())
}
}
fail("Fail to get tests folder")
}

protected final File getProjectAarOutputsDir() {
new File(getAndroidTestDir(), "build${File.separator}outputs")
}
}

0 comments on commit b83b2f3

Please sign in to comment.