anoia: make dirname handle tralning / like posix
This commit is contained in:
parent
e5cfd41013
commit
8440378a39
@ -9,6 +9,7 @@ check:
|
||||
ln -s . anoia
|
||||
fennel ./run-tests.fnl $(CHECK)
|
||||
fennel test.fnl
|
||||
mkdir -p $(outputdir)
|
||||
fennel test-svc.fnl $(servicedir)
|
||||
find $(outputdir) -ls
|
||||
test -f $(outputdir)/fish
|
||||
|
@ -25,8 +25,27 @@
|
||||
(fn basename [path]
|
||||
(string.match path ".*/([^/]-)$"))
|
||||
|
||||
|
||||
(fn dirname [path]
|
||||
(string.match path "(.*)/[^/]-$"))
|
||||
(let [stripped (string.match path "(.-)/*$")]
|
||||
(pick-values
|
||||
1
|
||||
(if (not path) "."
|
||||
(= path "") "."
|
||||
(not stripped) "."
|
||||
(= stripped "") "/"
|
||||
(string.match stripped ".+/.-") (stripped:gsub "(.*)(/.*)" "%1")
|
||||
(string.match stripped "/") "/"
|
||||
"."))))
|
||||
|
||||
(define-tests
|
||||
;; these are examples from dirname(3)
|
||||
(expect= (dirname "/usr/lib") "/usr")
|
||||
(expect= (dirname "/usr/") "/")
|
||||
(expect= (dirname "usr") ".")
|
||||
(expect= (dirname "/") "/")
|
||||
(expect= (dirname ".") ".")
|
||||
(expect= (dirname "..") "."))
|
||||
|
||||
(fn append-path [dirname filename]
|
||||
(let [base (or (string.match dirname "(.*)/$") dirname)
|
||||
|
Loading…
Reference in New Issue
Block a user