Skip to content

Commit 9f22dea

Browse files
committed
Add JUnit annotation experimental code.
1 parent bcd79a6 commit 9f22dea

File tree

3 files changed

+92
-0
lines changed

3 files changed

+92
-0
lines changed

tool/experimental/a_junit_test.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
require 'junit'
2+
3+
class MyJUnitTest
4+
include JUnit
5+
6+
+Test()
7+
def test_something_broken
8+
assert "a" == "b"
9+
end
10+
11+
+Test()
12+
def test_something_good
13+
assert "a" == "a"
14+
end
15+
end
16+
17+
JUnit.run(MyJUnitTest)

tool/experimental/annotator.rb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
require 'java'
2+
3+
class Method
4+
attr_accessor :annotations
5+
end
6+
7+
class Class
8+
def annotate_method(anno_values)
9+
@annotations ||= {}
10+
if Hash === anno_values
11+
@annotations.merge!(anno_values)
12+
else
13+
@annotations[anno_values.java_class] = {}
14+
end
15+
end
16+
17+
def method_added(name)
18+
if @annotations
19+
add_method_annotation(name.to_s, @annotations)
20+
@annotations = nil
21+
end
22+
super
23+
end
24+
25+
def annotate_class(anno_values)
26+
if Hash === anno_values
27+
add_class_annotation(anno_values)
28+
else
29+
add_class_annotation(anno_values.java_class => {})
30+
end
31+
end
32+
end

tool/experimental/junit.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
require 'java'
2+
require 'jruby/core_ext'
3+
require 'junit-4.6.jar'
4+
require 'annotator'
5+
6+
module JUnit
7+
import org.junit.Assert
8+
import org.junit.runner.JUnitCore
9+
JUnitTest = org.junit.Test
10+
11+
def self.append_features(cls)
12+
super
13+
cls.extend(self)
14+
end
15+
16+
def self.run(*classes)
17+
java_classes = classes.map{|c| c.become_java!; c.java_class}
18+
result = JUnitCore.run_classes(java_classes.to_java(java.lang.Class))
19+
puts "
20+
Tests run: #{result.run_count}
21+
Tests failed: #{result.failure_count}
22+
Successful: #{result.was_successful?}
23+
Elapsed time: #{result.run_time / 1000.0}s"
24+
end
25+
26+
class TestAnno
27+
def initialize(parent)
28+
@parent = parent
29+
end
30+
31+
def +@
32+
@parent.annotate_method JUnitTest
33+
end
34+
end
35+
36+
def Test
37+
TestAnno.new(self)
38+
end
39+
40+
def assert(*args)
41+
Assert.assert_true(*args)
42+
end
43+
end

0 commit comments

Comments
 (0)