Provided library versioning in klib. (#2038)

* Provided library versioning in klib.
* A test for library mismatch messages.
This commit is contained in:
alexander-gorshenev
2018-09-13 02:10:34 +03:00
committed by Dmitriy Dolovov
parent d406b1b16d
commit 27ce3b194d
37 changed files with 454 additions and 264 deletions
+31
View File
@@ -2892,6 +2892,37 @@ task produce_dynamic(type: DynamicKonanTest) {
"topLevel = 777 3\n"
}
task library_mismatch(type: RunStandaloneKonanTest) {
def dir = buildDir.absolutePath
def lib = "$projectDir/link/versioning/empty.kt"
def currentTarget = project.target.name
def someOtherTarget = (project.testTarget == 'wasm32' ? project.hostName : 'wasm32')
if (!useCustomDist) {
dependsOn ':wasm32CrossDistRuntime' // we actually need any target other than the current one.
}
doFirst {
def konancScript = isWindows() ? "konanc.bat" : "konanc"
def konanc = "$dist/bin/$konancScript"
"$konanc $lib -p library -o $dir/1.2/empty -target $currentTarget -lv 1.2".execute().waitFor()
"$konanc $lib -p library -o $dir/3.4/empty -target $someOtherTarget".execute().waitFor()
"$konanc $lib -p library -o $dir/5.6/empty -target $currentTarget -lv 5.6".execute().waitFor()
"$konanc $lib -p library -o $dir/7.8/empty -target $currentTarget -lv 7.8".execute().waitFor()
}
source = "link/versioning/hello.kt"
flags = ['-l', 'empty@5.6', '-r', "$dir/1.2", '-r', "$dir/3.4", '-r', "$dir/5.6"]
compilerMessages = true
def messages =
"warning: skipping $dir/1.2/empty.klib. The library versions don't match. Expected '5.6', found '1.2'\n" +
"warning: skipping $dir/3.4/empty.klib. The target doesn't match. Expected '$currentTarget', found [$someOtherTarget]\n" +
"Hello, versioned world!\n"
goldValue = isWindows() ? messages.replaceAll('\\/', '\\\\') : messages
}
if (isMac() && project.testTarget != 'wasm32') {
def target = ext.platformManager.targetByName(project.testTarget ?: 'host').name
@@ -0,0 +1,2 @@
/* This file has intentionally been left blank */
@@ -0,0 +1,3 @@
fun main(args: Array<String>) {
println("Hello, versioned world!")
}