Estoy probando el comportamiento de audio y necesito que el usuario juzgue si las cosas pasan o no. Me gustaría pedirle al usuario una respuesta dentro de una prueba de Leiningen. Pero, hay algo que sucede para leer, línea que impide esto.clojure read-line falla dentro de la prueba de Leiningen
Este es un código de ejemplo de prueba después de la creación de un nuevo proyecto con clojure "Lein nueva foo" y la edición del foo/test/archivo foo/core_test.clj:
(ns foo.core-test
(:use clojure.test
foo.core))
(deftest a-test
(testing "FIXME, what a fail."
(let [_ (println "enter something")
yn (read-line)]
(println yn)
(is (= yn "y")))))
y esto es lo que sucede en una "lein test"
lein test foo.core-test
enter something
hi
there
what
is
going on?
^C
solo control-C detiene la llamada (línea de lectura).
estoy usando Clojure 1.4.0 y 2.0.0 Leiningen-preview7 en Java 1.6.0_35 de Java HotSpot (TM) de 64 bits del servidor VM
¿Alguna idea sobre cómo conseguir leer línea a trabajar en el interior ¿una prueba?
También debo señalar que (línea de leer) no funciona bien dentro "Lein repl" para mí ...
> lein repl
nREPL server started on port 54398
REPL-y 0.1.0-beta8
Clojure 1.4.0
Exit: Control+D or (exit) or (quit)
Commands: (user/help)
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
(user/sourcery function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Examples from clojuredocs.org: [clojuredocs or cdoc]
(user/clojuredocs name-here)
(user/clojuredocs "ns-here" "name-here")
user=> (println (read-line))
hi
hi
nil
user=> (read-line)
ho
"ho"
ACTUALIZACIÓN:
voy a dar la victoria @DaoWen en este. Leyendo los enlaces & buscando en Google, stdin solo se usa en leiningen. Con suficiente salto de aro, quizás podría resolver esto, pero la sugerencia de un cuadro de diálogo me parece el mejor camino a seguir. Dejar caer un código de prueba aquí solo para completar en caso de que esto ayude a otros.
(ns foo.core-test
(:use clojure.test
foo.core))
(import 'javax.swing.JOptionPane)
(defn ask-yn
"return 0 on pass, 1 on fail"
[prompt]
(JOptionPane/showConfirmDialog nil prompt "User Input" JOptionPane/YES_NO_OPTION))
(deftest a-test
(testing "a-test"
(let [yn (ask-yn "did a-test pass?")]
(is (= yn 0)))))
(deftest b-test
(testing "b-test"
(let [yn (ask-yn "did b-test pass?")]
(is (= yn 0)))))
¿Duplicado? http://stackoverflow.com/questions/7707558/clojure-read-line-doesnt-wait-for-input – noahlz
¿Quizás lo ejecute como 'lein trampoline repl'? – Bill
lein resultados de la prueba de trampolín en "Las pruebas no terminaron limpiamente". y ninguna solicitud de entrada. (nota, lein repl ya funciona para mí) –