Fix tests to pass with the latest Nim
There are two issues fixed: - With the latest Nim version sometimes the files `<package_name>_<some_number>.nims`' generated on `nim install` contain warning for unused imports which causes the test "can validate package structure (#144)" to fail, because it was searching for the word "warning" in the output. - On Windows Subsystem for Linux, when an import starts sometimes with a lowercase, and sometimes with an uppercase, for example `import uri` and `import Uri`, this causes Nim to create and compile both `stdlib_uri.nim.c` and `stdlib_Uri.nim.c` and to fail on the linking step, because of the same symbols are being redefined. Also the Travis CI build script is changed to test against currently the latest working Nim version 212ae2f. Related to #680
This commit is contained in:
parent
9d8cc06724
commit
df11a6f6cf
3 changed files with 24 additions and 14 deletions
|
|
@ -7,7 +7,8 @@ language: c
|
||||||
env:
|
env:
|
||||||
- BRANCH=0.19.6
|
- BRANCH=0.19.6
|
||||||
- BRANCH=0.20.2
|
- BRANCH=0.20.2
|
||||||
- BRANCH=#44aadd50cfa647a759610a15967960632bf597ce
|
# This is the latest working Nim version against which Nimble is being tested
|
||||||
|
- BRANCH=#212ae2f1257628bd5d1760593ce0a1bad768831a
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Copyright (C) Dominik Picheta. All rights reserved.
|
# Copyright (C) Dominik Picheta. All rights reserved.
|
||||||
# BSD License. Look at license.txt for more info.
|
# BSD License. Look at license.txt for more info.
|
||||||
import parsecfg, streams, strutils, os, tables, Uri
|
import parsecfg, streams, strutils, os, tables, uri
|
||||||
|
|
||||||
import version, cli
|
import version, cli
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,12 @@ proc inLines(lines: seq[string], line: string): bool =
|
||||||
for i in lines:
|
for i in lines:
|
||||||
if line.normalize in i.normalize: return true
|
if line.normalize in i.normalize: return true
|
||||||
|
|
||||||
|
proc hasLineStartingWith(lines: seq[string], prefix: string): bool =
|
||||||
|
for line in lines:
|
||||||
|
if line.strip(trailing = false).startsWith(prefix):
|
||||||
|
return true
|
||||||
|
return false
|
||||||
|
|
||||||
test "caching of nims and ini detects changes":
|
test "caching of nims and ini detects changes":
|
||||||
cd "caching":
|
cd "caching":
|
||||||
var (output, exitCode) = execNimble("dump")
|
var (output, exitCode) = execNimble("dump")
|
||||||
|
|
@ -117,7 +123,7 @@ test "can validate package structure (#144)":
|
||||||
let (output, exitCode) = execNimble(["install", "-y"])
|
let (output, exitCode) = execNimble(["install", "-y"])
|
||||||
check exitCode == QuitSuccess
|
check exitCode == QuitSuccess
|
||||||
let lines = output.strip.processOutput()
|
let lines = output.strip.processOutput()
|
||||||
check(not inLines(lines, "warning"))
|
check(not lines.hasLineStartingWith("Warning:"))
|
||||||
|
|
||||||
# Test that warnings are produced for the incorrectly structured packages.
|
# Test that warnings are produced for the incorrectly structured packages.
|
||||||
for package in ["x", "y", "z"]:
|
for package in ["x", "y", "z"]:
|
||||||
|
|
@ -128,19 +134,22 @@ test "can validate package structure (#144)":
|
||||||
checkpoint(output)
|
checkpoint(output)
|
||||||
case package
|
case package
|
||||||
of "x":
|
of "x":
|
||||||
check inLines(lines, "Package 'x' has an incorrect structure. It should" &
|
check lines.hasLineStartingWith(
|
||||||
" contain a single directory hierarchy for source files," &
|
"Warning: Package 'x' has an incorrect structure. It should" &
|
||||||
" named 'x', but file 'foobar.nim' is in a directory named" &
|
" contain a single directory hierarchy for source files," &
|
||||||
" 'incorrect' instead.")
|
" named 'x', but file 'foobar.nim' is in a directory named" &
|
||||||
|
" 'incorrect' instead.")
|
||||||
of "y":
|
of "y":
|
||||||
check inLines(lines, "Package 'y' has an incorrect structure. It should" &
|
check lines.hasLineStartingWith(
|
||||||
" contain a single directory hierarchy for source files," &
|
"Warning: Package 'y' has an incorrect structure. It should" &
|
||||||
" named 'ypkg', but file 'foobar.nim' is in a directory named" &
|
" contain a single directory hierarchy for source files," &
|
||||||
" 'yWrong' instead.")
|
" named 'ypkg', but file 'foobar.nim' is in a directory named" &
|
||||||
|
" 'yWrong' instead.")
|
||||||
of "z":
|
of "z":
|
||||||
check inLines(lines, "Package 'z' has an incorrect structure. The top level" &
|
check lines.hasLineStartingWith(
|
||||||
" of the package source directory should contain at most one module," &
|
"Warning: Package 'z' has an incorrect structure. The top level" &
|
||||||
" named 'z.nim', but a file named 'incorrect.nim' was found.")
|
" of the package source directory should contain at most one module," &
|
||||||
|
" named 'z.nim', but a file named 'incorrect.nim' was found.")
|
||||||
else:
|
else:
|
||||||
assert false
|
assert false
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue