diff --git a/src/nimblepkg/packageparser.nim b/src/nimblepkg/packageparser.nim old mode 100755 new mode 100644 index 5c034eb..4a6d5db --- a/src/nimblepkg/packageparser.nim +++ b/src/nimblepkg/packageparser.nim @@ -253,6 +253,8 @@ proc readPackageInfoFromNimble(path: string; result: var PackageInfo) = result.installExt.add(ev.value.multiSplit) of "bin": for i in ev.value.multiSplit: + if i.splitFile().ext == ".nim": + raise newException(NimbleError, "`bin` entry should not be a source file: " & i) result.bin.add(i.addFileExt(ExeExt)) of "backend": result.backend = ev.value.toLowerAscii() diff --git a/tests/issue597/dummy.nimble b/tests/issue597/dummy.nimble new file mode 100644 index 0000000..13bf4be --- /dev/null +++ b/tests/issue597/dummy.nimble @@ -0,0 +1,12 @@ +# Package + +version = "0.1.0" +author = "Author" +description = "dummy" +license = "MIT" + +# Dependencies + +requires "nim >= 0.17.0" + +bin = @["test.nim"] diff --git a/tests/issue597/test.nim b/tests/issue597/test.nim new file mode 100644 index 0000000..e69de29 diff --git a/tests/tester.nim b/tests/tester.nim index 1448869..bd7a306 100644 --- a/tests/tester.nim +++ b/tests/tester.nim @@ -585,6 +585,12 @@ test "can pass args with spaces to Nim (#351)": checkpoint output check exitCode == QuitSuccess +test "error if `bin` is a source file (#597)": + cd "issue597": + var (output, exitCode) = execNimble("build") + check exitCode != QuitSuccess + check output.contains("entry should not be a source file: test.nim") + suite "reverse dependencies": test "basic test": cd "revdep/mydep":