@@ -32,21 +32,25 @@ def test_block_syntax
3232 end
3333 assert result == COMPILED_ADVANCED
3434 end
35-
35+
3636 def test_jar_and_java_specifiation
37- if !Closure ::Popen ::WINDOWS
38- jar = Dir [ 'vendor/closure-compiler-*.jar' ] . first
39- java = `which java` . strip
40- compiler = Compiler . new ( :java => java , :jar_file => jar )
37+ jar = Dir [ 'vendor/closure-compiler-*.jar' ] . first
38+ unless java = ( `which java` rescue nil )
39+ java = `where java` rescue nil # works on newer windows
40+ end
41+ if java
42+ compiler = Compiler . new ( :java => java . strip , :jar_file => jar )
4143 assert compiler . compress ( ORIGINAL ) == COMPILED_SIMPLE
44+ else
45+ puts "could not `which/where java` skipping test"
4246 end
4347 end
4448
4549 def test_exceptions
46- assert_raises ( Closure ::Error ) do
50+ assert_raise ( Closure ::Error ) do
4751 Compiler . new . compile ( '1++' )
4852 end
49- assert_raises ( Closure ::Error ) do
53+ assert_raise ( Closure ::Error ) do
5054 Compiler . new . compile ( 'obj = [1 2, 3]' )
5155 end
5256 end
@@ -60,4 +64,18 @@ def test_permissions
6064 assert File . executable? ( COMPILER_JAR )
6165 end
6266
67+ def test_serialize_options
68+ options = { 'externs' => 'library1.js' , "compilation_level" => "ADVANCED_OPTIMIZATIONS" }
69+ # ["--externs", "library1.js", "--compilation_level", "ADVANCED_OPTIMIZATIONS"]
70+ # although Hash in 1.8 might change the order to :
71+ # ["--compilation_level", "ADVANCED_OPTIMIZATIONS", "--externs", "library1.js"]
72+ expected_options = options . to_a . map { |arr | [ "--#{ arr [ 0 ] } " , arr [ 1 ] ] } . flatten
73+ assert_equal expected_options , Closure ::Compiler . new . send ( :serialize_options , options )
74+ end
75+
76+ def test_serialize_options_for_arrays
77+ compiler = Closure ::Compiler . new ( 'externs' => [ 'library1.js' , "library2.js" ] )
78+ assert_equal [ "--externs" , "library1.js" , "--externs" , "library2.js" ] , compiler . send ( :serialize_options , 'externs' => [ 'library1.js' , "library2.js" ] )
79+ end
80+
6381end
0 commit comments