mirah 0.0.10-java → 0.0.11-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +44 -0
- data/README.txt +12 -7
- data/Rakefile +13 -12
- data/examples/SortClosure$__xform_tmp_1.class +0 -0
- data/examples/SortClosure$__xform_tmp_2.class +0 -0
- data/examples/SortClosure.class +0 -0
- data/examples/macros/StringEachChar$Extension1.class +0 -0
- data/javalib/mirah-bootstrap.jar +0 -0
- data/lib/mirah/appengine_tasks.rb +8 -6
- data/lib/mirah/ast/flow.rb +3 -3
- data/lib/mirah/ast/structure.rb +23 -2
- data/lib/mirah/commands/base.rb +5 -2
- data/lib/mirah/commands/base.rb~ +57 -0
- data/lib/mirah/commands/run.rb +15 -8
- data/lib/mirah/jvm/compiler/java_source.rb +15 -11
- data/lib/mirah/jvm/method_lookup.rb~ +247 -0
- data/lib/mirah/jvm/types/bitescript_ext.rb +41 -0
- data/lib/mirah/jvm/types/boolean.rb +33 -0
- data/lib/mirah/jvm/types/factory.rb +43 -3
- data/lib/mirah/jvm/types/integers.rb +1 -14
- data/lib/mirah/jvm/types/intrinsics.rb +1 -14
- data/lib/mirah/jvm/types/source_mirror.rb +6 -3
- data/lib/mirah/parser.rb +2 -6
- data/lib/mirah/transform/transformer.rb +2 -0
- data/lib/mirah/util/argument_processor.rb +33 -12
- data/lib/mirah/util/class_loader.rb +7 -2
- data/lib/mirah/util/compilation_state.rb +8 -0
- data/lib/mirah/version.rb +1 -1
- data/lib/mirah/version.rb~ +18 -0
- data/test/core/{test_ast.rb → ast_test.rb} +5 -1
- data/test/core/{test_commands.rb → commands_test.rb} +29 -2
- data/test/core/{test_compilation.rb → compilation_test.rb} +2 -2
- data/test/core/{test_env.rb → env_test.rb} +2 -2
- data/test/core/{test_macros.rb → macros_test.rb} +2 -2
- data/test/core/{test_typer.rb → typer_test.rb} +1 -1
- data/test/core/util/argument_processor_test.rb +64 -0
- data/test/core/util/class_loader_test.rb +31 -0
- data/test/fixtures/my.properties +0 -0
- data/test/fixtures/org/foo/A.class +0 -0
- data/test/jvm/{test_annotations.rb → annotations_test.rb} +2 -2
- data/test/jvm/blocks_test.rb +262 -0
- data/test/jvm/bytecode_test_helper.rb +1 -33
- data/test/jvm/constructors_test.rb +110 -0
- data/test/jvm/{test_enumerable.rb → enumerable_test.rb} +2 -2
- data/test/jvm/factory_test.rb +22 -0
- data/test/jvm/{test_java_typer.rb → java_typer_test.rb} +1 -1
- data/test/jvm/jvm_compiler_test.rb +2162 -0
- data/test/jvm/{test_jvm_compiler.rb → jvm_compiler_test.rb~} +43 -220
- data/test/jvm/{test_macros.rb → macros_test.rb} +2 -2
- data/test/jvm/{test_main_method.rb → main_method_test.rb} +2 -2
- data/test/jvm/{test_rescue.rb → rescue_test.rb} +33 -2
- data/test/plugins/{test_gwt.rb → gwt_test.rb} +2 -2
- data/test/test_helper.rb +40 -0
- metadata +33 -33
- data/test/jvm/test_blocks.rb +0 -62
| @@ -13,7 +13,7 @@ | |
| 13 13 | 
             
            # See the License for the specific language governing permissions and
         | 
| 14 14 | 
             
            # limitations under the License.
         | 
| 15 15 |  | 
| 16 | 
            -
            class  | 
