Add uast-tests files to our project
Copy files from obsolete project https://github.com/JetBrains/uast
This commit is contained in:
Generated
-2
@@ -1,13 +1,11 @@
|
|||||||
<component name="libraryTable">
|
<component name="libraryTable">
|
||||||
<library name="uast-java">
|
<library name="uast-java">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="jar://$PROJECT_DIR$/dependencies/uast-tests.jar!/" />
|
|
||||||
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/idea.jar!/" />
|
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/idea.jar!/" />
|
||||||
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/openapi.jar!/" />
|
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/openapi.jar!/" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC />
|
<JAVADOC />
|
||||||
<SOURCES>
|
<SOURCES>
|
||||||
<root url="jar://$PROJECT_DIR$/dependencies/uast-tests-sources.jar!/" />
|
|
||||||
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/" />
|
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/" />
|
||||||
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/" />
|
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/" />
|
||||||
</SOURCES>
|
</SOURCES>
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2017 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* 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 org.jetbrains.uast.test.common
|
||||||
|
|
||||||
|
import org.jetbrains.uast.UFile
|
||||||
|
import org.jetbrains.uast.asRecursiveLogString
|
||||||
|
import org.jetbrains.uast.test.env.assertEqualsToFile
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
interface RenderLogTestBase {
|
||||||
|
fun getTestFile(testName: String, ext: String): File
|
||||||
|
|
||||||
|
private fun getRenderFile(testName: String) = getTestFile(testName, "render.txt")
|
||||||
|
private fun getLogFile(testName: String) = getTestFile(testName, "log.txt")
|
||||||
|
|
||||||
|
fun check(testName: String, file: UFile) {
|
||||||
|
val renderFile = getRenderFile(testName)
|
||||||
|
val logFile = getLogFile(testName)
|
||||||
|
|
||||||
|
assertEqualsToFile("Render string", renderFile, file.asRenderString())
|
||||||
|
assertEqualsToFile("Log string", logFile, file.asRecursiveLogString())
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2017 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* 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 org.jetbrains.uast.test.common
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiNamedElement
|
||||||
|
import org.jetbrains.uast.UFile
|
||||||
|
import org.jetbrains.uast.UResolvable
|
||||||
|
import org.jetbrains.uast.test.env.findElementByText
|
||||||
|
import org.junit.Assert.assertEquals
|
||||||
|
|
||||||
|
interface ResolveTestBase {
|
||||||
|
fun check(testName: String, file: UFile) {
|
||||||
|
val refComment = file.allCommentsInFile.find { it.text.startsWith("// REF:") } ?: throw IllegalArgumentException("No // REF tag in file")
|
||||||
|
val resultComment = file.allCommentsInFile.find { it.text.startsWith("// RESULT:") } ?: throw IllegalArgumentException("No // RESULT tag in file")
|
||||||
|
|
||||||
|
val refText = refComment.text.substringAfter("REF:")
|
||||||
|
val parent = refComment.uastParent
|
||||||
|
val matchingElement = parent.findElementByText<UResolvable>(refText)
|
||||||
|
val resolveResult = matchingElement.resolve() ?: throw IllegalArgumentException("Unresolved reference")
|
||||||
|
val resultText = resolveResult.javaClass.simpleName + (if (resolveResult is PsiNamedElement) ":${resolveResult.name}" else "")
|
||||||
|
assertEquals(resultComment.text.substringAfter("RESULT:"), resultText)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2017 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* 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 org.jetbrains.uast.test.common
|
||||||
|
|
||||||
|
import org.jetbrains.uast.UElement
|
||||||
|
import org.jetbrains.uast.UExpression
|
||||||
|
import org.jetbrains.uast.UFile
|
||||||
|
import org.jetbrains.uast.test.env.assertEqualsToFile
|
||||||
|
import org.jetbrains.uast.visitor.UastVisitor
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
interface TypesTestBase {
|
||||||
|
fun getTypesFile(testName: String): File
|
||||||
|
|
||||||
|
private fun UFile.asLogTypes() = TypesLogger().apply {
|
||||||
|
this@asLogTypes.accept(this)
|
||||||
|
}.toString()
|
||||||
|
|
||||||
|
fun check(testName: String, file: UFile) {
|
||||||
|
val valuesFile = getTypesFile(testName)
|
||||||
|
|
||||||
|
assertEqualsToFile("Log values", valuesFile, file.asLogTypes())
|
||||||
|
}
|
||||||
|
|
||||||
|
class TypesLogger : UastVisitor {
|
||||||
|
|
||||||
|
val builder = StringBuilder()
|
||||||
|
|
||||||
|
var level = 0
|
||||||
|
|
||||||
|
override fun visitElement(node: UElement): Boolean {
|
||||||
|
val initialLine = node.asLogString() + " [" + run {
|
||||||
|
val renderString = node.asRenderString().lines()
|
||||||
|
if (renderString.size == 1) {
|
||||||
|
renderString.single()
|
||||||
|
} else {
|
||||||
|
renderString.first() + "..." + renderString.last()
|
||||||
|
}
|
||||||
|
} + "]"
|
||||||
|
|
||||||
|
(1..level).forEach { builder.append(" ") }
|
||||||
|
builder.append(initialLine)
|
||||||
|
if (node is UExpression) {
|
||||||
|
val value = node.getExpressionType()
|
||||||
|
value?.let { builder.append(" : ").append(it) }
|
||||||
|
}
|
||||||
|
builder.appendln()
|
||||||
|
level++
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun afterVisitElement(node: UElement) {
|
||||||
|
level--
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString() = builder.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2017 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* 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 org.jetbrains.uast.test.common
|
||||||
|
|
||||||
|
import org.jetbrains.uast.UElement
|
||||||
|
import org.jetbrains.uast.UExpression
|
||||||
|
import org.jetbrains.uast.UFile
|
||||||
|
import org.jetbrains.uast.evaluation.UEvaluationContext
|
||||||
|
import org.jetbrains.uast.evaluation.UEvaluatorExtension
|
||||||
|
import org.jetbrains.uast.evaluation.analyzeAll
|
||||||
|
import org.jetbrains.uast.test.env.assertEqualsToFile
|
||||||
|
import org.jetbrains.uast.visitor.UastVisitor
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
interface ValuesTestBase {
|
||||||
|
fun getValuesFile(testName: String): File
|
||||||
|
fun getEvaluatorExtension(): UEvaluatorExtension? = null
|
||||||
|
|
||||||
|
private fun UFile.asLogValues(): String {
|
||||||
|
val evaluationContext = analyzeAll(extensions = getEvaluatorExtension()?.let { listOf(it) } ?: emptyList())
|
||||||
|
return ValueLogger(evaluationContext).apply {
|
||||||
|
this@asLogValues.accept(this)
|
||||||
|
}.toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun check(testName: String, file: UFile) {
|
||||||
|
val valuesFile = getValuesFile(testName)
|
||||||
|
|
||||||
|
assertEqualsToFile("Log values", valuesFile, file.asLogValues())
|
||||||
|
}
|
||||||
|
|
||||||
|
class ValueLogger(val evaluationContext: UEvaluationContext) : UastVisitor {
|
||||||
|
|
||||||
|
val builder = StringBuilder()
|
||||||
|
|
||||||
|
var level = 0
|
||||||
|
|
||||||
|
override fun visitElement(node: UElement): Boolean {
|
||||||
|
val initialLine = node.asLogString() + " [" + run {
|
||||||
|
val renderString = node.asRenderString().lines()
|
||||||
|
if (renderString.size == 1) {
|
||||||
|
renderString.single()
|
||||||
|
} else {
|
||||||
|
renderString.first() + "..." + renderString.last()
|
||||||
|
}
|
||||||
|
} + "]"
|
||||||
|
|
||||||
|
(1..level).forEach { builder.append(" ") }
|
||||||
|
builder.append(initialLine)
|
||||||
|
if (node is UExpression) {
|
||||||
|
val value = evaluationContext.valueOf(node)
|
||||||
|
builder.append(" = ").append(value)
|
||||||
|
}
|
||||||
|
builder.appendln()
|
||||||
|
level++
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun afterVisitElement(node: UElement) {
|
||||||
|
level--
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString() = builder.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2017 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* 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 org.jetbrains.uast.test.env
|
||||||
|
|
||||||
|
import com.intellij.mock.MockProject
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
abstract class AbstractCoreEnvironment {
|
||||||
|
abstract val project: MockProject
|
||||||
|
|
||||||
|
open fun dispose() {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract fun addJavaSourceRoot(root: File)
|
||||||
|
abstract fun addJar(root: File)
|
||||||
|
}
|
||||||
+108
@@ -0,0 +1,108 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2017 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* 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 org.jetbrains.uast.test.env
|
||||||
|
|
||||||
|
import com.intellij.core.CoreApplicationEnvironment
|
||||||
|
import com.intellij.mock.MockProject
|
||||||
|
import com.intellij.openapi.components.ServiceManager
|
||||||
|
import com.intellij.openapi.extensions.Extensions
|
||||||
|
import com.intellij.openapi.util.text.StringUtil
|
||||||
|
import com.intellij.psi.PsiManager
|
||||||
|
import com.intellij.rt.execution.junit.FileComparisonFailure
|
||||||
|
import junit.framework.TestCase
|
||||||
|
import org.jetbrains.uast.UastContext
|
||||||
|
import org.jetbrains.uast.UastLanguagePlugin
|
||||||
|
import org.jetbrains.uast.evaluation.UEvaluatorExtension
|
||||||
|
import org.jetbrains.uast.java.JavaUastLanguagePlugin
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
abstract class AbstractTestWithCoreEnvironment : TestCase() {
|
||||||
|
private var myEnvironment: AbstractCoreEnvironment? = null
|
||||||
|
|
||||||
|
protected val environment: AbstractCoreEnvironment
|
||||||
|
get() = myEnvironment!!
|
||||||
|
|
||||||
|
protected lateinit var project: MockProject
|
||||||
|
|
||||||
|
protected val uastContext: UastContext by lazy {
|
||||||
|
ServiceManager.getService(project, UastContext::class.java)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected val psiManager: PsiManager by lazy {
|
||||||
|
PsiManager.getInstance(project)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun tearDown() {
|
||||||
|
disposeEnvironment()
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract fun createEnvironment(source: File): AbstractCoreEnvironment
|
||||||
|
|
||||||
|
protected fun initializeEnvironment(source: File) {
|
||||||
|
if (myEnvironment != null) {
|
||||||
|
error("Environment is already initialized")
|
||||||
|
}
|
||||||
|
myEnvironment = createEnvironment(source)
|
||||||
|
project = environment.project
|
||||||
|
|
||||||
|
CoreApplicationEnvironment.registerExtensionPoint(
|
||||||
|
Extensions.getRootArea(),
|
||||||
|
UastLanguagePlugin.extensionPointName,
|
||||||
|
UastLanguagePlugin::class.java)
|
||||||
|
|
||||||
|
CoreApplicationEnvironment.registerExtensionPoint(
|
||||||
|
Extensions.getRootArea(),
|
||||||
|
UEvaluatorExtension.EXTENSION_POINT_NAME,
|
||||||
|
UEvaluatorExtension::class.java)
|
||||||
|
|
||||||
|
project.registerService(UastContext::class.java, UastContext::class.java)
|
||||||
|
|
||||||
|
registerUastLanguagePlugins()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun registerUastLanguagePlugins() {
|
||||||
|
val area = Extensions.getRootArea()
|
||||||
|
|
||||||
|
area.getExtensionPoint(UastLanguagePlugin.extensionPointName)
|
||||||
|
.registerExtension(JavaUastLanguagePlugin())
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun disposeEnvironment() {
|
||||||
|
myEnvironment?.dispose()
|
||||||
|
myEnvironment = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun String.trimTrailingWhitespacesAndAddNewlineAtEOF(): String =
|
||||||
|
this.split('\n').map(String::trimEnd).joinToString(separator = "\n").let {
|
||||||
|
result -> if (result.endsWith("\n")) result else result + "\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun assertEqualsToFile(description: String, expected: File, actual: String) {
|
||||||
|
if (!expected.exists()) {
|
||||||
|
expected.writeText(actual)
|
||||||
|
TestCase.fail("File didn't exist. New file was created (${expected.canonicalPath}).")
|
||||||
|
}
|
||||||
|
|
||||||
|
val expectedText =
|
||||||
|
StringUtil.convertLineSeparators(expected.readText().trim()).trimTrailingWhitespacesAndAddNewlineAtEOF()
|
||||||
|
val actualText =
|
||||||
|
StringUtil.convertLineSeparators(actual.trim()).trimTrailingWhitespacesAndAddNewlineAtEOF()
|
||||||
|
if (expectedText != actualText) {
|
||||||
|
throw FileComparisonFailure(description, expectedText, actualText, expected.absolutePath)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2017 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* 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 org.jetbrains.uast.test.env
|
||||||
|
|
||||||
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
|
import org.jetbrains.uast.UElement
|
||||||
|
import org.jetbrains.uast.UFile
|
||||||
|
import org.jetbrains.uast.visitor.UastVisitor
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
abstract class AbstractUastTest : AbstractTestWithCoreEnvironment() {
|
||||||
|
protected companion object {
|
||||||
|
val TEST_DATA_DIR = File("testData")
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract fun getVirtualFile(testName: String): VirtualFile
|
||||||
|
abstract fun check(testName: String, file: UFile)
|
||||||
|
|
||||||
|
fun doTest(testName: String, checkCallback: (String, UFile) -> Unit = { testName, file -> check(testName, file) }) {
|
||||||
|
val virtualFile = getVirtualFile(testName)
|
||||||
|
|
||||||
|
val psiFile = psiManager.findFile(virtualFile) ?: error("Can't get psi file for $testName")
|
||||||
|
val uFile = uastContext.convertElementWithParent(psiFile, null) ?: error("Can't get UFile for $testName")
|
||||||
|
checkCallback(testName, uFile as UFile)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T> UElement.findElementByText(refText: String, cls: Class<T>): T {
|
||||||
|
val matchingElements = mutableListOf<T>()
|
||||||
|
accept(object : UastVisitor {
|
||||||
|
override fun visitElement(node: UElement): Boolean {
|
||||||
|
if (cls.isInstance(node) && node.psi?.text == refText) {
|
||||||
|
matchingElements.add(node as T)
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (matchingElements.isEmpty()) {
|
||||||
|
throw IllegalArgumentException("Reference '$refText' not found")
|
||||||
|
}
|
||||||
|
if (matchingElements.size != 1) {
|
||||||
|
throw IllegalArgumentException("Reference '$refText' is ambiguous")
|
||||||
|
}
|
||||||
|
return matchingElements.single()
|
||||||
|
}
|
||||||
|
|
||||||
|
inline fun <reified T : Any> UElement.findElementByText(refText: String): T = findElementByText(refText, T::class.java)
|
||||||
@@ -32,8 +32,6 @@
|
|||||||
<os family="windows"/>
|
<os family="windows"/>
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
<property name="uast.version" value="1.0.12"/>
|
|
||||||
|
|
||||||
<property name="kotlinx.coroutines.version" value="0.14.1"/>
|
<property name="kotlinx.coroutines.version" value="0.14.1"/>
|
||||||
|
|
||||||
<property name="generators" value="${basedir}/generators"/>
|
<property name="generators" value="${basedir}/generators"/>
|
||||||
@@ -246,10 +244,6 @@
|
|||||||
<!-- Javaslang -->
|
<!-- Javaslang -->
|
||||||
<get-maven-library prefix="io/javaslang" lib="javaslang" version="2.0.6"/>
|
<get-maven-library prefix="io/javaslang" lib="javaslang" version="2.0.6"/>
|
||||||
|
|
||||||
<!-- Uast -->
|
|
||||||
<property name="uast.server" value="http://dl.bintray.com/kotlin/uast"/>
|
|
||||||
<get-maven-library prefix="org/jetbrains/uast" lib="uast-tests" version="${uast.version}" target.jar.name.base="uast-tests" server="${uast.server}"/>
|
|
||||||
|
|
||||||
<get-maven-library-with-dependencies
|
<get-maven-library-with-dependencies
|
||||||
group="org.robolectric"
|
group="org.robolectric"
|
||||||
artifact="robolectric"
|
artifact="robolectric"
|
||||||
|
|||||||
Reference in New Issue
Block a user