Raymond Toy pushed to branch issue-266-b-tilde-pathname-support at cmucl / cmucl
Commits:
-
e0ae2ea6
by Raymond Toy at 2023-12-07T14:49:30-08:00
-
7ab1964d
by Raymond Toy at 2023-12-07T14:49:48-08:00
-
4f64fc56
by Raymond Toy at 2023-12-07T14:50:04-08:00
3 changed files:
Changes:
... | ... | @@ -39,6 +39,7 @@ public domain. |
39 | 39 | * ~~#253~~ Block-compile list-to-hashtable and callers
|
40 | 40 | * ~~#258~~ Remove `get-page-size` from linux-os.lisp
|
41 | 41 | * ~~#269~~ Add function to get user's home directory
|
42 | + * ~~#266~~ Support "~user" in namestrings
|
|
42 | 43 | * Other changes:
|
43 | 44 | * Improvements to the PCL implementation of CLOS:
|
44 | 45 | * Changes to building procedure:
|
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 | (define-test user-homedir.1
|
8 | 8 | "Test user-homedir"
|
9 | 9 | (:tag :issues)
|
10 | - ;; Simple test to see if get-user-homedir-pathname returns the
|
|
10 | + ;; Simple test to see if get-user-homedir-namestring returns the
|
|
11 | 11 | ;; expected value. Use getuid and getpwuid to figure out what the
|
12 | 12 | ;; name and home directory should be.
|
13 | 13 | (let* ((uid (unix:unix-getuid))
|
... | ... | @@ -15,15 +15,13 @@ |
15 | 15 | (assert-true uid)
|
16 | 16 | (assert-true user-info)
|
17 | 17 | (let* ((info-dir (unix:user-info-dir user-info))
|
18 | - (info-name (unix:user-info-name user-info))
|
|
19 | - (expected-home-pathname (pathname
|
|
20 | - (concatenate 'string info-dir "/"))))
|
|
21 | - (multiple-value-bind (home-pathname status)
|
|
22 | - (system:get-user-homedir-pathname info-name)
|
|
18 | + (info-name (unix:user-info-name user-info)))
|
|
19 | + (multiple-value-bind (home-namestring status)
|
|
20 | + (system:get-user-homedir-namestring info-name)
|
|
23 | 21 | (assert-true info-dir)
|
24 | 22 | (assert-true info-name)
|
25 | 23 | |
26 | - (assert-equal home-pathname expected-home-pathname)
|
|
24 | + (assert-equal home-namestring info-dir)
|
|
27 | 25 | (assert-eql status 0)))))
|
28 | 26 | |
29 | 27 | (define-test user-homedir.2
|
... | ... | @@ -33,6 +31,6 @@ |
33 | 31 | ;; value for a user that does not exist. Well, we assume such a
|
34 | 32 | ;; user doesn't exist.
|
35 | 33 | (multiple-value-bind (home-pathname status)
|
36 | - (system:get-user-homedir-pathname "zotuserunknown")
|
|
34 | + (system:get-user-homedir-namestring "zotuserunknown")
|
|
37 | 35 | (assert-eql home-pathname nil)
|
38 | 36 | (assert-eql status 0))) |
... | ... | @@ -111,3 +111,34 @@ |
111 | 111 | test
|
112 | 112 | (assert-equal printed-value (output pathname))
|
113 | 113 | (assert-equal namestring (namestring pathname))))))
|
114 | + |
|
115 | +(define-test issue.266.pathname-tilde.unknown-user
|
|
116 | + (:tag :issues)
|
|
117 | + ;; This assumes that there's no user named "zotunknown".
|
|
118 | + (assert-error 'simple-error (parse-namestring "~zotunknown/*.*")))
|
|
119 | + |
|
120 | +(define-test issue.266.pathname-tilde.1
|
|
121 | + (:tag :issues)
|
|
122 | + ;; Simple test for ~ in pathnames. Get a directory list using
|
|
123 | + ;; #P"~/*.*". This should produce exactly the same list as the
|
|
124 | + ;; #search-list P"home:*.*".
|
|
125 | + (let ((dir-home (directory #p"home:*.*" :truenamep nil :follow-links nil))
|
|
126 | + (dir-tilde (directory #p"~/*.*" :truenamep nil :follow-links nil)))
|
|
127 | + (assert-equal dir-tilde dir-home)))
|
|
128 | + |
|
129 | +(define-test issue.266.pathname-tilde.2
|
|
130 | + (:tag :issues)
|
|
131 | + ;; Simple test for ~ in pathnames. Get a directory list using
|
|
132 | + ;; #P"~user/*.*". This should produce exactly the same list as the
|
|
133 | + ;; #search-list P"home:*.*". We determine the user name via getuid
|
|
134 | + ;; #and getpwuid.
|
|
135 | + (let ((user-name (unix:user-info-name (unix:unix-getpwuid (unix:unix-getuid)))))
|
|
136 | + (assert-true user-name)
|
|
137 | + (let* ((dir-home (directory #p"home:*.*" :truenamep nil :follow-links nil))
|
|
138 | +
|
|
139 | + (dir-tilde (directory (concatenate 'string
|
|
140 | + "~"
|
|
141 | + user-name
|
|
142 | + "/*.*")
|
|
143 | + :truenamep nil :follow-links nil)))
|
|
144 | + (assert-equal dir-tilde dir-home)))) |