Merge pull request #15 from xyb/packagecompile
fix package compile issue
This commit is contained in:
commit
54480c9a89
|
@ -1,3 +1,6 @@
|
||||||
nimcache/
|
nimcache/
|
||||||
/test.db/
|
/test.db/
|
||||||
/leveldb.e
|
/leveldb.e
|
||||||
|
tests/packagetest/packagetest
|
||||||
|
src/leveldb
|
||||||
|
tests/test
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import options, strutils, leveldbpkg/raw
|
import options, os, strutils, leveldbpkg/raw
|
||||||
|
|
||||||
type
|
type
|
||||||
LevelDb* = ref object
|
LevelDb* = ref object
|
||||||
|
@ -20,7 +20,15 @@ type
|
||||||
|
|
||||||
const
|
const
|
||||||
version* = block:
|
version* = block:
|
||||||
let content = staticRead"../leveldb.nimble"
|
const configFile = "leveldb.nimble"
|
||||||
|
const sourcePath = currentSourcePath()
|
||||||
|
const parentConfig = sourcePath.parentDir.parentDir / configFile
|
||||||
|
const localConfig = sourcePath.parentDir / configFile
|
||||||
|
var content: string
|
||||||
|
if fileExists(parentConfig):
|
||||||
|
content = staticRead(parentConfig)
|
||||||
|
else:
|
||||||
|
content = staticRead(localConfig)
|
||||||
var version_line: string
|
var version_line: string
|
||||||
for line in content.split("\L"):
|
for line in content.split("\L"):
|
||||||
if line.startsWith("version"):
|
if line.startsWith("version"):
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Package
|
||||||
|
|
||||||
|
version = "0.1.0"
|
||||||
|
author = "Xie Yanbo"
|
||||||
|
description = "A new awesome nimble package"
|
||||||
|
license = "MIT"
|
||||||
|
srcDir = "src"
|
||||||
|
bin = @["packagetest"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
|
||||||
|
requires "nim >= 0.18.0"
|
||||||
|
requires "leveldb"
|
|
@ -0,0 +1,10 @@
|
||||||
|
import options
|
||||||
|
import leveldb
|
||||||
|
|
||||||
|
when isMainModule:
|
||||||
|
let db = leveldb.open("/tmp/testleveldb/tooldb")
|
||||||
|
db.put("hello", "world")
|
||||||
|
let val = db.get("hello")
|
||||||
|
if val.isSome() and val.get() == "world":
|
||||||
|
echo "leveldb works."
|
||||||
|
db.close()
|
|
@ -1,6 +1,47 @@
|
||||||
import unittest, options, sequtils
|
import unittest, options, os, osproc, sequtils, strutils
|
||||||
import leveldb, leveldbpkg/raw
|
import leveldb, leveldbpkg/raw
|
||||||
|
|
||||||
|
const
|
||||||
|
tmpDir = "/tmp/testleveldb"
|
||||||
|
tmpNimbleDir = tmpDir / "nimble"
|
||||||
|
tmpDbDir = tmpDir / "testdb"
|
||||||
|
|
||||||
|
template cd*(dir: string, body: untyped) =
|
||||||
|
## Sets the current dir to ``dir``, executes ``body`` and restores the
|
||||||
|
## previous working dir.
|
||||||
|
block:
|
||||||
|
let lastDir = getCurrentDir()
|
||||||
|
setCurrentDir(dir)
|
||||||
|
body
|
||||||
|
setCurrentDir(lastDir)
|
||||||
|
|
||||||
|
proc execNimble(args: varargs[string]): tuple[output: string, exitCode: int] =
|
||||||
|
var quotedArgs = @args
|
||||||
|
quotedArgs.insert("-y")
|
||||||
|
quotedArgs.insert("--nimbleDir:" & tmpNimbleDir)
|
||||||
|
quotedArgs.insert("nimble")
|
||||||
|
quotedArgs = quotedArgs.map(proc (x: string): string = "\"" & x & "\"")
|
||||||
|
|
||||||
|
let cmd = quotedArgs.join(" ")
|
||||||
|
result = execCmdEx(cmd)
|
||||||
|
checkpoint(cmd)
|
||||||
|
checkpoint(result.output)
|
||||||
|
|
||||||
|
proc execTool(args: varargs[string]): tuple[output: string, exitCode: int] =
|
||||||
|
var quotedArgs = @args
|
||||||
|
quotedArgs.insert(tmpDbDir)
|
||||||
|
quotedArgs.insert("--database")
|
||||||
|
quotedArgs.insert(tmpNimbleDir / "bin" / "leveldb")
|
||||||
|
quotedArgs = quotedArgs.map(proc (x: string): string = "\"" & x & "\"")
|
||||||
|
|
||||||
|
if not existsDir(tmpDbDir):
|
||||||
|
createDir(tmpDbDir)
|
||||||
|
|
||||||
|
let cmd = quotedArgs.join(" ")
|
||||||
|
result = execCmdEx(cmd)
|
||||||
|
checkpoint(cmd)
|
||||||
|
checkpoint(result.output)
|
||||||
|
|
||||||
suite "leveldb":
|
suite "leveldb":
|
||||||
|
|
||||||
setup:
|
setup:
|
||||||
|
@ -159,3 +200,55 @@ suite "leveldb":
|
||||||
defer: nc.close()
|
defer: nc.close()
|
||||||
nc.put("a", "1")
|
nc.put("a", "1")
|
||||||
check(toSeq(nc.iter()) == @[("a", "1")])
|
check(toSeq(nc.iter()) == @[("a", "1")])
|
||||||
|
|
||||||
|
suite "package":
|
||||||
|
|
||||||
|
test "import as package":
|
||||||
|
let (output, exitCode) = execNimble("install")
|
||||||
|
check exitCode == QuitSuccess
|
||||||
|
check output.contains("leveldb installed successfully.")
|
||||||
|
|
||||||
|
cd "tests/packagetest":
|
||||||
|
var (output, exitCode) = execNimble("build")
|
||||||
|
check exitCode == QuitSuccess
|
||||||
|
check output.contains("Building")
|
||||||
|
|
||||||
|
(output, exitCode) = execCmdEx("./packagetest")
|
||||||
|
checkpoint output
|
||||||
|
check exitCode == QuitSuccess
|
||||||
|
check output.contains("leveldb works.")
|
||||||
|
|
||||||
|
suite "tool":
|
||||||
|
|
||||||
|
test "leveldb tool":
|
||||||
|
var (output, exitCode) = execNimble("install")
|
||||||
|
check exitCode == QuitSuccess
|
||||||
|
check output.contains("Building")
|
||||||
|
|
||||||
|
check execTool("-v").exitCode == QuitSuccess
|
||||||
|
check execTool("create").exitCode == QuitSuccess
|
||||||
|
check execTool("list").exitCode == QuitSuccess
|
||||||
|
|
||||||
|
check execTool("put", "hello", "world").exitCode == QuitSuccess
|
||||||
|
(output, exitCode) = execTool("get", "hello")
|
||||||
|
check exitCode == QuitSuccess
|
||||||
|
check output == "world\L"
|
||||||
|
(output, exitCode) = execTool("list")
|
||||||
|
check exitCode == QuitSuccess
|
||||||
|
check output == "hello world\L"
|
||||||
|
|
||||||
|
check execTool("delete", "hello").exitCode == QuitSuccess
|
||||||
|
(output, exitCode) = execTool("get", "hello")
|
||||||
|
check exitCode == QuitSuccess
|
||||||
|
check output == ""
|
||||||
|
(output, exitCode) = execTool("list")
|
||||||
|
check exitCode == QuitSuccess
|
||||||
|
check output == ""
|
||||||
|
|
||||||
|
check execTool("put", "hello", "6130", "-x").exitCode == QuitSuccess
|
||||||
|
check execTool("get", "hello", "-x").output == "6130\L"
|
||||||
|
check execTool("get", "hello").output == "a0\L"
|
||||||
|
check execTool("list", "-x").output == "hello 6130\L"
|
||||||
|
check execTool("put", "hello", "0061", "-x").exitCode == QuitSuccess
|
||||||
|
check execTool("get", "hello", "-x").output == "0061\L"
|
||||||
|
check execTool("delete", "hello").exitCode == QuitSuccess
|
||||||
|
|
Loading…
Reference in New Issue