| 16 | 
            +
            class JVMCompilerTest < Test::Unit::TestCase
         | 
| 17 17 | 
             
              def assert_raise_java(type, message="")
         | 
| 18 18 | 
             
                ex = assert_raise(NativeException) do
         | 
| 19 19 | 
             
                  yield
         | 
| @@ -345,14 +345,6 @@ class TestJVMCompiler < Test::Unit::TestCase | |
| 345 345 | 
             
                assert_equal("Hello World!", output)
         | 
| 346 346 | 
             
              end
         | 
| 347 347 |  | 
| 348 | 
            -
              def test_constructor
         | 
| 349 | 
            -
                cls, = compile(
         | 
| 350 | 
            -
                    "class InitializeTest;def initialize;puts 'Constructed';end;end")
         | 
| 351 | 
            -
                assert_output("Constructed\n") do
         | 
| 352 | 
            -
                  cls.new
         | 
| 353 | 
            -
                end
         | 
| 354 | 
            -
              end
         | 
| 355 | 
            -
             | 
| 356 348 | 
             
              def test_method
         | 
| 357 349 | 
             
                # TODO auto generate a constructor
         | 
| 358 350 | 
             
                cls, = compile(
         | 
| @@ -1396,57 +1388,6 @@ class TestJVMCompiler < Test::Unit::TestCase | |
| 1396 1388 | 
             
                assert_equal([nil, "x", nil], f.a.to_a)
         | 
| 1397 1389 | 
             
              end
         | 
| 1398 1390 |  | 
| 1399 | 
            -
              def test_constructor_chaining
         | 
| 1400 | 
            -
                foo, = compile(<<-EOF)
         | 
| 1401 | 
            -
                  class Foo5
         | 
| 1402 | 
            -
                    def initialize(s:String)
         | 
| 1403 | 
            -
                      initialize(s, "foo")
         | 
| 1404 | 
            -
                    end
         | 
| 1405 | 
            -
             | 
| 1406 | 
            -
                    def initialize(s:String, f:String)
         | 
| 1407 | 
            -
                      @s = s
         | 
| 1408 | 
            -
                      @f = f
         | 
| 1409 | 
            -
                    end
         | 
| 1410 | 
            -
             | 
| 1411 | 
            -
                    def f
         | 
| 1412 | 
            -
                      @f
         | 
| 1413 | 
            -
                    end
         | 
| 1414 | 
            -
             | 
| 1415 | 
            -
                    def s
         | 
| 1416 | 
            -
                      @s
         | 
| 1417 | 
            -
                    end
         | 
| 1418 | 
            -
                  end
         | 
| 1419 | 
            -
                EOF
         | 
| 1420 | 
            -
             | 
| 1421 | 
            -
                instance = foo.new("S")
         | 
| 1422 | 
            -
                assert_equal("S", instance.s)
         | 
| 1423 | 
            -
                assert_equal("foo", instance.f)
         | 
| 1424 | 
            -
             | 
| 1425 | 
            -
                instance = foo.new("foo", "bar")
         | 
| 1426 | 
            -
                assert_equal("foo", instance.s)
         | 
| 1427 | 
            -
                assert_equal("bar", instance.f)
         | 
| 1428 | 
            -
              end
         | 
| 1429 | 
            -
             | 
| 1430 | 
            -
              def test_super_constructor
         | 
| 1431 | 
            -
                sc_a, sc_b = compile(<<-EOF)
         | 
| 1432 | 
            -
                  class SC_A
         | 
| 1433 | 
            -
                    def initialize(a:int)
         | 
| 1434 | 
            -
                      puts "A"
         | 
| 1435 | 
            -
                    end
         | 
| 1436 | 
            -
                  end
         | 
| 1437 | 
            -
             | 
| 1438 | 
            -
                  class SC_B < SC_A
         | 
| 1439 | 
            -
                    def initialize
         | 
| 1440 | 
            -
                      super(0)
         | 
| 1441 | 
            -
                      puts "B"
         | 
| 1442 | 
            -
                    end
         | 
| 1443 | 
            -
                  end
         | 
| 1444 | 
            -
                EOF
         | 
| 1445 | 
            -
             | 
| 1446 | 
            -
                assert_output("A\nB\n") do
         | 
| 1447 | 
            -
                  sc_b.new
         | 
| 1448 | 
            -
                end
         | 
| 1449 | 
            -
              end
         | 
| 1450 1391 |  | 
| 1451 1392 | 
             
              def test_literal_array
         | 
| 1452 1393 | 
             
                cls, = compile(<<-EOF)
         | 
| @@ -1503,15 +1444,6 @@ class TestJVMCompiler < Test::Unit::TestCase | |
| 1503 1444 | 
             
                assert_equal java.lang.String.java_class.array_class, cls.split.class.java_class
         | 
| 1504 1445 | 
             
              end
         | 
| 1505 1446 |  | 
| 1506 | 
            -
              def test_empty_constructor
         | 
| 1507 | 
            -
                foo, = compile(<<-EOF)
         | 
| 1508 | 
            -
                  class Foo6
         | 
| 1509 | 
            -
                    def initialize; end
         | 
| 1510 | 
            -
                  end
         | 
| 1511 | 
            -
                EOF
         | 
| 1512 | 
            -
                foo.new
         | 
| 1513 | 
            -
              end
         | 
| 1514 | 
            -
             | 
| 1515 1447 | 
             
              def test_same_field_name
         | 
| 1516 1448 | 
             
                cls, = compile(<<-EOF)
         | 
| 1517 1449 | 
             
                  class A1
         | 
| @@ -1546,15 +1478,6 @@ class TestJVMCompiler < Test::Unit::TestCase | |
| 1546 1478 | 
             
                assert !obj.equals(cls.new)
         | 
| 1547 1479 | 
             
              end
         | 
| 1548 1480 |  | 
| 1549 | 
            -
              def test_inexact_constructor
         | 
| 1550 | 
            -
                # FIXME: this is a stupid test
         | 
| 1551 | 
            -
                cls, = compile(
         | 
| 1552 | 
            -
                    "class EmptyEmpty; def self.empty_empty; t = Thread.new(Thread.new); t.start; begin; t.join; rescue InterruptedException; end; puts 'ok'; end; end")
         | 
| 1553 | 
            -
                assert_output("ok\n") do
         | 
| 1554 | 
            -
                  cls.empty_empty
         | 
| 1555 | 
            -
                end
         | 
| 1556 | 
            -
              end
         | 
| 1557 | 
            -
             | 
| 1558 1481 | 
             
              def test_method_lookup_with_overrides
         | 
| 1559 1482 | 
             
                cls, = compile(<<-EOF)
         | 
| 1560 1483 | 
             
                  class Bar; implements Runnable
         | 
| @@ -1570,132 +1493,6 @@ class TestJVMCompiler < Test::Unit::TestCase | |
| 1570 1493 | 
             
                # It shouldn't get confused by the Thread(String) constructor.
         | 
| 1571 1494 | 
             
              end
         | 
| 1572 1495 |  | 
| 1573 | 
            -
              def test_block
         | 
| 1574 | 
            -
                cls, = compile(<<-EOF)
         | 
| 1575 | 
            -
                  thread = Thread.new do
         | 
| 1576 | 
            -
                    puts "Hello"
         | 
| 1577 | 
            -
                  end
         | 
| 1578 | 
            -
                  begin
         | 
| 1579 | 
            -
                    thread.run
         | 
| 1580 | 
            -
                    thread.join
         | 
| 1581 | 
            -
                  rescue
         | 
| 1582 | 
            -
                    puts "Uh Oh!"
         | 
| 1583 | 
            -
                  end
         | 
| 1584 | 
            -
                EOF
         | 
| 1585 | 
            -
                assert_output("Hello\n") do
         | 
| 1586 | 
            -
                  cls.main([].to_java :string)
         | 
| 1587 | 
            -
                end
         | 
| 1588 | 
            -
             | 
| 1589 | 
            -
                script, cls = compile(<<-EOF)
         | 
| 1590 | 
            -
                  import java.util.Observable
         | 
| 1591 | 
            -
                  class MyObservable < Observable
         | 
| 1592 | 
            -
                    def initialize
         | 
| 1593 | 
            -
                      super
         | 
| 1594 | 
            -
                      setChanged
         | 
| 1595 | 
            -
                    end
         | 
| 1596 | 
            -
                  end
         | 
| 1597 | 
            -
             | 
| 1598 | 
            -
                  o = MyObservable.new
         | 
| 1599 | 
            -
                  o.addObserver {|x, a| puts a}
         | 
| 1600 | 
            -
                  o.notifyObservers("Hello Observer")
         | 
| 1601 | 
            -
                EOF
         | 
| 1602 | 
            -
                assert_output("Hello Observer\n") do
         | 
| 1603 | 
            -
                  script.main([].to_java :string)
         | 
| 1604 | 
            -
                end
         | 
| 1605 | 
            -
             | 
| 1606 | 
            -
                cls, = compile(<<-EOF)
         | 
| 1607 | 
            -
                  def foo
         | 
| 1608 | 
            -
                    a = "Hello"
         | 
| 1609 | 
            -
                    thread = Thread.new do
         | 
| 1610 | 
            -
                      puts a
         | 
| 1611 | 
            -
                    end
         | 
| 1612 | 
            -
                    begin
         | 
| 1613 | 
            -
                      a = a + " Closures"
         | 
| 1614 | 
            -
                      thread.run
         | 
| 1615 | 
            -
                      thread.join
         | 
| 1616 | 
            -
                    rescue
         | 
| 1617 | 
            -
                      puts "Uh Oh!"
         | 
| 1618 | 
            -
                    end
         | 
| 1619 | 
            -
                    return
         | 
| 1620 | 
            -
                  end
         | 
| 1621 | 
            -
                EOF
         | 
| 1622 | 
            -
                assert_output("Hello Closures\n") do
         | 
| 1623 | 
            -
                  cls.foo
         | 
| 1624 | 
            -
                end
         | 
| 1625 | 
            -
             | 
| 1626 | 
            -
                cls, = compile(<<-EOF)
         | 
| 1627 | 
            -
                  def run(x:Runnable)
         | 
| 1628 | 
            -
                    x.run
         | 
| 1629 | 
            -
                  end
         | 
| 1630 | 
            -
                  def foo
         | 
| 1631 | 
            -
                    a = 1
         | 
| 1632 | 
            -
                    run {a += 1}
         | 
| 1633 | 
            -
                    a
         | 
| 1634 | 
            -
                  end
         | 
| 1635 | 
            -
                EOF
         | 
| 1636 | 
            -
                assert_equal(2, cls.foo)
         | 
| 1637 | 
            -
              end
         | 
| 1638 | 
            -
             | 
| 1639 | 
            -
              def test_block_with_method_def
         | 
| 1640 | 
            -
                cls, = compile(<<-EOF)
         | 
| 1641 | 
            -
                  import java.util.ArrayList
         | 
| 1642 | 
            -
                  import java.util.Collections
         | 
| 1643 | 
            -
                  list = ArrayList.new(["a", "ABC", "Cats", "b"])
         | 
| 1644 | 
            -
                  Collections.sort(list) do
         | 
| 1645 | 
            -
                    def equals(a:Object, b:Object)
         | 
| 1646 | 
            -
                      String(a).equalsIgnoreCase(String(b))
         | 
| 1647 | 
            -
                    end
         | 
| 1648 | 
            -
                    def compare(a:Object, b:Object)
         | 
| 1649 | 
            -
                      String(a).compareToIgnoreCase(String(b))
         | 
| 1650 | 
            -
                    end
         | 
| 1651 | 
            -
                  end
         | 
| 1652 | 
            -
                  list.each {|x| puts x}
         | 
| 1653 | 
            -
                EOF
         | 
| 1654 | 
            -
             | 
| 1655 | 
            -
                assert_output("a\nABC\nb\nCats\n") do
         | 
| 1656 | 
            -
                  cls.main(nil)
         | 
| 1657 | 
            -
                end
         | 
| 1658 | 
            -
              end
         | 
| 1659 | 
            -
             | 
| 1660 | 
            -
              def test_block_with_abstract_from_object
         | 
| 1661 | 
            -
                # Comparator interface also defines equals(Object) as abstract,
         | 
| 1662 | 
            -
                # but it can be inherited from Object. We test that here.
         | 
| 1663 | 
            -
                cls, = compile(<<-EOF)
         | 
| 1664 | 
            -
                  import java.util.ArrayList
         | 
| 1665 | 
            -
                  import java.util.Collections
         | 
| 1666 | 
            -
                  list = ArrayList.new(["a", "ABC", "Cats", "b"])
         | 
| 1667 | 
            -
                  Collections.sort(list) do |a, b|
         | 
| 1668 | 
            -
                    String(a).compareToIgnoreCase(String(b))
         | 
| 1669 | 
            -
                  end
         | 
| 1670 | 
            -
                  list.each {|x| puts x}
         | 
| 1671 | 
            -
                EOF
         | 
| 1672 | 
            -
             | 
| 1673 | 
            -
                assert_output("a\nABC\nb\nCats\n") do
         | 
| 1674 | 
            -
                  cls.main(nil)
         | 
| 1675 | 
            -
                end
         | 
| 1676 | 
            -
              end
         | 
| 1677 | 
            -
              
         | 
| 1678 | 
            -
              def test_block_with_no_arguments_and_return_value
         | 
| 1679 | 
            -
                cls, = compile(<<-EOF)
         | 
| 1680 | 
            -
                  import java.util.concurrent.Callable
         | 
| 1681 | 
            -
                  def foo c:Callable
         | 
| 1682 | 
            -
                    throws Exception
         | 
| 1683 | 
            -
                     puts c.call
         | 
| 1684 | 
            -
                  end
         | 
| 1685 | 
            -
                  begin
         | 
| 1686 | 
            -
                  foo do
         | 
| 1687 | 
            -
                    "an object"
         | 
| 1688 | 
            -
                  end
         | 
| 1689 | 
            -
                  rescue
         | 
| 1690 | 
            -
                    puts "never get here"
         | 
| 1691 | 
            -
                  end
         | 
| 1692 | 
            -
                EOF
         | 
| 1693 | 
            -
                assert_output("an object\n") do
         | 
| 1694 | 
            -
                  cls.main(nil)
         | 
| 1695 | 
            -
                end
         | 
| 1696 | 
            -
              end
         | 
| 1697 | 
            -
             | 
| 1698 | 
            -
             | 
| 1699 1496 | 
             
              def test_optional_args
         | 
| 1700 1497 | 
             
                cls, = compile(<<-EOF)
         | 
| 1701 1498 | 
             
                  def foo(a:int, b:int = 1, c:int = 2)
         | 
| @@ -1854,6 +1651,15 @@ class TestJVMCompiler < Test::Unit::TestCase | |
| 1854 1651 | 
             
                assert_equal(2, cls.foo(1))
         | 
| 1855 1652 | 
             
              end
         | 
| 1856 1653 |  | 
| 1654 | 
            +
              def test_string_interpolation_method_calls
         | 
| 1655 | 
            +
                cls, = compile <<-CODE
         | 
| 1656 | 
            +
                  print "apples \#{'oranges'}".replace('apples', 'oranges')
         | 
| 1657 | 
            +
                CODE
         | 
| 1658 | 
            +
                assert_output "oranges oranges" do
         | 
| 1659 | 
            +
                  cls.main nil
         | 
| 1660 | 
            +
                end
         | 
| 1661 | 
            +
              end
         | 
| 1662 | 
            +
             | 
| 1857 1663 | 
             
              def test_self_dot_static_methods
         | 
| 1858 1664 | 
             
                cls, = compile(<<-EOF)
         | 
| 1859 1665 | 
             
                  class ClassWithStatics
         | 
| @@ -1904,22 +1710,6 @@ class TestJVMCompiler < Test::Unit::TestCase | |
| 1904 1710 | 
             
                assert_equal("java.lang.Character$UnicodeBlock", subset.java_class.name)
         | 
| 1905 1711 | 
             
              end
         | 
| 1906 1712 |  | 
| 1907 | 
            -
              def test_default_constructor
         | 
| 1908 | 
            -
                script, cls = compile(<<-EOF)
         | 
| 1909 | 
            -
                  class DefaultConstructable
         | 
| 1910 | 
            -
                    def foo
         | 
| 1911 | 
            -
                      "foo"
         | 
| 1912 | 
            -
                    end
         | 
| 1913 | 
            -
                  end
         | 
| 1914 | 
            -
             | 
| 1915 | 
            -
                  print DefaultConstructable.new.foo
         | 
| 1916 | 
            -
                EOF
         | 
| 1917 | 
            -
             | 
| 1918 | 
            -
                assert_output("foo") do
         | 
| 1919 | 
            -
                  script.main(nil)
         | 
| 1920 | 
            -
                end
         | 
| 1921 | 
            -
              end
         | 
| 1922 | 
            -
             | 
| 1923 1713 | 
             
              def test_class_literal
         | 
| 1924 1714 | 
             
                cls, = compile(<<-EOF)
         | 
| 1925 1715 | 
             
                  def foo
         | 
| @@ -2349,10 +2139,43 @@ class TestJVMCompiler < Test::Unit::TestCase | |
| 2349 2139 | 
             
                  puts c
         | 
| 2350 2140 | 
             
                EOF
         | 
| 2351 2141 | 
             
              end
         | 
| 2142 | 
            +
            <<<<<<< HEAD:test/jvm/jvm_compiler_test.rb
         | 
| 2352 2143 |  | 
| 2353 2144 | 
             
              def test_missing_class_with_block_raises_inference_error
         | 
| 2354 2145 | 
             
                assert_raises Typer::InferenceError do
         | 
| 2355 2146 | 
             
                  compile("Interface Implements_Go do; end")
         | 
| 2356 2147 | 
             
                end
         | 
| 2357 2148 | 
             
              end
         | 
| 2149 | 
            +
              
         | 
| 2150 | 
            +
              def test_bool_equality
         | 
| 2151 | 
            +
                cls, = compile("puts true == false")
         | 
| 2152 | 
            +
                assert_output("false\n") do
         | 
| 2153 | 
            +
                  cls.main(nil)
         | 
| 2154 | 
            +
                end
         | 
| 2155 | 
            +
              end
         | 
| 2156 | 
            +
              
         | 
| 2157 | 
            +
              def test_bool_inequality
         | 
| 2158 | 
            +
                cls, = compile("puts true != false")
         | 
| 2159 | 
            +
                assert_output("true\n") do
         | 
| 2160 | 
            +
            =======
         | 
| 2161 | 
            +
             | 
| 2162 | 
            +
              def test_add_args_in_macro
         | 
| 2163 | 
            +
                cls, = compile(<<-EOF)
         | 
| 2164 | 
            +
                  macro def foo(a)
         | 
| 2165 | 
            +
                    import duby.lang.compiler.Node
         | 
| 2166 | 
            +
                    quote { bar "1", `Node(a.child_nodes.get(0)).child_nodes`, "2"}
         | 
| 2167 | 
            +
                  end
         | 
| 2168 | 
            +
             | 
| 2169 | 
            +
                  def bar(a:String, b:String, c:String, d:String)
         | 
| 2170 | 
            +
                    puts "\#{a} \#{b} \#{c} \#{d}"
         | 
| 2171 | 
            +
                  end
         | 
| 2172 | 
            +
             | 
| 2173 | 
            +
                  foo(["a", "b"])
         | 
| 2174 | 
            +
                EOF
         | 
| 2175 | 
            +
             | 
| 2176 | 
            +
                assert_output("1 a b 2\n") do
         | 
| 2177 | 
            +
            >>>>>>> parser_support:test/test_jvm_compiler.rb
         | 
| 2178 | 
            +
                  cls.main(nil)
         | 
| 2179 | 
            +
                end
         | 
| 2180 | 
            +
              end
         | 
| 2358 2181 | 
             
            end
         | 
| @@ -13,7 +13,7 @@ | |
| 13 13 | 
             
            # See the License for the specific language governing permissions and
         | 
| 14 14 | 
             
            # limitations under the License.
         | 
| 15 15 |  | 
| 16 | 
            -
            class  | 
| 16 | 
            +
            class MacrosTest < Test::Unit::TestCase
         | 
| 17 17 | 
             
              def test_defmacro
         | 
| 18 18 | 
             
                cls, = compile(<<-EOF)
         | 
| 19 19 | 
             
                  defmacro bar(x) do
         | 
| @@ -157,4 +157,4 @@ class TestMacros < Test::Unit::TestCase | |
| 157 157 | 
             
                end
         | 
| 158 158 |  | 
| 159 159 | 
             
              end
         | 
| 160 | 
            -
            end
         | 
| 160 | 
            +
            end
         | 
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            class  | 
| 1 | 
            +
            class MainMethodTest < Test::Unit::TestCase
         | 
| 2 2 | 
             
              def test_main_generation_for_file_with_class_of_same_name
         | 
| 3 3 | 
             
                code = <<-EOC
         | 
| 4 4 | 
             
                  class WithMain
         | 
| @@ -12,4 +12,4 @@ class TestMainMethod < Test::Unit::TestCase | |
| 12 12 | 
             
                  main_class.main(nil)
         | 
| 13 13 | 
             
                end
         | 
| 14 14 | 
             
              end
         | 
| 15 | 
            -
            end
         | 
| 15 | 
            +
            end
         | 
| @@ -13,7 +13,7 @@ | |
| 13 13 | 
             
            # See the License for the specific language governing permissions and
         | 
| 14 14 | 
             
            # limitations under the License.
         | 
| 15 15 |  | 
| 16 | 
            -
            class  | 
| 16 | 
            +
            class RescueTest < Test::Unit::TestCase
         | 
| 17 17 |  | 
| 18 18 | 
             
              def test_rescue
         | 
| 19 19 | 
             
                cls, = compile(<<-EOF)
         | 
| @@ -130,6 +130,22 @@ class TestRescue < Test::Unit::TestCase | |
| 130 130 | 
             
                  cls.foo(false)
         | 
| 131 131 | 
             
                end
         | 
| 132 132 | 
             
                assert_equal "java.lang.Exception: !x", ex.message
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                cls, = compile(<<-EOF)
         | 
| 135 | 
            +
                  def foo:long
         | 
| 136 | 
            +
                    begin
         | 
| 137 | 
            +
                      return bar
         | 
| 138 | 
            +
                    rescue Exception => e
         | 
| 139 | 
            +
                      return long(0)
         | 
| 140 | 
            +
                    end
         | 
| 141 | 
            +
                  end
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                  def bar
         | 
| 144 | 
            +
                    long(1)
         | 
| 145 | 
            +
                  end
         | 
| 146 | 
            +
                EOF
         | 
| 147 | 
            +
             | 
| 148 | 
            +
                assert_equal 1, cls.foo
         | 
| 133 149 | 
             
              end
         | 
| 134 150 |  | 
| 135 151 | 
             
              def test_empty_rescues
         | 
| @@ -148,5 +164,20 @@ class TestRescue < Test::Unit::TestCase | |
| 148 164 | 
             
                  end
         | 
| 149 165 | 
             
                  nil
         | 
| 150 166 | 
             
                EOF
         | 
| 167 | 
            +
             | 
| 168 | 
            +
                cls, = compile(<<-EOF)
         | 
| 169 | 
            +
                  def empty_with_ensure
         | 
| 170 | 
            +
                    begin
         | 
| 171 | 
            +
                      i = 0
         | 
| 172 | 
            +
                      while i < 10
         | 
| 173 | 
            +
                        i += 1
         | 
| 174 | 
            +
                      end
         | 
| 175 | 
            +
                    rescue
         | 
| 176 | 
            +
                    ensure
         | 
| 177 | 
            +
                      puts 'ensuring'
         | 
| 178 | 
            +
                    end
         | 
| 179 | 
            +
                    ""
         | 
| 180 | 
            +
                  end
         | 
| 181 | 
            +
                EOF
         | 
| 151 182 | 
             
              end
         | 
| 152 | 
            -
            end
         | 
| 183 | 
            +
            end
         | 
| @@ -15,7 +15,7 @@ | |
| 15 15 |  | 
| 16 16 | 
             
            require 'test_helper'
         | 
| 17 17 |  | 
| 18 | 
            -
            class  | 
| 18 | 
            +
            class GWTTest < Test::Unit::TestCase
         | 
| 19 19 | 
             
              include Mirah::AST
         | 
| 20 20 |  | 
| 21 21 | 
             
              def test_jsni_static
         | 
| @@ -66,4 +66,4 @@ class TestGWT < Test::Unit::TestCase | |
| 66 66 | 
             
                arg_size = new_ast.arguments.args.size
         | 
| 67 67 | 
             
                assert_equal(arg_size, 2)
         | 
| 68 68 | 
             
              end
         | 
| 69 | 
            -
            end
         | 
| 69 | 
            +
            end
         | 
    
        data/test/test_helper.rb
    CHANGED
    
    | @@ -17,3 +17,43 @@ require 'test/unit' | |
| 17 17 | 
             
            require 'mirah'
         | 
| 18 18 | 
             
            require 'jruby'
         | 
| 19 19 | 
             
            require 'turn'
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            module CommonAssertions
         | 
| 22 | 
            +
              import java.lang.System
         | 
| 23 | 
            +
              import java.io.PrintStream
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              def assert_include(value, array, message=nil)
         | 
| 26 | 
            +
                message = build_message message, '<?> does not include <?>', array, value
         | 
| 27 | 
            +
                assert_block message do
         | 
| 28 | 
            +
                  array.include? value
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
              
         | 
| 32 | 
            +
              def capture_output
         | 
| 33 | 
            +
                saved_output = System.out
         | 
| 34 | 
            +
                saved_stdout = $stdout
         | 
| 35 | 
            +
                saved_stderr = $stderr
         | 
| 36 | 
            +
                output = StringIO.new
         | 
| 37 | 
            +
                System.setOut(PrintStream.new(output.to_outputstream))
         | 
| 38 | 
            +
                $stdout = output
         | 
| 39 | 
            +
                $stderr = output
         | 
| 40 | 
            +
                begin
         | 
| 41 | 
            +
                  yield
         | 
| 42 | 
            +
                  output.rewind
         | 
| 43 | 
            +
                  output.read
         | 
| 44 | 
            +
                ensure
         | 
| 45 | 
            +
                  System.setOut(saved_output)
         | 
| 46 | 
            +
                  $stdout = saved_stdout
         | 
| 47 | 
            +
                  $stderr = saved_stderr
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              def assert_output(expected, &block)
         | 
| 52 | 
            +
                assert_equal(expected, capture_output(&block))
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            class Test::Unit::TestCase
         | 
| 58 | 
            +
              include CommonAssertions
         | 
| 59 | 
            +
            end
         |