Skip to content

Commit

Permalink
important_packages: allowed_failures batch (#17757)
Browse files Browse the repository at this point in the history
* important_packages: reserve batch 0 for allowed failures

* custom batch name: allowed_failures
  • Loading branch information
timotheecour authored Apr 20, 2021
1 parent fb02b56 commit 68e7ed9
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 12 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci_packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
matrix:
os: [ubuntu-18.04, macos-10.15]
cpu: [amd64]
batch: ["0_3", "1_3", "2_3"] # list of `index_num`
batch: ["allowed_failures", "0_3", "1_3", "2_3"] # list of `index_num`
name: '${{ matrix.os }} (batch: ${{ matrix.batch }})'
runs-on: ${{ matrix.os }}
env:
Expand Down
35 changes: 25 additions & 10 deletions testament/categories.nim
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import important_packages
import std/strformat
from std/sequtils import filterIt

const
specialCategories = [
Expand Down Expand Up @@ -399,8 +400,7 @@ proc testStdlib(r: var TResults, pattern, options: string, cat: Category) =
testSpec r, testObj

# ----------------------------- nimble ----------------------------------------
proc listPackages(packageFilter: string): seq[NimblePackage] =
# xxx document `packageFilter`, seems like a bad API (at least should be a regex; a substring match makes no sense)
proc listPackagesAll(): seq[NimblePackage] =
var nimbleDir = getEnv("NIMBLE_DIR")
if nimbleDir.len == 0: nimbleDir = getHomeDir() / ".nimble"
let packageIndex = nimbleDir / "packages_official.json"
Expand All @@ -409,14 +409,29 @@ proc listPackages(packageFilter: string): seq[NimblePackage] =
for a in packageList:
if a["name"].str == name: return a
for pkg in important_packages.packages.items:
if isCurrentBatch(testamentData0, pkg.name) and packageFilter in pkg.name:
var pkg = pkg
if pkg.url.len == 0:
let pkg2 = findPackage(pkg.name)
if pkg2 == nil:
raise newException(ValueError, "Cannot find package '$#'." % pkg.name)
pkg.url = pkg2["url"].str
result.add pkg
var pkg = pkg
if pkg.url.len == 0:
let pkg2 = findPackage(pkg.name)
if pkg2 == nil:
raise newException(ValueError, "Cannot find package '$#'." % pkg.name)
pkg.url = pkg2["url"].str
result.add pkg

proc listPackages(packageFilter: string): seq[NimblePackage] =
let pkgs = listPackagesAll()
if packageFilter.len != 0:
# xxx document `packageFilter`, seems like a bad API,
# at least should be a regex; a substring match makes no sense.
result = pkgs.filterIt(packageFilter in it.name)
else:
let pkgs1 = pkgs.filterIt(it.allowFailure)
let pkgs2 = pkgs.filterIt(not it.allowFailure)
if testamentData0.batchArg == "allowed_failures":
result = pkgs1
else:
for i in 0..<pkgs2.len:
if i mod testamentData0.testamentNumBatch == testamentData0.testamentBatch:
result.add pkgs2[i]

proc makeSupTest(test, options: string, cat: Category, debugInfo = ""): TTest =
result.cat = cat
Expand Down
2 changes: 1 addition & 1 deletion testament/testament.nim
Original file line number Diff line number Diff line change
Expand Up @@ -692,7 +692,7 @@ proc main() =
quit Usage
of "batch":
testamentData0.batchArg = p.val
if p.val != "_":
if p.val != "_" and p.val.len > 0 and p.val[0] in {'0'..'9'}:
let s = p.val.split("_")
doAssert s.len == 2, $(p.val, s)
testamentData0.testamentBatch = s[0].parseInt
Expand Down

0 comments on commit 68e7ed9

Please sign in to comment.