diff --git a/.travis.yml b/.travis.yml index 3f824f3..a8b511b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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 diff --git a/src/nimble.nim b/src/nimble.nim index bb74ac0..e214538 100644 --- a/src/nimble.nim +++ b/src/nimble.nim @@ -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) diff --git a/tests/nimbleVersionDefine/src/nimbleVersionDefine b/tests/nimbleVersionDefine/src/nimbleVersionDefine index 3b089c0..7aa3ee8 100755 Binary files a/tests/nimbleVersionDefine/src/nimbleVersionDefine and b/tests/nimbleVersionDefine/src/nimbleVersionDefine differ diff --git a/tests/recursive/recursive.nimble b/tests/recursive/recursive.nimble index 972dd0b..d6b155d 100644 --- a/tests/recursive/recursive.nimble +++ b/tests/recursive/recursive.nimble @@ -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 diff --git a/tests/tester.nim b/tests/tester.nim index ceb1fc6..f969f66 100644 --- a/tests/tester.nim +++ b/tests/tester.nim @@ -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":