Buildr C0 Coverage Information - RCov

lib/buildr/groovy/bdd.rb

Name Total Lines Lines of Code Total Coverage Code Coverage
lib/buildr/groovy/bdd.rb 106 63
66.98%
90.48%

Key

Code reported as executed by Ruby looks like this...and this: this line is also marked as covered.Lines considered as run by rcov, but not reported by Ruby, look like this,and this: these lines were inferred by rcov (using simple heuristics).Finally, here's a line marked as not executed.

Coverage Details

1 # Licensed to the Apache Software Foundation (ASF) under one or more
2 # contributor license agreements.  See the NOTICE file distributed with this
3 # work for additional information regarding copyright ownership.  The ASF
4 # licenses this file to you under the Apache License, Version 2.0 (the
5 # "License"); you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #    http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
13 # License for the specific language governing permissions and limitations under
14 # the License.
15 
16 
17 module Buildr::Groovy
18 
19   # EasyB is a Groovy based BDD framework.
20   # To use in your project:
21   #
22   #   test.using :easyb
23   #
24   # This framework will search in your project for:
25   #   src/spec/groovy/**/*Story.groovy
26   #   src/spec/groovy/**/*Specification.groovy
27   #
28   # Support the following options:
29   # * :format -- Report format :txt or :xml, default is :txt
30   # * :properties -- Hash of properties passed to the test suite.
31   # * :java_args -- Arguments passed to the JVM.
32   class EasyB < TestFramework::JavaBDD
33     @lang = :groovy
34     @bdd_dir = :spec
35 
36     VERSION = "0.9"
37     TESTS_PATTERN = [ /(Story|Specification).groovy$/ ]
38     OPTIONS = [:format, :properties, :java_args]
39 
40     class << self
41       def version
42         Buildr.settings.build['jbehave'] || VERSION
43       end
44 
45       def dependencies
46         @dependencies ||= ["org.easyb:easyb:jar:#{version}",
47           'org.codehaus.groovy:groovy:jar:1.5.3','asm:asm:jar:2.2.3',
48           'commons-cli:commons-cli:jar:1.0','antlr:antlr:jar:2.7.7']
49       end
50 
51       def applies_to?(project) #:nodoc:
52         %w{
53           **/*Specification.groovy **/*Story.groovy
54         }.any? { |glob| !Dir[project.path_to(:source, bdd_dir, lang, glob)].empty? }
55       end
56 
57     private
58       def const_missing(const)
59         return super unless const == :REQUIRES # TODO: remove in 1.5
60         Buildr.application.deprecated "Please use JBehave.dependencies/.version instead of JBehave::REQUIRES/VERSION"
61         dependencies
62       end
63     end
64 
65     def tests(dependencies) #:nodoc:
66       Dir[task.project.path_to(:source, bdd_dir, lang, "**/*.groovy")].
67         select { |name| TESTS_PATTERN.any? { |pat| pat === name } }
68     end
69 
70     def run(tests, dependencies) #:nodoc:
71       options = { :format => :txt }.merge(self.options).only(*OPTIONS)
72 
73       if :txt == options[:format]
74         easyb_format, ext = 'txtstory', '.txt'
75       elsif :xml == options[:format]
76         easyb_format, ext = 'xmlbehavior', '.xml'
77       else
78         raise "Invalid format #{options[:format]} expected one of :txt :xml"
79       end
80 
81       cmd_args = [ 'org.disco.easyb.BehaviorRunner' ]
82       cmd_options = { :properties => options[:properties],
83                       :java_args => options[:java_args],
84                       :classpath => dependencies }
85 
86       tests.inject([]) do |passed, test|
87         name = test.sub(/.*?groovy[\/\\]/, '').pathmap('%X')
88         report = File.join(task.report_to.to_s, name + ext)
89         mkpath report.pathmap('%d')
90         begin
91           Java::Commands.java cmd_args,
92              "-#{easyb_format}", report,
93              test, cmd_options.merge(:name => name)
94         rescue => e
95           passed
96         else
97           passed << test
98         end
99       end
100     end
101 
102   end # EasyB
103 
104 end
105 
106 Buildr::TestFramework << Buildr::Groovy::EasyB

Generated on 2011-07-06 23:35:37 -0700 with rcov 0.9.8