diff --git a/test/leiningen/test/helper.clj b/test/leiningen/test/helper.clj index 5bc56755..be0736e8 100644 --- a/test/leiningen/test/helper.clj +++ b/test/leiningen/test/helper.clj @@ -40,6 +40,8 @@ (def bad-require-project (read-test-project "bad-require")) +(def java-main-project (read-test-project "java-main")) + (defn abort-msg "Catches main/abort thrown by calling f on its args and returns its error message." diff --git a/test/leiningen/test/run.clj b/test/leiningen/test/run.clj index 9b9f1c1a..05651332 100644 --- a/test/leiningen/test/run.clj +++ b/test/leiningen/test/run.clj @@ -1,18 +1,18 @@ (ns leiningen.test.run - (:require [leiningen.core.project :as project]) + (:require [leiningen.core.project :as project] + [leiningen.javac] + [clojure.java.io :as io] + [leiningen.test.helper :as helper + :refer [bad-require-project tmp-dir tricky-name-project + java-main-project]]) (:use [clojure.test] - [clojure.java.io :only [delete-file]] - ;; [leiningen.javac :only [javac]] - [leiningen.run] - [leiningen.test.helper :only [bad-require-project - tmp-dir - tricky-name-project]])) + [leiningen.run])) (def out-file (format "%s/lein-test" tmp-dir)) (use-fixtures :each (fn [f] (f) - (delete-file out-file :silently))) + (io/delete-file out-file :silently))) (deftest test-basic (run tricky-name-project "/unreadable") @@ -40,7 +40,8 @@ (is (re-find #"FileNotFoundException" e-msg)) (is (re-find #"this/namespace/does/not/exist.clj" e-msg))))) -;; TODO: re-enable -;; (deftest test-run-java-main -;; (javac dev-deps-project) -;; (run dev-deps-project)) +(deftest test-run-java-main + (leiningen.javac/javac java-main-project) + (let [out-result (with-out-str (run java-main-project))] + (is (= (.trim out-result) ;; To avoid os-specific newline handling + "Hello from Java!")))) diff --git a/test_projects/java-main/.gitignore b/test_projects/java-main/.gitignore new file mode 100644 index 00000000..e04714ba --- /dev/null +++ b/test_projects/java-main/.gitignore @@ -0,0 +1,9 @@ +/target +/classes +/checkouts +pom.xml +pom.xml.asc +*.jar +*.class +/.lein-* +/.nrepl-port diff --git a/test_projects/java-main/project.clj b/test_projects/java-main/project.clj new file mode 100644 index 00000000..a0d196e4 --- /dev/null +++ b/test_projects/java-main/project.clj @@ -0,0 +1,4 @@ +(defproject java-main "0.1.0-SNAPSHOT" + :java-source-paths ["src/java"] + :dependencies [[org.clojure/clojure "1.5.1"]] ;; lein run errors if not there. + :main my.java.Main) diff --git a/test_projects/java-main/src/java/my/java/Main.java b/test_projects/java-main/src/java/my/java/Main.java new file mode 100644 index 00000000..6ef5576c --- /dev/null +++ b/test_projects/java-main/src/java/my/java/Main.java @@ -0,0 +1,7 @@ +package my.java; + +public class Main { + public static void main(String[] args) { + System.out.println("Hello from Java!"); + } +}