diff options
| author | genotrance <dev@genotrance.com> | 2019-10-03 20:40:05 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-10-03 20:40:05 -0500 |
| commit | dc222c60115d8cb8ffada8c305fabf1ef8746441 (patch) | |
| tree | be8f6d62fb6d3a5d26dd47517cda3a370d918850 /tests | |
| parent | c3734587a174ea2fc7e19943e6d11d024f06e091 (diff) | |
| parent | b12d77c98d6cb4f6a8ad29c47e8964831cb1990d (diff) | |
| download | nimterop-dc222c60115d8cb8ffada8c305fabf1ef8746441.tar.gz nimterop-dc222c60115d8cb8ffada8c305fabf1ef8746441.zip | |
v0.2.0 (#140)
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/getheader.nims | 62 | ||||
| -rw-r--r-- | tests/lzma.nim | 46 | ||||
| -rw-r--r-- | tests/tpcre.nim | 2 | ||||
| -rw-r--r-- | tests/tsoloud.nim | 2 | ||||
| -rw-r--r-- | tests/zlib.nim | 73 |
5 files changed, 183 insertions, 2 deletions
diff --git a/tests/getheader.nims b/tests/getheader.nims new file mode 100644 index 0000000..c122484 --- /dev/null +++ b/tests/getheader.nims @@ -0,0 +1,62 @@ +import strutils + +proc testCall(cmd, output: string, exitCode: int, delete = true) = + if delete: + rmDir("build/liblzma") + rmDir("build/zlib") + echo cmd + var + ccmd = + when defined(windows): + "cmd /c " & cmd + else: + cmd + (outp, exitC) = gorgeEx(ccmd) + echo outp + doAssert exitC == exitCode, $exitC + doAssert outp.contains(output), outp + +var + cmd = "nim c -f" + lrcmd = " -r lzma.nim" + zrcmd = " -r zlib.nim" + lexp = "liblzma version = " + zexp = "zlib version = " + +testCall(cmd & lrcmd, "No build files found", 1) + +when defined(posix): + # stdlib + testCall(cmd & " -d:envTest" & lrcmd, lexp, 0) + testCall(cmd & " -d:envTestStatic" & lrcmd, lexp, 0) + + when not defined(osx): + testCall(cmd & " -d:zlibStd" & zrcmd, zexp, 0) + testCall(cmd & " -d:zlibStd -d:zlibStatic" & zrcmd, zexp, 0) + + # git + testCall(cmd & " -d:lzmaGit" & lrcmd, lexp, 0) + testCall(cmd & " -d:lzmaGit -d:lzmaStatic" & lrcmd, lexp, 0, delete = false) + + # git tag + testCall(cmd & " -d:lzmaGit -d:lzmaSetVer=v5.2.0" & lrcmd, lexp & "5.2.0", 0) + testCall(cmd & " -d:lzmaGit -d:lzmaStatic -d:lzmaSetVer=v5.2.0" & lrcmd, lexp & "5.2.0", 0, delete = false) + testCall("cd build/liblzma && git branch", "v5.2.0", 0, delete = false) + +# git +testCall(cmd & " -d:envTest" & zrcmd, zexp, 0) +testCall(cmd & " -d:envTestStatic" & zrcmd, zexp, 0, delete = false) + +# git tag +testCall(cmd & " -d:zlibGit -d:zlibSetVer=v1.2.10" & zrcmd, zexp & "1.2.10", 0) +testCall(cmd & " -d:zlibGit -d:zlibStatic -d:zlibSetVer=v1.2.10" & zrcmd, zexp & "1.2.10", 0, delete = false) +testCall("cd build/zlib && git branch", "v1.2.10", 0, delete = false) + +# dl +testCall(cmd & " -d:lzmaDL" & lrcmd, "Need version", 1) +testCall(cmd & " -d:lzmaDL -d:lzmaSetVer=5.2.4" & lrcmd, lexp & "5.2.4", 0) +testCall(cmd & " -d:lzmaDL -d:lzmaStatic -d:lzmaSetVer=5.2.4" & lrcmd, lexp & "5.2.4", 0, delete = false) + +# dl +testCall(cmd & " -d:zlibDL -d:zlibSetVer=1.2.11" & zrcmd, zexp & "1.2.11", 0) +testCall(cmd & " -d:zlibDL -d:zlibStatic -d:zlibSetVer=1.2.11" & zrcmd, zexp & "1.2.11", 0, delete = false) diff --git a/tests/lzma.nim b/tests/lzma.nim new file mode 100644 index 0000000..2368b55 --- /dev/null +++ b/tests/lzma.nim @@ -0,0 +1,46 @@ +import os, strutils + +import nimterop/[build, cimport] + +const + baseDir = currentSourcePath.parentDir()/"build"/"liblzma" + +static: + cDebug() + +when defined(envTest): + setDefines(@["lzmaStd"]) +elif defined(envTestStatic): + setDefines(@["lzmaStd", "lzmaStatic"]) + +getHeader( + "lzma.h", + giturl = "https://github.com/xz-mirror/xz", + dlurl = "https://tukaani.org/xz/xz-$1.tar.gz", + outdir = baseDir, + conFlags = "--disable-xz --disable-xzdec --disable-lzmadec --disable-lzmainfo" +) + +cPlugin: + import strutils + + proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} = + sym.name = sym.name.strip(chars = {'_'}) + +cOverride: + type + lzma_internal = object + lzma_index = object + lzma_index_hash = object + + lzma_options_lzma = object + lzma_stream_flags = object + lzma_block = object + lzma_index_iter = object + +when not lzmaStatic: + cImport(lzmaPath, recurse = true, dynlib = "lzmaLPath") +else: + cImport(lzmaPath, recurse = true) + +echo "liblzma version = " & $lzma_version_string() diff --git a/tests/tpcre.nim b/tests/tpcre.nim index 705525f..5588850 100644 --- a/tests/tpcre.nim +++ b/tests/tpcre.nim @@ -1,6 +1,6 @@ import os -import nimterop/[cimport, git, paths] +import nimterop/[cimport, build, paths] const baseDir = nimteropBuildDir()/"pcre" diff --git a/tests/tsoloud.nim b/tests/tsoloud.nim index f46dd10..12966a8 100644 --- a/tests/tsoloud.nim +++ b/tests/tsoloud.nim @@ -1,4 +1,4 @@ -import os, nimterop/[cimport, git, paths] +import os, nimterop/[cimport, build, paths] const baseDir = nimteropBuildDir()/"soloud" diff --git a/tests/zlib.nim b/tests/zlib.nim new file mode 100644 index 0000000..371d41f --- /dev/null +++ b/tests/zlib.nim @@ -0,0 +1,73 @@ +import os, strutils + +import nimterop/[build, cimport] + +const + baseDir = currentSourcePath.parentDir()/"build"/"zlib" + +static: + cDebug() + +proc zlibPreBuild(outdir, path: string) = + let + mf = outdir / "Makefile" + if mf.fileExists(): + # Delete default Makefile + if mf.readFile().contains("configure first"): + mf.rmFile() + when defined(windows): + # Fix static lib name on Windows + setCmakeLibName(outdir, "zlibstatic", prefix = "lib", oname = "zlib", suffix = ".a") + +when defined(envTest): + setDefines(@["zlibGit"]) +elif defined(envTestStatic): + setDefines(@["zlibGit", "zlibStatic"]) + +getHeader( + "zlib.h", + giturl = "https://github.com/madler/zlib", + dlurl = "http://zlib.net/zlib-$1.tar.gz", + outdir = baseDir, + altNames = "z" +) + +cPlugin: + import regex, strutils + + proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} = + sym.name = sym.name.replace(re"_[_]+", "_").strip(chars = {'_'}) + +cOverride: + type + voidpf = ptr object + voidpc = ptr object + voidp = ptr object + uLongf = culong + z_size_t = culong + z_crc_t = culong + alloc_func* {.importc.} = proc(opaque: voidpf, items, size: uint) {.cdecl.} + Bytef {.importc.} = object + + when defined(posix): + type + pthread_mutex_s = object + pthread_cond_s = object + pthread_rwlock_arch_t = object + extension = object + fd_set = object + +when defined(posix): + static: + cSkipSymbol(@["u_int8_t", "u_int16_t", "u_int32_t", "u_int64_t"]) + +when zlibGit or zlibDL: + when dirExists(baseDir / "buildcache"): + cIncludeDir(baseDir / "buildcache") + +when not zlibStatic: + cImport(zlibPath, recurse = true, dynlib = "zlibLPath") +else: + cImport(zlibPath, recurse = true) + +echo "zlib version = " & $zlibVersion() |
