Skip to content
This repository has been archived by the owner on Jun 2, 2018. It is now read-only.

Commit

Permalink
Fix test suite.
Browse files Browse the repository at this point in the history
  • Loading branch information
technomancy committed Jun 1, 2009
1 parent f028451 commit dd7a7a4
Show file tree
Hide file tree
Showing 9 changed files with 138 additions and 68 deletions.
1 change: 1 addition & 0 deletions compile.sh
Expand Up @@ -6,6 +6,7 @@ cd `dirname $0`

# Replace ../clojure(-contrib)? with your clojure install location

mkdir -p target/dependency
unzip -u ../clojure/clojure.jar -d target/dependency/
unzip -u ../clojure-contrib/clojure-contrib.jar -d target/dependency/
mkdir -p target/classes
Expand Down
5 changes: 0 additions & 5 deletions pom.xml
Expand Up @@ -18,10 +18,5 @@
<artifactId>clojure-contrib</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
</project>
2 changes: 1 addition & 1 deletion sample/project.clj
Expand Up @@ -3,7 +3,7 @@
:main 'my-sample
:dependencies [["clojure" "1.0.0" "org.clojure"]
;; group defaults to name
["tagsoup" "1.2"]]
["rome" "0.9"]]
:source-dependencies [["clojure-contrib" "r663" :svn
"http://clojure-contrib.googlecode.com/svn/trunk"]
["enlive" "95b2558943f50bb9962fe7d500ede353f1b578f0"
Expand Down
12 changes: 7 additions & 5 deletions src/cork/screw/deps.clj
Expand Up @@ -15,15 +15,17 @@ could refer to a jar file or a directory of the unpacked project."
#(% 2))

(defn copy-dependency [dep-file root]
(println "Copying source for: " dep-file)
(println "Copying source for:" dep-file)
;; TODO: write cp -r in Clojure
(doseq [dir (.list (file "/src/" dep-file))]
(sh "cp" "-r" dir root)))
(doseq [dir (.listFiles (file dep-file "src/"))]
(sh "cp" "-r" (.getAbsolutePath dir) root)))

(defn handle-project-dependencies [project]
(println "Handling dependencies for" (:name project) "in" (:root project))
(.mkdirs (file (:root project) "target" "dependency"))
(maven/handle-dependencies project)
(doseq [dependency (:source-dependencies project)]
(println "Handling: " dependency)
(doseq [dependency (or (:source-dependencies project) [])]
(println "Handling source:" dependency)
(copy-dependency (fetch-source-dependency dependency)
(str (:root project) "/target/dependency/"))))

Expand Down
11 changes: 6 additions & 5 deletions src/cork/screw/deps/git.clj
@@ -1,14 +1,15 @@
(ns cork.screw.deps.git
(:use [clojure.contrib.shell-out]
(:use [clojure.contrib shell-out java-utils]
[cork.screw utils]))

(defmethod cork.screw.deps/fetch-source-dependency :git
[[name version type url]]
(let [dir (str cork.screw.deps/corkscrew-dir "/git/" name)]
(let [git-dir (str cork.screw.deps/corkscrew-dir "/git/")
dir (str git-dir name)]
(when (or cork.screw.deps/*force-fetch*
(not (.exists (java.io.File. dir))))
(.mkdirs (java.io.File. dir))
(with-sh-dir dir
(not (.exists (file dir))))
(.mkdirs (file git-dir))
(with-sh-dir git-dir
(sh "git" "clone" url)
(sh "git" "checkout" version)))
dir))
53 changes: 28 additions & 25 deletions src/cork/screw/deps/maven.clj
Expand Up @@ -12,35 +12,38 @@

(defn pom-for
"A tree structure representing the project's POM for XML conversion."
[name version group dependencies]
{:tag :project
:attrs {:xmlns "http://maven.apache.org/POM/4.0.0"
:xmlns:xsi "http://www.w3.org/2001/XMLSchema-instance"
:xsi:schemaLocation "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"}
:content [{:tag :modelVersion :content ["4.0.0"]}
{:tag :parent
:content [{:tag :artifactId :content ["clojure-pom"]}
{:tag :groupId :content ["org.clojure"]}
{:tag :version :content ["1.0-SNAPSHOT"]}]}
{:tag :artifactId :content [name]}
{:tag :name :content [name]}
{:tag :groupId :content [group]}
{:tag :version :content [version]}
{:tag :dependencies
:content (map dependency-xml dependencies)}]})
[project]
(let [name (:name project)
version (:version project)
group (or (:group project) (:name project))
dependencies (:dependencies project)]
{:tag :project
:attrs {:xmlns "http://maven.apache.org/POM/4.0.0"
:xmlns:xsi "http://www.w3.org/2001/XMLSchema-instance"
:xsi:schemaLocation (str "http://maven.apache.org/POM/4.0.0 "
"http://maven.apache.org/xsd/maven-4.0.0.xsd")}
:content [{:tag :modelVersion :content ["4.0.0"]}
{:tag :parent
:content [{:tag :artifactId :content ["clojure-pom"]}
{:tag :groupId :content ["org.clojure"]}
{:tag :version :content ["1.0-SNAPSHOT"]}]}
{:tag :artifactId :content [name]}
{:tag :name :content [name]}
{:tag :groupId :content [group]}
{:tag :version :content [version]}
{:tag :dependencies
:content (map dependency-xml dependencies)}]}))

(defn write-pom [project]
(binding [*out* (writer (str (:root project) "/pom.xml"))
println print]
(xml/emit (pom-for (:name project)
(:version project)
(or (:group project) (:name project))
(:dependencies project)))
(xml/emit (pom-for project))
(flush)))

(defn handle-dependencies [project]
(try
(write-pom project)
(with-sh-dir (:root project)
(sh "mvn" "process-resources"))
(finally (.delete (java.io.File. (str (:root project) "/pom.xml"))))))
(when-not (empty? (:dependencies project))
(try
(write-pom project)
(with-sh-dir (:root project)
(sh "mvn" "process-resources"))
(finally (.delete (java.io.File. (str (:root project) "/pom.xml")))))))
2 changes: 1 addition & 1 deletion src/cork/screw/utils.clj
Expand Up @@ -37,4 +37,4 @@
[filename]
(let [file (java.io.File. filename)]
(assoc (read-string (slurp (.getAbsolutePath file)))
:root (.getParent file))))
:root (.getAbsolutePath (.getParentFile file)))))
55 changes: 29 additions & 26 deletions test/cork/screw/test/deps.clj
Expand Up @@ -3,21 +3,11 @@
[cork.screw utils] :reload-all)
(:use [clojure.contrib test-is with-ns java-utils]))

(require 'cork.screw.deps.svn)
(require 'cork.screw.deps.http)

(with-ns 'cork.screw.deps
(def corkscrew-dir "/tmp/corkscrew/"))
(def corkscrew-dir "/tmp/corkscrew/"))

(def project-dir "/tmp/corkscrew-project")

(defn sample-project [& deps]
{:name "my-sample"
:version "1.0"
:main 'nom.nom.nom
:root project-dir
:dependencies deps})

(defn cleanup-dirs [f]
(.mkdirs (java.io.File. corkscrew-dir))
(.mkdirs (java.io.File. project-dir))
Expand All @@ -29,20 +19,33 @@

(use-fixtures :each cleanup-dirs)

(deftest test-handle-http-deps
(let [project (sample-project
["clojure" "1.1-SNAPSHOT" :http
"http://p.hagelb.org/clojure.jar"])]
(deftest test-handle-svn-deps
(let [project {:name "my-sample"
:version "1.0"
:main 'nom.nom.nom
:root project-dir
:source-dependencies [["clojure-contrib" "r150" :svn
"http://clojure-contrib.googlecode.com/svn/trunk"]]}]
(.mkdirs (java.io.File. (:root project)))
(handle-project-dependencies project)
(is (= '("def.clj" "duck_streams.clj" "enum.clj" "except.clj" "fcase.clj" "gen_interface.clj"
"import_static.clj" "javalog.clj" "lazy_seqs.clj" "lib.clj" "memoize.clj" "mmap.clj"
"ns_utils.clj" "pred.clj" "seq_utils.clj" "sql.clj" "str_utils.clj" "string.clj"
"test_is.clj" "trace.clj" "xml.clj" "zip_filter.clj")
(map #(.getName %) (sort (filter #(re-find #"\.clj$" (.getName %))
(file-seq (file project-dir)))))))))

(deftest test-handle-git-deps
(let [project {:name "my-sample"
:version "1.0"
:main 'nom.nom.nom
:root project-dir
:source-dependencies [["enlive" "95b2558943f50bb9962fe7d500ede353f1b578f0"
:git "git://github.com/cgrand/enlive.git"]]}]
(.mkdirs (java.io.File. (:root project)))
(handle-project-dependencies project)
(let [files (file-seq (file (:root project) "target" "dependency"))]
(doseq [clj-file ["META_INF" "core.clj" "main.clj" "core_print.clj"
"my_core.clj" "xml.clj" "zip.clj" "inspector.clj"
"set.clj" "parallel.clj" "core_proxy.clj" "genclass.clj"]]
(is (some #(.contains % clj-file) files))))))
(is (= '("enlive_html.clj" "examples-with-ring.clj" "examples.clj" "state_machine.clj"
"insertion_point.clj" "xml.clj")
(map #(.getName %) (sort (filter #(re-find #"\.clj$" (.getName %))
(file-seq (file project-dir)))))))))

;; (deftest test-handle-svn-deps
;; (let [project (sample-project
;; ["clojure" "r1343" :svn
;; "http://clojure.googlecode.com/svn/trunk"])]
;; (handle-project-dependencies project)
;; (is (= () (file-seq (file project-dir "target" "dependency"))))))
65 changes: 65 additions & 0 deletions test/cork/screw/test/maven.clj
@@ -0,0 +1,65 @@
(ns cork.screw.test.maven
(:use [cork.screw.deps.maven] :recload-all)
(:use [clojure.contrib test-is]
[clojure.xml]))

(deftest test-pom
(is (= "<?xml version='1.0' encoding='UTF-8'?>
<project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd'>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<artifactId>
clojure-pom
</artifactId>
<groupId>
org.clojure
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<artifactId>
my-sample
</artifactId>
<name>
my-sample
</name>
<groupId>
my-sample
</groupId>
<version>
1.0
</version>
<dependencies>
<dependency>
<artifactId>
clojure
</artifactId>
<groupId>
org.clojure
</groupId>
<version>
1.0.0
</version>
</dependency>
<dependency>
<artifactId>
tagsoup
</artifactId>
<groupId>
tagsoup
</groupId>
<version>
1.2
</version>
</dependency>
</dependencies>
</project>
" (with-out-str
(emit (pom-for {:name "my-sample"
:version "1.0"
:main 'my-sample
:dependencies [["clojure" "1.0.0" "org.clojure"]
["tagsoup" "1.2"]]}))))))

0 comments on commit dd7a7a4

Please sign in to comment.