protect package-source parsing against non-path strings
This commit is contained in:
parent
83a813b1e5
commit
f371032a34
|
@ -79,6 +79,14 @@
|
||||||
|
|
||||||
(check-equal-values? (package-source->name+type "random://racket-lang.org/fish.plt" #f) (values #f #f))
|
(check-equal-values? (package-source->name+type "random://racket-lang.org/fish.plt" #f) (values #f #f))
|
||||||
|
|
||||||
|
(check-equal-values? (package-source->name+type "" #f) (values #f #f))
|
||||||
|
(check-equal-values? (package-source->name+type "" 'file) (values #f 'file))
|
||||||
|
(check-equal-values? (package-source->name+type "" 'link) (values #f 'link))
|
||||||
|
(check-equal-values? (package-source->name+type "" 'static-link) (values #f 'static-link))
|
||||||
|
(check-equal-values? (package-source->name+type "" 'file-url) (values #f 'file-url))
|
||||||
|
(check-equal-values? (package-source->name+type "" 'dir-url) (values #f 'dir-url))
|
||||||
|
(check-equal-values? (package-source->name+type "" 'github) (values #f 'github))
|
||||||
|
|
||||||
(void))
|
(void))
|
||||||
|
|
||||||
(provide run-pkg-tests)
|
(provide run-pkg-tests)
|
||||||
|
|
|
@ -46,15 +46,19 @@
|
||||||
(eq? type 'file)
|
(eq? type 'file)
|
||||||
(and (path-string? s)
|
(and (path-string? s)
|
||||||
(regexp-match rx:archive s)))
|
(regexp-match rx:archive s)))
|
||||||
(define-values (base name+ext dir?) (split-path s))
|
(define-values (base name+ext dir?) (if (path-string? s)
|
||||||
(define name (extract-archive-name name+ext))
|
(split-path s)
|
||||||
|
(values #f #f #f)))
|
||||||
|
(define name (and name+ext (extract-archive-name name+ext)))
|
||||||
(values name 'file)]
|
(values name 'file)]
|
||||||
[(if type
|
[(if type
|
||||||
(or (eq? type 'dir)
|
(or (eq? type 'dir)
|
||||||
(eq? type 'link)
|
(eq? type 'link)
|
||||||
(eq? type 'static-link))
|
(eq? type 'static-link))
|
||||||
(path-string? s))
|
(path-string? s))
|
||||||
(define-values (base name dir?) (split-path s))
|
(define-values (base name dir?) (if (path-string? s)
|
||||||
|
(split-path s)
|
||||||
|
(values #f #f #f)))
|
||||||
(define dir-name (and (path? name) (path->string name)))
|
(define dir-name (and (path? name) (path->string name)))
|
||||||
(values (validate-name dir-name) (or type (and dir-name (if link-dirs? 'link 'dir))))]
|
(values (validate-name dir-name) (or type (and dir-name (if link-dirs? 'link 'dir))))]
|
||||||
[else
|
[else
|
||||||
|
|
Loading…
Reference in New Issue
Block a user