aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorgenotrance <dev@genotrance.com>2019-10-03 20:40:05 -0500
committerGitHub <noreply@github.com>2019-10-03 20:40:05 -0500
commitdc222c60115d8cb8ffada8c305fabf1ef8746441 (patch)
treebe8f6d62fb6d3a5d26dd47517cda3a370d918850 /tests
parentc3734587a174ea2fc7e19943e6d11d024f06e091 (diff)
parentb12d77c98d6cb4f6a8ad29c47e8964831cb1990d (diff)
downloadnimterop-dc222c60115d8cb8ffada8c305fabf1ef8746441.tar.gz
nimterop-dc222c60115d8cb8ffada8c305fabf1ef8746441.zip
v0.2.0 (#140)
Diffstat (limited to 'tests')
-rw-r--r--tests/getheader.nims62
-rw-r--r--tests/lzma.nim46
-rw-r--r--tests/tpcre.nim2
-rw-r--r--tests/tsoloud.nim2
-rw-r--r--tests/zlib.nim73
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()