Skip to content

Commit 2728d6f

Browse files
committed
Fix a Cannot open <nil> as a Reader
Closes #149
1 parent 95594b4 commit 2728d6f

File tree

3 files changed

+18
-7
lines changed

3 files changed

+18
-7
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
### Bugs fixed
66

7-
* Fix a NullPointerException in `orchard.cljs.analysis`.
7+
* Fix a NullPointerException in `orchard.cljs.analysis`.
8+
* Fix a `Cannot open <nil> as a Reader`.
89

910
## 0.9.0 (2022-01-10)
1011

src/orchard/namespace.clj

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,22 @@
103103
;; These methods search sources on the classpath. Non-classpath source
104104
;; files, documentation code, etc within the project directory are ignored.
105105

106+
(defn jvm-clojure-resource-name->ns-name
107+
"Given a .clj or .clj `resource-name`, returns its namespace name."
108+
[resource-name]
109+
(when (misc/clj-file? resource-name)
110+
(some-> resource-name
111+
io/resource ;; can return nil for Emacs backup files, for example
112+
read-namespace)))
113+
106114
(defn classpath-namespaces
107115
"Returns all namespaces defined in sources on the classpath or the specified
108116
classpath URLs."
109117
([classpath-urls]
110118
(->> classpath-urls
111119
(pmap cp/classpath-seq)
112120
(apply concat)
113-
(pmap (fn [x]
114-
(when (misc/clj-file? x)
115-
x)))
116-
(filter identity)
117-
(pmap (comp read-namespace io/resource))
121+
(pmap jvm-clojure-resource-name->ns-name)
118122
(filter identity)
119123
(sort)))
120124
([]

test/orchard/namespace_test.clj

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
(:require
33
[clojure.java.io :as io]
44
[clojure.string :as str]
5-
[clojure.test :refer [deftest is testing]]
5+
[clojure.test :refer [are deftest is testing]]
66
[orchard.misc :as misc]
77
[orchard.namespace :as sut]))
88

@@ -86,3 +86,9 @@
8686
(is (= nses (map (comp sut/read-namespace ; src -> ns
8787
sut/canonical-source) ; ns -> src
8888
nses)))))))
89+
90+
(deftest jvm-clojure-resource-name->ns-name
91+
(are [input expected] (= expected
92+
(sut/jvm-clojure-resource-name->ns-name input))
93+
"orchard/namespace_test.clj" 'orchard.namespace-test
94+
"orchard/namespace_teeest.clj" nil))

0 commit comments

Comments
 (0)