Merge pull request #442 from antizealot1337/issue349
Prevent reserved names on Windows from being package names
This commit is contained in:
commit
18da3c8b4c
2 changed files with 69 additions and 1 deletions
|
|
@ -16,6 +16,31 @@ type
|
||||||
warnInstalled*: bool # Determines whether to show a warning for installed pkgs
|
warnInstalled*: bool # Determines whether to show a warning for installed pkgs
|
||||||
warnAll*: bool
|
warnAll*: bool
|
||||||
|
|
||||||
|
const reservedNames = [
|
||||||
|
"CON",
|
||||||
|
"PRN",
|
||||||
|
"AUX",
|
||||||
|
"NUL",
|
||||||
|
"COM1",
|
||||||
|
"COM2",
|
||||||
|
"COM3",
|
||||||
|
"COM4",
|
||||||
|
"COM5",
|
||||||
|
"COM6",
|
||||||
|
"COM7",
|
||||||
|
"COM8",
|
||||||
|
"COM9",
|
||||||
|
"LPT1",
|
||||||
|
"LPT2",
|
||||||
|
"LPT3",
|
||||||
|
"LPT4",
|
||||||
|
"LPT5",
|
||||||
|
"LPT6",
|
||||||
|
"LPT7",
|
||||||
|
"LPT8",
|
||||||
|
"LPT9",
|
||||||
|
]
|
||||||
|
|
||||||
proc newValidationError(msg: string, warnInstalled: bool,
|
proc newValidationError(msg: string, warnInstalled: bool,
|
||||||
hint: string, warnAll: bool): ref ValidationError =
|
hint: string, warnAll: bool): ref ValidationError =
|
||||||
result = newException(ValidationError, msg)
|
result = newException(ValidationError, msg)
|
||||||
|
|
@ -57,6 +82,9 @@ proc validatePackageName*(name: string) =
|
||||||
if name.endsWith("pkg"):
|
if name.endsWith("pkg"):
|
||||||
raiseNewValidationError("\"$1\" is an invalid package name: cannot end" &
|
raiseNewValidationError("\"$1\" is an invalid package name: cannot end" &
|
||||||
" with \"pkg\"" % name, false)
|
" with \"pkg\"" % name, false)
|
||||||
|
if name.toUpperAscii() in reservedNames:
|
||||||
|
raiseNewValidationError(
|
||||||
|
"\"$1\" is an invalid package name: reserved name" % name, false)
|
||||||
|
|
||||||
proc validateVersion*(ver: string) =
|
proc validateVersion*(ver: string) =
|
||||||
for c in ver:
|
for c in ver:
|
||||||
|
|
|
||||||
|
|
@ -354,6 +354,46 @@ test "issue #338":
|
||||||
cd "issue338":
|
cd "issue338":
|
||||||
check execNimble("install", "-y").exitCode == QuitSuccess
|
check execNimble("install", "-y").exitCode == QuitSuccess
|
||||||
|
|
||||||
|
test "issue #349":
|
||||||
|
let reservedNames = [
|
||||||
|
"CON",
|
||||||
|
"PRN",
|
||||||
|
"AUX",
|
||||||
|
"NUL",
|
||||||
|
"COM1",
|
||||||
|
"COM2",
|
||||||
|
"COM3",
|
||||||
|
"COM4",
|
||||||
|
"COM5",
|
||||||
|
"COM6",
|
||||||
|
"COM7",
|
||||||
|
"COM8",
|
||||||
|
"COM9",
|
||||||
|
"LPT1",
|
||||||
|
"LPT2",
|
||||||
|
"LPT3",
|
||||||
|
"LPT4",
|
||||||
|
"LPT5",
|
||||||
|
"LPT6",
|
||||||
|
"LPT7",
|
||||||
|
"LPT8",
|
||||||
|
"LPT9",
|
||||||
|
]
|
||||||
|
|
||||||
|
proc checkName(name: string) =
|
||||||
|
let (outp, code) = execNimble("init", "-y", name)
|
||||||
|
let msg = outp.strip.splitLines()
|
||||||
|
check code == QuitFailure
|
||||||
|
check inLines(msg,
|
||||||
|
"\"$1\" is an invalid package name: reserved name" % name)
|
||||||
|
removeFile(name.changeFileExt("nimble"))
|
||||||
|
removeDir("src")
|
||||||
|
removeDir("tests")
|
||||||
|
|
||||||
|
for reserved in reservedNames:
|
||||||
|
checkName(reserved.toUpperAscii())
|
||||||
|
checkName(reserved.toLowerAscii())
|
||||||
|
|
||||||
test "issue #428":
|
test "issue #428":
|
||||||
cd "issue428":
|
cd "issue428":
|
||||||
# Note: Can't use execNimble because it patches nimbleDir
|
# Note: Can't use execNimble because it patches nimbleDir
|
||||||
|
|
@ -634,4 +674,4 @@ suite "check command":
|
||||||
check exitCode == QuitFailure
|
check exitCode == QuitFailure
|
||||||
check outp.processOutput.inLines("failure")
|
check outp.processOutput.inLines("failure")
|
||||||
check outp.processOutput.inLines("validation failed")
|
check outp.processOutput.inLines("validation failed")
|
||||||
check outp.processOutput.inLines("package 'x' has an incorrect structure")
|
check outp.processOutput.inLines("package 'x' has an incorrect structure")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue