aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGanesh Viswanathan <dev@genotrance.com>2019-09-09 15:33:44 -0700
committerGanesh Viswanathan <dev@genotrance.com>2019-10-02 15:31:32 -0500
commitb0447677f1e02ec7d6b070e374e5e92b3ad0ce51 (patch)
tree068c469d468e2096f945f3ed04c4e33f5d019eb1 /tests
parent3a2395360712d2c6f27221e0887b7e3cad0be7a1 (diff)
downloadnimterop-b0447677f1e02ec7d6b070e374e5e92b3ad0ce51.tar.gz
nimterop-b0447677f1e02ec7d6b070e374e5e92b3ad0ce51.zip
Build pre-hook, altNames, uInt, getType() calls, add zlib test
Fix subdir header, static lib name, [u]int[\d]+
Diffstat (limited to 'tests')
-rw-r--r--tests/getheader.nims46
-rw-r--r--tests/zlib.nim68
2 files changed, 101 insertions, 13 deletions
diff --git a/tests/getheader.nims b/tests/getheader.nims
index 840a114..e489380 100644
--- a/tests/getheader.nims
+++ b/tests/getheader.nims
@@ -3,6 +3,7 @@ import strutils
proc testCall(cmd, output: string, exitCode: int, delete = true) =
if delete:
rmDir("build/liblzma")
+ rmDir("build/zlib")
echo cmd
var
ccmd =
@@ -17,26 +18,45 @@ proc testCall(cmd, output: string, exitCode: int, delete = true) =
var
cmd = "nim c -f"
- rcmd = " -r lzma.nim"
- exp = "liblzma version = "
+ lrcmd = " -r lzma.nim"
+ zrcmd = " -r zlib.nim"
+ lexp = "liblzma version = "
+ zexp = "zlib version = "
-when defined(posix):
- testCall(cmd & rcmd, "No build files found", 1)
+testCall(cmd & lrcmd, "No build files found", 1)
+when defined(posix):
# stdlib
- testCall(cmd & " -d:lzmaStd" & rcmd, exp, 0)
- testCall(cmd & " -d:lzmaStd -d:lzmaStatic" & rcmd, exp, 0)
+ testCall(cmd & " -d:lzmaStd" & lrcmd, lexp, 0)
+ testCall(cmd & " -d:lzmaStd -d:lzmaStatic" & 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" & rcmd, exp, 0)
- testCall(cmd & " -d:lzmaGit -d:lzmaStatic" & rcmd, exp, 0, delete = false)
+ 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:lzmaVersion=v5.2.0" & rcmd, exp & "5.2.0", 0)
- testCall(cmd & " -d:lzmaGit -d:lzmaStatic -d:lzmaVersion=v5.2.0" & rcmd, exp & "5.2.0", 0, delete = false)
+ 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:zlibGit" & zrcmd, zexp, 0)
+testCall(cmd & " -d:zlibGit -d:zlibStatic" & 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:lzmaDL" & rcmd, "Need version", 1)
-testCall(cmd & " -d:lzmaDL -d:lzmaVersion=5.2.4" & rcmd, exp & "5.2.4", 0)
-testCall(cmd & " -d:lzmaDL -d:lzmaStatic -d:lzmaVersion=5.2.4" & rcmd, exp & "5.2.4", 0, delete = false)
+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/zlib.nim b/tests/zlib.nim
new file mode 100644
index 0000000..f2cc16a
--- /dev/null
+++ b/tests/zlib.nim
@@ -0,0 +1,68 @@
+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")
+
+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 defined(zlibGit) or defined(zlibDL):
+ when dirExists(baseDir / "build"):
+ cIncludeDir(baseDir / "build")
+
+when not defined(zlibStatic):
+ cImport(zlibPath, recurse = true, dynlib = "zlibLPath")
+else:
+ cImport(zlibPath, recurse = true)
+
+echo "zlib version = " & $zlibVersion()