Skip to content

Commit

Permalink
Enable unit tests with Gradle
Browse files Browse the repository at this point in the history
Summary:
This adds the same logic that we have in place with Litho for Yoga, allowing
unit tests to run with Gradle for Yoga. It'll still shell out to Buck to build
the native library, but that's hopefully only until we have found a way to reuse
the NDK build. For CI this shouldn't matter as we want to run `buck build`
anyway and the build step should be a no-op.

FB-Only:
This should unlock D5020044.

Reviewed By: emilsjolander

Differential Revision: D5104154

fbshipit-source-id: 48732fff6c1d100a155452f675de343aaf06427b
  • Loading branch information
passy authored and facebook-github-bot committed May 22, 2017
1 parent 629e401 commit e9e1e08
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
27 changes: 27 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,33 @@ ext {
targetCompatibilityVersion = JavaVersion.VERSION_1_7
}

// If you have an idea on how to avoid this, please get in touch or
// answer https://stackoverflow.com/questions/43867014/how-to-use-the-gradle-ndk-build-to-compile-for-the-host-machine.
task copyNativeLibs(type: Copy, dependsOn: ':buckBuildNative') {
from "${rootDir}/buck-out/gen/java/tests#default,shared-library-symlink-tree/"
include '*.so'
include '*.dylib'
into "$buildDir/jniLibs"
}

task buckBuildNative(type: Exec) {
workingDir rootDir
environment BUCKVERSION: 'last'
commandLine 'buck', 'build', '//java/...'
}

allprojects {
afterEvaluate {
tasks.withType(Test) {
dependsOn copyNativeLibs
def libDir = "${rootDir}/build/jniLibs"
systemProperty 'java.library.path', libDir
environment 'LD_LIBRARY_PATH', libDir
environment 'DYLD_LIBRARY_PATH', libDir
}
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}
6 changes: 5 additions & 1 deletion java/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,10 @@ android {
java.srcDir 'com'
manifest.srcFile 'AndroidManifest.xml'
res.srcDirs = ['res']
jniLibs.srcDirs = ['build/buck-out/jniLibs']
}

test {
java.srcDirs 'tests'
}
}
}
Expand All @@ -50,6 +53,7 @@ dependencies {
compile 'com.google.code.findbugs:jsr305:3.0.1'
compile 'com.facebook.soloader:soloader:0.2.0'
provided project(':yoga:proguard-annotations')
testCompile 'junit:junit:4.12'
}

task sourcesJar(type: Jar) {
Expand Down

0 comments on commit e9e1e08

Please sign in to comment.