From 6e1d2df74ea37756a78c0cf8b776365a38d22f5d Mon Sep 17 00:00:00 2001 From: Araq Date: Mon, 4 Feb 2019 15:59:10 +0100 Subject: [PATCH] testament: test nimble packages is beginning to work --- testament/categories.nim | 21 +++++++++------ testament/important_packages.nim | 45 ++++++++++++++++---------------- testament/specs.nim | 2 +- 3 files changed, 36 insertions(+), 32 deletions(-) diff --git a/testament/categories.nim b/testament/categories.nim index 1365690147..77769743dd 100644 --- a/testament/categories.nim +++ b/testament/categories.nim @@ -471,7 +471,8 @@ proc getPackageDir(package: string): string = else: 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) for package in packageList.items: if package.hasKey("url"): @@ -481,12 +482,12 @@ iterator listPackages(filter: PackageFilter): tuple[name, url: string] = case filter of pfCoreOnly: if "nim-lang" in normalize(url): - yield (name, url) + yield (name, url, defaultCmd) of pfExtraOnly: - if name in important_packages.packages: - yield (name, url) + for n, cmd, commit in important_packages.packages.items: + if name == n: yield (name, url, cmd) of pfAll: - yield (name, url) + yield (name, url, defaultCmd) proc makeSupTest(test, options: string, cat: Category): TTest = result.cat = cat @@ -504,8 +505,9 @@ proc testNimblePackages(r: var TResults, cat: Category, filter: PackageFilter) = return let packageFileTest = makeSupTest("PackageFileParsed", "", cat) + var keepDir = false try: - for name, url in listPackages(filter): + for name, url, cmd in listPackages(filter): var test = makeSupTest(url, "", cat) let buildPath = "pkgstemp" / name let installProcess = startProcess("git", "", ["clone", url, buildPath]) @@ -513,12 +515,15 @@ proc testNimblePackages(r: var TResults, cat: Category, filter: PackageFilter) = installProcess.close if installStatus != QuitSuccess: r.addResult(test, targetC, "", "", reInstallFailed) + keepDir = true else: - let buildProcess = startProcess(nimbleExe, buildPath, ["test"]) + let cmdArgs = parseCmdLine(cmd) + let buildProcess = startProcess(cmdArgs[0], buildPath, cmdArgs[1..^1]) let buildStatus = waitForExitEx(buildProcess) buildProcess.close if buildStatus != QuitSuccess: r.addResult(test, targetC, "", "", reBuildFailed) + keepDir = true else: r.addResult(test, 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.") r.addResult(packageFileTest, targetC, "", "", reBuildFailed) finally: - removeDir("pkgstemp") + if not keepDir: removeDir("pkgstemp") # ---------------------------------------------------------------------------- diff --git a/testament/important_packages.nim b/testament/important_packages.nim index 1ded00b007..6607783abe 100644 --- a/testament/important_packages.nim +++ b/testament/important_packages.nim @@ -1,29 +1,28 @@ import strutils -const - packages* = """ - karax - glob - """.splitWhitespace() +template pkg(name: string; cmd = "nimble test"; version = ""): untyped = + packages.add((name, cmd, version)) + +var packages*: seq[tuple[name, cmd, version: string]] = @[] + +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 - inim - c2nim - sdl1 - iterutils - gnuplot nimpb - lazy - choosenim -]# \ No newline at end of file + jester + nimx +]# diff --git a/testament/specs.nim b/testament/specs.nim index 22ad7d2f84..76ba6331a6 100644 --- a/testament/specs.nim +++ b/testament/specs.nim @@ -9,7 +9,7 @@ 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 isAppVeyor* = existsEnv("APPVEYOR")