            [codewars.java CwRunListener]
            [java.io IOException]))
 
-(defn- compile! [& files]
+(defn- compile!
+  "Compile files using the java compiler"
+  [& files]
   (let [compilation-result
         (-> (ToolProvider/getSystemJavaCompiler)
             ;; TODO: write compilation errors somewhere?

  (let [dir (TempDir/create "java")
        setup (when (not (empty? setup)) (write-code! "java" dir setup))
        solution (write-code! "java" dir solution)
        files (file-names [setup solution])]
    (apply compile! files)
    (-> solution
        :class-name

        fixture (write-code! "java" dir fixture)
        setup (when (not (empty? setup)) (write-code! "java" dir setup))
        solution (write-code! "java" dir solution)
        files (file-names fixture setup solution)]
    (apply compile! files)
    (->> fixture :class-name (load-class dir) run-junit-tests)))
