testament: revive ability to test specific important Nimble packages
This commit is contained in:
parent
2b35a51651
commit
f4c76bc8e5
2 changed files with 68 additions and 32 deletions
|
|
@ -10,6 +10,8 @@
|
||||||
## Include for the tester that contains test suites that test special features
|
## Include for the tester that contains test suites that test special features
|
||||||
## of the compiler.
|
## of the compiler.
|
||||||
|
|
||||||
|
import important_packages
|
||||||
|
|
||||||
const
|
const
|
||||||
specialCategories = [
|
specialCategories = [
|
||||||
"assert",
|
"assert",
|
||||||
|
|
@ -448,7 +450,7 @@ if nimbleDir.len == 0: nimbleDir = getHomeDir() / ".nimble"
|
||||||
let
|
let
|
||||||
nimbleExe = findExe("nimble")
|
nimbleExe = findExe("nimble")
|
||||||
#packageDir = nimbleDir / "pkgs" # not used
|
#packageDir = nimbleDir / "pkgs" # not used
|
||||||
packageIndex = nimbleDir / "packages.json"
|
packageIndex = nimbleDir / "packages_official.json"
|
||||||
|
|
||||||
proc waitForExitEx(p: Process): int =
|
proc waitForExitEx(p: Process): int =
|
||||||
var outp = outputStream(p)
|
var outp = outputStream(p)
|
||||||
|
|
@ -463,7 +465,7 @@ proc waitForExitEx(p: Process): int =
|
||||||
|
|
||||||
proc getPackageDir(package: string): string =
|
proc getPackageDir(package: string): string =
|
||||||
## TODO - Replace this with dom's version comparison magic.
|
## TODO - Replace this with dom's version comparison magic.
|
||||||
var commandOutput = execCmdEx("nimble path $#" % package)
|
let commandOutput = execCmdEx("nimble path $#" % package)
|
||||||
if commandOutput.exitCode != QuitSuccess:
|
if commandOutput.exitCode != QuitSuccess:
|
||||||
return ""
|
return ""
|
||||||
else:
|
else:
|
||||||
|
|
@ -471,20 +473,26 @@ proc getPackageDir(package: string): string =
|
||||||
|
|
||||||
iterator listPackages(filter: PackageFilter): tuple[name, url: string] =
|
iterator listPackages(filter: PackageFilter): tuple[name, url: string] =
|
||||||
let packageList = parseFile(packageIndex)
|
let packageList = parseFile(packageIndex)
|
||||||
for package in packageList.items():
|
for package in packageList.items:
|
||||||
let
|
if package.hasKey("url"):
|
||||||
name = package["name"].str
|
let name = package["name"].str
|
||||||
url = package["url"].str
|
if name notin ["nimble", "compiler"]:
|
||||||
isCorePackage = "nim-lang" in normalize(url)
|
let url = package["url"].str
|
||||||
case filter:
|
case filter
|
||||||
of pfCoreOnly:
|
of pfCoreOnly:
|
||||||
if isCorePackage:
|
if "nim-lang" in normalize(url):
|
||||||
yield (name, url)
|
yield (name, url)
|
||||||
of pfExtraOnly:
|
of pfExtraOnly:
|
||||||
if not isCorePackage:
|
if name in important_packages.packages:
|
||||||
yield (name, url)
|
yield (name, url)
|
||||||
of pfAll:
|
of pfAll:
|
||||||
yield (name, url)
|
yield (name, url)
|
||||||
|
|
||||||
|
proc makeSupTest(test, options: string, cat: Category): TTest =
|
||||||
|
result.cat = cat
|
||||||
|
result.name = test
|
||||||
|
result.options = options
|
||||||
|
result.startTime = epochTime()
|
||||||
|
|
||||||
proc testNimblePackages(r: var TResults, cat: Category, filter: PackageFilter) =
|
proc testNimblePackages(r: var TResults, cat: Category, filter: PackageFilter) =
|
||||||
if nimbleExe == "":
|
if nimbleExe == "":
|
||||||
|
|
@ -495,31 +503,30 @@ proc testNimblePackages(r: var TResults, cat: Category, filter: PackageFilter) =
|
||||||
echo("[Warning] - Cannot run nimble tests: Nimble update failed.")
|
echo("[Warning] - Cannot run nimble tests: Nimble update failed.")
|
||||||
return
|
return
|
||||||
|
|
||||||
let packageFileTest = makeTest("PackageFileParsed", "", cat)
|
let packageFileTest = makeSupTest("PackageFileParsed", "", cat)
|
||||||
try:
|
try:
|
||||||
for name, url in listPackages(filter):
|
for name, url in listPackages(filter):
|
||||||
var test = makeTest(name, "", cat)
|
var test = makeSupTest(url, "", cat)
|
||||||
echo(url)
|
let buildPath = "pkgstemp" / name
|
||||||
let
|
let installProcess = startProcess("git", "", ["clone", url, buildPath])
|
||||||
installProcess = startProcess(nimbleExe, "", ["install", "-y", name])
|
let installStatus = waitForExitEx(installProcess)
|
||||||
installStatus = waitForExitEx(installProcess)
|
|
||||||
installProcess.close
|
installProcess.close
|
||||||
if installStatus != QuitSuccess:
|
if installStatus != QuitSuccess:
|
||||||
r.addResult(test, targetC, "", "", reInstallFailed)
|
r.addResult(test, targetC, "", "", reInstallFailed)
|
||||||
continue
|
else:
|
||||||
|
let buildProcess = startProcess(nimbleExe, buildPath, ["test"])
|
||||||
let
|
let buildStatus = waitForExitEx(buildProcess)
|
||||||
buildPath = getPackageDir(name).strip
|
buildProcess.close
|
||||||
buildProcess = startProcess(nimbleExe, buildPath, ["build"])
|
if buildStatus != QuitSuccess:
|
||||||
buildStatus = waitForExitEx(buildProcess)
|
r.addResult(test, targetC, "", "", reBuildFailed)
|
||||||
buildProcess.close
|
else:
|
||||||
if buildStatus != QuitSuccess:
|
r.addResult(test, targetC, "", "", reSuccess)
|
||||||
r.addResult(test, targetC, "", "", reBuildFailed)
|
|
||||||
r.addResult(test, targetC, "", "", reSuccess)
|
|
||||||
r.addResult(packageFileTest, targetC, "", "", reSuccess)
|
r.addResult(packageFileTest, targetC, "", "", reSuccess)
|
||||||
except JsonParsingError:
|
except JsonParsingError:
|
||||||
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:
|
||||||
|
removeDir("pkgstemp")
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
|
|
||||||
29
testament/important_packages.nim
Normal file
29
testament/important_packages.nim
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
import strutils
|
||||||
|
|
||||||
|
const
|
||||||
|
packages* = """
|
||||||
|
karax
|
||||||
|
glob
|
||||||
|
""".splitWhitespace()
|
||||||
|
|
||||||
|
#[
|
||||||
|
jester
|
||||||
|
cligen
|
||||||
|
libffi
|
||||||
|
nimongo
|
||||||
|
nimx
|
||||||
|
karax
|
||||||
|
freeimage
|
||||||
|
regex
|
||||||
|
nimpy
|
||||||
|
zero_functional
|
||||||
|
arraymancer
|
||||||
|
inim
|
||||||
|
c2nim
|
||||||
|
sdl1
|
||||||
|
iterutils
|
||||||
|
gnuplot
|
||||||
|
nimpb
|
||||||
|
lazy
|
||||||
|
choosenim
|
||||||
|
]#
|
||||||
Loading…
Add table
Add a link
Reference in a new issue