Enable Windows CI (#714)

Also fix #676
This commit is contained in:
genotrance 2019-10-03 18:38:51 -05:00 committed by GitHub
commit a2ec2db8f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 45 additions and 22 deletions

View file

@ -1,4 +1,5 @@
os:
- windows
- linux
- osx
@ -7,23 +8,37 @@ language: c
env:
- BRANCH=0.19.6
- BRANCH=0.20.2
- BRANCH=1.0.0
# This is the latest working Nim version against which Nimble is being tested
- BRANCH=#2565d3d102efd21ba02ed1f3b96d892fe2637d2b
- BRANCH=#16c39f9b2edc963655889cfd33e165bfae91c96d
cache:
directories:
- "$HOME/.choosenim/toolchains/nim-0.19.6"
- "$HOME/.choosenim/toolchains/nim-0.20.2"
- "$HOME/.nimble/bin"
- "$HOME/.choosenim"
install:
- export CHOOSENIM_CHOOSE_VERSION=$BRANCH
- |
curl https://nim-lang.org/choosenim/init.sh -sSf > init.sh
sh init.sh -y
before_script:
- export CHOOSENIM_NO_ANALYTICS=1
- export PATH=$HOME/.nimble/bin:$PATH
- |
if ! type -P choosenim &> /dev/null; then
if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then
# Latest choosenim binary doesn't have
# https://github.com/dom96/choosenim/pull/117
# https://github.com/dom96/choosenim/pull/135
#
# Using custom build with these PRs for Windows
curl -L -s "https://bintray.com/genotrance/binaries/download_file?file_path=choosenim.exe" -o choosenim.exe
curl -L -s "https://bintray.com/genotrance/binaries/download_file?file_path=libeay32.dll" -o libeay32.dll
curl -L -s "https://bintray.com/genotrance/binaries/download_file?file_path=ssleay32.dll" -o ssleay32.dll
./choosenim.exe $BRANCH -y
cp ./choosenim.exe $HOME/.nimble/bin/.
else
export CHOOSENIM_CHOOSE_VERSION=$BRANCH
curl https://nim-lang.org/choosenim/init.sh -sSf > init.sh
sh init.sh -y
fi
fi
script:
- cd tests

View file

@ -1063,7 +1063,11 @@ proc test(options: Options) =
existsAfter = existsFile(binFileName)
canRemove = not existsBefore and existsAfter
if canRemove:
removeFile(binFileName)
try:
removeFile(binFileName)
except OSError as exc:
display("Warning:", "Failed to delete " & binFileName & ": " &
exc.msg, Warning, MediumPriority)
if failures == 0:
display("Success:", "All tests passed", Success, HighPriority)

View file

@ -9,10 +9,9 @@ license = "BSD"
requires "nim >= 0.12.1"
when defined(windows):
let callNimble = "..\\..\\src\\nimble.exe"
else:
let callNimble = "../../src/nimble"
let
callNimble = getEnv("NIMBLE_TEST_BINARY_PATH")
doAssert callNimble.len != 0, "NIMBLE_TEST_BINARY_PATH not set"
task recurse, "Level 1":
echo 1

View file

@ -12,6 +12,9 @@ var installDir = rootDir / "tests" / "nimbleDir"
const path = "../src/nimble"
const stringNotFound = -1
# Set env var to propagate nimble binary path
putEnv("NIMBLE_TEST_BINARY_PATH", nimblePath)
# Clear nimble dir.
removeDir(installDir)
createDir(installDir)
@ -480,17 +483,17 @@ test "issue #349":
]
proc checkName(name: string) =
when defined(windows):
if name.toLowerAscii() in @["con", "nul"]:
return
let (outp, code) = execNimble("init", "-y", name)
let msg = outp.strip.processOutput()
check code == QuitFailure
check inLines(msg,
"\"$1\" is an invalid package name: reserved name" % name)
removeFile(name.changeFileExt("nimble"))
removeDir("src")
removeDir("tests")
try:
removeFile(name.changeFileExt("nimble"))
removeDir("src")
removeDir("tests")
except OSError:
discard
for reserved in reservedNames:
checkName(reserved.toUpperAscii())
@ -930,7 +933,8 @@ suite "nimble run":
"blahblah", # The command to run
)
check exitCode == QuitFailure
check output.contains("Binary 'blahblah' is not defined in 'run' package.")
check output.contains("Binary '$1' is not defined in 'run' package." %
"blahblah".changeFileExt(ExeExt))
test "Parameters passed to executable":
cd "run":
@ -942,7 +946,8 @@ suite "nimble run":
"check" # Second argument passed to the executed command.
)
check exitCode == QuitSuccess
check output.contains("tests/run/run --debug check")
check output.contains("tests$1run$1$2 --debug check" %
[$DirSep, "run".changeFileExt(ExeExt)])
check output.contains("""Testing `nimble run`: @["--debug", "check"]""")
test "NimbleVersion is defined":