File: core_test.clj

package info (click to toggle)
cpath-clojure 0.1.2-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 144 kB
  • sloc: makefile: 20; sh: 2
file content (43 lines) | stat: -rw-r--r-- 2,075 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
(ns cpath-clj.core-test
  (:require [midje.sweet :refer :all]
            [cpath-clj.core :as cp])
  (:import [java.io File]
           [java.net URL]))

(fact "about resources on the classpath"
      (let [r (cp/resources)]
        (set (keys r)) => #{"/test.txt"
                            "/cpath_clj/core.clj"
                            "/cpath_clj/core_test.clj"}
        (dissoc r "/test.txt") => (has every? #(= (count %) 1))
        (count (r "/test.txt")) => 2
        (map slurp (r "/test.txt")) => (has every? #{"Hello World!\n"})))

(let [jar-file (File. "test-resources/test.jar")
      jar-url (.toURL (.toURI jar-file))]
  (fact "about all resources inside of a JAR"
        (let [all-jar-resources (->> (URL. (str "jar:" jar-url "!/"))
                                     (cp/resources))]
          (count all-jar-resources) => 3
          (set (keys all-jar-resources)) => #{"/META-INF/MANIFEST.MF" "/a.txt" "/b.txt"}
          (vals all-jar-resources) => (has every? #(= (count %) 1))
          (slurp (first (all-jar-resources "/a.txt"))) => "a\n"
          (slurp (first (all-jar-resources "/b.txt"))) => "b\n"))
  (fact "about subdirectories in a JAR"
        (let [meta-resources (->> (URL. (str "jar:" jar-url "!/META-INF"))
                                  (cp/resources))]
          (count meta-resources) => 1
          (set (keys meta-resources)) => #{"/MANIFEST.MF"}
          (vals meta-resources) => (has every? #(= (count %) 1)))))

(fact "about resources given as java.io.File objects"
      (let [file-resources (cp/resources (File. "test-resources/test.jar"))]
        (count file-resources) => 1
        (key (first file-resources)) => "/test.jar"
        (count (val (first file-resources))) => 1)
      (let [dir-resources (cp/resources (File. "test-resources"))]
        (count dir-resources) => 3
        (set (keys dir-resources)) => #{"/test.jar"
                                        "/test1/test.txt"
                                        "/test2/test.txt"}
          (vals dir-resources) => (has every? #(= (count %) 1))))