Skip to content

Commit

Permalink
Improve sliceDir and jarDir detection
Browse files Browse the repository at this point in the history
We now serach for known slice and jar locations.
  • Loading branch information
externl committed Nov 17, 2016
1 parent 4902c15 commit 2fca14a
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -113,20 +113,33 @@ class SliceExtension {
//
// Guess the slice and jar directories of the Ice distribution we are using
//
if(_iceHome in ["/usr", "/usr/local"]) {
_sliceDir = [_iceHome, "share", "Ice-${_iceVersion}", "slice"].join(File.separator)
_jarDir = [_iceHome, "share", "java"].join(File.separator)
} else {
_sliceDir = [_iceHome, "slice"].join(File.separator)
_jarDir = _srcDist ?
[_iceHome, _compat ? "java-compat" : "java", "lib"].join(File.separator) :
[_iceHome, "lib"].join(File.separator)
def sliceDirectories = [
[_iceHome, "share", "slice"], // Common shared slice directory
[_iceHome, "share", "ice", "slice"], // Ice >= 3.7
[_iceHome, "share", "Ice-${_iceVersion}", "slice"], // Ice < 3.7
[_iceHome, "slice"] // Opt/source installs & Windows distribution
]

def jarDirectories = [
[_iceHome, "share", "java"], // Default usr install
[_iceHome, _compat ? "java-compat" : "java", "lib"], // Source distribution
[_iceHome, "lib"] // Opt style install & Windows distribution
]

def sliceDirCandidates = sliceDirectories.collect { it.join(File.separator) }
def jarDirCandidates = jarDirectories.collect { it.join(File.separator) }

_sliceDir = sliceDirCandidates.find { new File(it).exists() }
_jarDir = jarDirCandidates.find { new File(it).exists() }

if (!_sliceDir) {
LOGGER.warn("Unable to locate slice directory in iceHome (${iceHome})")
}
}
}

def getIceHome() {
if(System.env.ICE_HOME != null) {
if (System.env.ICE_HOME != null) {
return System.env.ICE_HOME
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,10 @@ class SliceTask extends DefaultTask {
def command = []
command.add(project.slice.slice2freezej)
command.add("--output-dir=" + project.slice.output.getAbsolutePath())
command.add("-I${project.slice.sliceDir}")
if (project.slice.sliceDir) {
command.add("-I${project.slice.sliceDir}")
}

freezej.include.each {
command.add('-I' + it)
}
Expand Down Expand Up @@ -486,7 +489,9 @@ class SliceTask extends DefaultTask {
def buildS2JCommandLine(java) {
def command = []
command.add(project.slice.slice2java)
command.add("-I${project.slice.sliceDir}")
if (project.slice.sliceDir) {
command.add("-I${project.slice.sliceDir}")
}

java.include.each {
command.add('-I' + it)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package com.zeroc.gradle.icebuilder.slice

import java.nio.file.Files
import org.gradle.api.Project
import org.gradle.testfixtures.ProjectBuilder
import org.junit.After
import org.junit.Before
import org.junit.BeforeClass
import org.junit.contrib.java.lang.system.EnvironmentVariables
import org.junit.Rule
import org.junit.Test

import static org.junit.Assert.assertNotNull
import static org.junit.Assert.assertTrue
import static org.junit.Assert.fail
import static org.junit.Assume.assumeNotNull

class SliceJarDirectoryTest {

def project = null
def iceHome = null

@Before
public void applySlicePlugin() {
project = ProjectBuilder.builder().build()
project.pluginManager.apply 'java'
project.pluginManager.apply 'slice'
assumeNotNull(project.slice.iceHome)
assumeNotNull(project.slice.slice2java)

iceHome = File.createTempDir()
createIceHomePath(["bin"])
def src = new File(project.slice.slice2java)
def dst = new File([iceHome.toString(), "bin", "slice2java"].join(File.separator))
dst << src.bytes
dst.setExecutable(true)
}

@After
public void cleanup() {
project.delete()
project = null
iceHome.deleteDir()
iceHome.deleteOnExit()
}

def createIceHomePath(path) {
def newPath = new File([iceHome.toString(), path.join(File.separator)].join(File.separator))
newPath.mkdirs()
newPath.toString()
}

@Test
public void testSliceCommon() {
def tmpSliceDir = createIceHomePath(["share", "slice"])
project.slice.iceHome = iceHome.toString()
assertNotNull(project.slice.sliceDir)
assertTrue(project.slice.sliceDir == tmpSliceDir)
}

@Test
public void testIce37SliceDir() {
def tmpSliceDir = createIceHomePath(["share", "ice", "slice"])
project.slice.iceHome = iceHome.toString()
assertNotNull(project.slice.sliceDir)
assertTrue(project.slice.sliceDir == tmpSliceDir)
}

@Test
public void testIce36SliceDir() {
def tmpSliceDir = createIceHomePath(["share", "Ice-${project.slice.iceVersion}", "slice"])
project.slice.iceHome = iceHome.toString()
assertNotNull(project.slice.sliceDir)
assertTrue(project.slice.sliceDir == tmpSliceDir)
}

@Test
public void testOptSourceSliceDir() {
def tmpSliceDir = createIceHomePath(["slice"])
project.slice.iceHome = iceHome.toString()
assertNotNull(project.slice.sliceDir)
assertTrue(project.slice.sliceDir == tmpSliceDir)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ class SlicePluginPropertyTest {
//
// Test an bogus iceHome (non srcDist)
//
def tmpIceHome = File.createTempDir("iceHome", "dir")
def tmpIceHome = File.createTempDir()
tmpIceHome.deleteOnExit()
project.slice.iceHome = tmpIceHome.toString()
try {
Expand All @@ -91,10 +91,11 @@ class SlicePluginPropertyTest {
//

// Create temporary iceHome with fake structure that slice extension requires
def tmpIceHome = File.createTempDir("iceHome", "dir")
def tmpIceHome = File.createTempDir()
tmpIceHome.deleteOnExit()
def tmpBuildGralde = new File([tmpIceHome.toString(), "java", "build.gradle"].join(File.separator))
tmpBuildGralde.mkdirs()
tmpBuildGralde.deleteOnExit()
assertTrue(tmpBuildGralde.exists())

project.slice.iceHome = tmpIceHome.toString()
Expand Down

0 comments on commit 2fca14a

Please sign in to comment.