testament: test nimble packages is beginning to work

This commit is contained in:
Araq 2019-02-04 15:59:10 +01:00
commit 6e1d2df74e
3 changed files with 36 additions and 32 deletions

View file

@ -471,7 +471,8 @@ proc getPackageDir(package: string): string =
else: else:
result = commandOutput[0].string result = commandOutput[0].string
iterator listPackages(filter: PackageFilter): tuple[name, url: string] = iterator listPackages(filter: PackageFilter): tuple[name, url, cmd: string] =
const defaultCmd = "nimble test"
let packageList = parseFile(packageIndex) let packageList = parseFile(packageIndex)
for package in packageList.items: for package in packageList.items:
if package.hasKey("url"): if package.hasKey("url"):
@ -481,12 +482,12 @@ iterator listPackages(filter: PackageFilter): tuple[name, url: string] =
case filter case filter
of pfCoreOnly: of pfCoreOnly:
if "nim-lang" in normalize(url): if "nim-lang" in normalize(url):
yield (name, url) yield (name, url, defaultCmd)
of pfExtraOnly: of pfExtraOnly:
if name in important_packages.packages: for n, cmd, commit in important_packages.packages.items:
yield (name, url) if name == n: yield (name, url, cmd)
of pfAll: of pfAll:
yield (name, url) yield (name, url, defaultCmd)
proc makeSupTest(test, options: string, cat: Category): TTest = proc makeSupTest(test, options: string, cat: Category): TTest =
result.cat = cat result.cat = cat
@ -504,8 +505,9 @@ proc testNimblePackages(r: var TResults, cat: Category, filter: PackageFilter) =
return return
let packageFileTest = makeSupTest("PackageFileParsed", "", cat) let packageFileTest = makeSupTest("PackageFileParsed", "", cat)
var keepDir = false
try: try:
for name, url in listPackages(filter): for name, url, cmd in listPackages(filter):
var test = makeSupTest(url, "", cat) var test = makeSupTest(url, "", cat)
let buildPath = "pkgstemp" / name let buildPath = "pkgstemp" / name
let installProcess = startProcess("git", "", ["clone", url, buildPath]) let installProcess = startProcess("git", "", ["clone", url, buildPath])
@ -513,12 +515,15 @@ proc testNimblePackages(r: var TResults, cat: Category, filter: PackageFilter) =
installProcess.close installProcess.close
if installStatus != QuitSuccess: if installStatus != QuitSuccess:
r.addResult(test, targetC, "", "", reInstallFailed) r.addResult(test, targetC, "", "", reInstallFailed)
keepDir = true
else: else:
let buildProcess = startProcess(nimbleExe, buildPath, ["test"]) let cmdArgs = parseCmdLine(cmd)
let buildProcess = startProcess(cmdArgs[0], buildPath, cmdArgs[1..^1])
let buildStatus = waitForExitEx(buildProcess) let buildStatus = waitForExitEx(buildProcess)
buildProcess.close buildProcess.close
if buildStatus != QuitSuccess: if buildStatus != QuitSuccess:
r.addResult(test, targetC, "", "", reBuildFailed) r.addResult(test, targetC, "", "", reBuildFailed)
keepDir = true
else: else:
r.addResult(test, targetC, "", "", reSuccess) r.addResult(test, targetC, "", "", reSuccess)
r.addResult(packageFileTest, targetC, "", "", reSuccess) r.addResult(packageFileTest, targetC, "", "", reSuccess)
@ -526,7 +531,7 @@ proc testNimblePackages(r: var TResults, cat: Category, filter: PackageFilter) =
echo("[Warning] - Cannot run nimble tests: Invalid package file.") echo("[Warning] - Cannot run nimble tests: Invalid package file.")
r.addResult(packageFileTest, targetC, "", "", reBuildFailed) r.addResult(packageFileTest, targetC, "", "", reBuildFailed)
finally: finally:
removeDir("pkgstemp") if not keepDir: removeDir("pkgstemp")
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------

View file

@ -1,29 +1,28 @@
import strutils import strutils
const template pkg(name: string; cmd = "nimble test"; version = ""): untyped =
packages* = """ packages.add((name, cmd, version))
karax
glob var packages*: seq[tuple[name, cmd, version: string]] = @[]
""".splitWhitespace()
pkg "karax"
pkg "cligen"
pkg "glob"
pkg "regex"
pkg "freeimage", "nim c freeimage.nim"
pkg "zero_functional"
pkg "nimpy", "nim c nimpy.nim"
pkg "nimongo", "nimble test_ci"
pkg "inim"
pkg "sdl1", "nim c src/sdl.nim"
pkg "iterutils"
pkg "gnuplot"
pkg "c2nim"
#[ #[
jester
cligen
libffi
nimongo
nimx
karax
freeimage
regex
nimpy
zero_functional
arraymancer arraymancer
inim
c2nim
sdl1
iterutils
gnuplot
nimpb nimpb
lazy jester
choosenim nimx
]# ]#

View file

@ -9,7 +9,7 @@
import parseutils, strutils, os, osproc, streams, parsecfg import parseutils, strutils, os, osproc, streams, parsecfg
var compilerPrefix* = "compiler" / "nim" ## built via ./koch tests var compilerPrefix* = "compiler" / "nim" # XXX Change this, it's wrong.
let isTravis* = existsEnv("TRAVIS") let isTravis* = existsEnv("TRAVIS")
let isAppVeyor* = existsEnv("APPVEYOR") let isAppVeyor* = existsEnv("APPVEYOR")