stendhal 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
4
+ coverage
5
+ tmp/*
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --format documentation
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm --create use ruby-1.9.2@stendhal > /dev/null
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in stendhal.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,45 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ stendhal (0.0.1)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ aruba (0.2.2)
10
+ builder (2.1.2)
11
+ cucumber (0.8.5)
12
+ builder (~> 2.1.2)
13
+ diff-lcs (~> 1.1.2)
14
+ gherkin (~> 2.1.4)
15
+ json_pure (~> 1.4.3)
16
+ term-ansicolor (~> 1.0.4)
17
+ diff-lcs (1.1.2)
18
+ gherkin (2.1.5)
19
+ trollop (~> 1.16.2)
20
+ json_pure (1.4.6)
21
+ rspec (2.0.1)
22
+ rspec-core (~> 2.0.1)
23
+ rspec-expectations (~> 2.0.1)
24
+ rspec-mocks (~> 2.0.1)
25
+ rspec-core (2.0.1)
26
+ rspec-expectations (2.0.1)
27
+ diff-lcs (>= 1.1.2)
28
+ rspec-mocks (2.0.1)
29
+ rspec-core (~> 2.0.1)
30
+ rspec-expectations (~> 2.0.1)
31
+ simplecov (0.3.6)
32
+ simplecov-html (>= 0.3.7)
33
+ simplecov-html (0.3.8)
34
+ term-ansicolor (1.0.5)
35
+ trollop (1.16.2)
36
+
37
+ PLATFORMS
38
+ ruby
39
+
40
+ DEPENDENCIES
41
+ aruba
42
+ cucumber (= 0.8.5)
43
+ rspec
44
+ simplecov
45
+ stendhal!
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ require 'cucumber/rake/task'
6
+
7
+ desc "Run the specs under spec"
8
+ RSpec::Core::RakeTask.new do |t|
9
+ end
10
+
11
+ Cucumber::Rake::Task.new(:cucumber)
12
+
13
+ task :default => :spec
data/Readme.md ADDED
@@ -0,0 +1,51 @@
1
+ #stendhal
2
+
3
+ A small test framework developed as a personal kata to improve my ruby.
4
+
5
+ Currently under development, not functional at all. Below I will be posting
6
+ whatever features are available throughout the development.
7
+
8
+ ##Usage
9
+
10
+ # your spec file for some class - my_class_spec.rb
11
+
12
+ it "does something" do
13
+ my_object = MyClass.new
14
+ my_object.fancy = true
15
+
16
+ assert my_object.fancy
17
+ end
18
+
19
+ it "should do something but I don't know what yet"
20
+
21
+ pending "will do something else" do
22
+ my_object = MyClass.new
23
+ my_object.future_method
24
+ end
25
+
26
+ ###Running the specs!
27
+
28
+ stendhal my_class_spec.rb
29
+
30
+ ###And the output...
31
+
32
+ * does something
33
+ * should do something but I don't know what yet
34
+ * will do something else
35
+
36
+ 3 examples, 0 failures, 2 pending
37
+
38
+ ##Note on Patches/Pull Requests
39
+
40
+ * Fork the project.
41
+ * Make your feature addition or bug fix.
42
+ * Add specs for it. This is important so I don't break it in a
43
+ future version unintentionally.
44
+ * Commit, do not mess with rakefile, version, or history.
45
+ If you want to have your own version, that is fine but bump version
46
+ in a commit by itself I can ignore when I pull.
47
+ * Send me a pull request. Bonus points for topic branches.
48
+
49
+ ## Copyright
50
+
51
+ Copyright (c) 2010 Josep M. Bach. See LICENSE for details.
data/bin/stendhal ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'stendhal'
3
+ require 'stendhal/autorun'
@@ -0,0 +1,101 @@
1
+ Feature: Examples and example groups
2
+
3
+ Spec-ish Domain Specific Language
4
+
5
+ Scenario: declare an example
6
+ Given a directory named "rspec_project"
7
+ When I cd to "rspec_project"
8
+ Given a file named "sample_spec.rb" with:
9
+ """
10
+ describe "something" do
11
+ it "does something" do
12
+ assert true
13
+ end
14
+ end
15
+ """
16
+ When I run "stendhal sample_spec.rb"
17
+ Then the exit status should be 0
18
+ And the output should contain "1 example, 0 failures"
19
+
20
+ Scenario: declare a failing example
21
+ Given a directory named "rspec_project"
22
+ When I cd to "rspec_project"
23
+ Given a file named "sample_spec.rb" with:
24
+ """
25
+ describe "something" do
26
+ it "does something" do
27
+ assert false
28
+ end
29
+ end
30
+ """
31
+ When I run "stendhal sample_spec.rb"
32
+ Then the exit status should be 0
33
+ And the output should contain "* does something"
34
+ And the output should contain "1 example, 1 failure"
35
+
36
+ Scenario: declare a pending example
37
+ Given a directory named "rspec_project"
38
+ When I cd to "rspec_project"
39
+ Given a file named "sample_spec.rb" with:
40
+ """
41
+ describe "something" do
42
+ pending "does something" do
43
+ assert false
44
+ end
45
+ end
46
+ """
47
+ When I run "stendhal sample_spec.rb"
48
+ Then the exit status should be 0
49
+ And the output should contain "* does something"
50
+ And the output should contain "1 example, 0 failures, 1 pending"
51
+
52
+ Scenario: declare an example in nested groups
53
+ Given a directory named "rspec_project"
54
+ When I cd to "rspec_project"
55
+ Given a file named "sample_spec.rb" with:
56
+ """
57
+ describe "something" do
58
+ describe "inside another thing" do
59
+ it "does this" do
60
+ assert true
61
+ end
62
+ end
63
+ end
64
+ """
65
+ When I run "stendhal sample_spec.rb"
66
+ Then the exit status should be 0
67
+ And the output should contain "something"
68
+ And the output should contain "inside another thing"
69
+ And the output should contain "* does this"
70
+ And the output should contain "1 example, 0 failures"
71
+
72
+ Scenario: many examples in different example groups
73
+ Given a directory named "rspec_project"
74
+ When I cd to "rspec_project"
75
+ Given a file named "sample_spec.rb" with:
76
+ """
77
+ describe "something" do
78
+ describe "inside another thing" do
79
+ it "does this" do
80
+ assert true
81
+ end
82
+ end
83
+ describe "pending" do
84
+ pending "todo" do
85
+ assert false
86
+ end
87
+ it "fails" do
88
+ assert false
89
+ end
90
+ end
91
+ end
92
+ """
93
+ When I run "stendhal sample_spec.rb"
94
+ Then the exit status should be 0
95
+ And the output should contain "something"
96
+ And the output should contain "inside another thing"
97
+ And the output should contain "* does this"
98
+ And the output should contain "pending"
99
+ And the output should contain "* todo"
100
+ And the output should contain "* fails"
101
+ And the output should contain "3 examples, 1 failure, 1 pending"
@@ -0,0 +1 @@
1
+ require 'aruba'
@@ -0,0 +1,12 @@
1
+ module Stendhal
2
+ module Assertions
3
+ def assert test, msg = nil
4
+ msg ||= "Failed assertion, no message given."
5
+ unless test then
6
+ raise AssertionFailed, msg
7
+ end
8
+ true
9
+ end
10
+ end
11
+ class AssertionFailed < Exception; end
12
+ end
@@ -0,0 +1,11 @@
1
+
2
+
3
+ ARGV.each do |file|
4
+ require File.join('.',file)
5
+ end
6
+
7
+ examples, failures, pending = Stendhal::ExampleGroup.run_all
8
+ report = "\n#{examples} #{examples != 1 ? 'examples' : 'example'}, #{failures} #{failures != 1 ? 'failures' : 'failure'}"
9
+ report += ", #{pending} pending" if pending > 0
10
+ puts report
11
+
@@ -0,0 +1,5 @@
1
+ module Kernel
2
+ def describe(*args,&blk)
3
+ Stendhal::ExampleGroup.new(*args,&blk)
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ module Stendhal
2
+ module DSL
3
+ module Example
4
+ def it(*args,&blk)
5
+ self.add_example Stendhal::Example.new(*args,&blk)
6
+ end
7
+ def pending(*args,&blk)
8
+ if args.last.is_a? Hash
9
+ options = args.pop
10
+ options.update(:pending => true)
11
+ else
12
+ options = {:pending => true}
13
+ end
14
+ self.add_example Stendhal::Example.new(*args,options,&blk)
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ Stendhal::ExampleGroup.send(:include, Stendhal::DSL::Example)
@@ -0,0 +1,59 @@
1
+ module Stendhal
2
+ class Example
3
+ include Assertions
4
+
5
+ @@examples = []
6
+
7
+ attr_reader :description
8
+ attr_reader :block
9
+
10
+ def initialize(docstring, options = {}, &block)
11
+ @description = docstring
12
+ @block = block
13
+ @pending = true if options[:pending] || !block_given?
14
+ @@examples << self
15
+ end
16
+
17
+ def run
18
+ begin
19
+ self.instance_eval(&@block)
20
+ return 0
21
+ rescue AssertionFailed=>e
22
+ @failed = true
23
+ return 1
24
+ rescue StandardError=>e
25
+ @aborted = true
26
+ return 1
27
+ end
28
+ end
29
+
30
+ def pending?
31
+ @pending
32
+ end
33
+
34
+ def failed?
35
+ @failed
36
+ end
37
+
38
+ def aborted?
39
+ @aborted
40
+ end
41
+
42
+ def destroy
43
+ @@examples.delete self
44
+ end
45
+
46
+ class << self
47
+
48
+ def destroy_all
49
+ @@examples = []
50
+ end
51
+
52
+ def count
53
+ @@examples.count
54
+ end
55
+
56
+ end
57
+
58
+ end
59
+ end
@@ -0,0 +1,61 @@
1
+ module Stendhal
2
+ class ExampleGroup
3
+ @@example_groups = []
4
+
5
+ attr_reader :description
6
+ attr_reader :block
7
+ attr_reader :examples
8
+
9
+ def initialize(docstring, options = {}, &block)
10
+ @description = docstring
11
+ @block = block
12
+ @examples = []
13
+ instance_exec(&@block) if block_given?
14
+ @@example_groups << self
15
+ end
16
+
17
+ def run
18
+ failures = pending = 0
19
+ examples.reject do |example|
20
+ if example.pending?
21
+ pending += 1
22
+ $stdout.print "* #{example.description}\n"
23
+ true
24
+ else
25
+ false
26
+ end
27
+ end.each do |example|
28
+ failures += example.run
29
+ $stdout.print "* #{example.description}\n"
30
+ end
31
+ [examples.count, failures, pending]
32
+ end
33
+
34
+ def add_example(example)
35
+ examples << example
36
+ end
37
+
38
+ class << self
39
+ attr_reader :example_groups
40
+
41
+ def destroy_all
42
+ @@example_groups = []
43
+ end
44
+
45
+ def run_all
46
+ result = [0,0,0]
47
+ @@example_groups.each do |g|
48
+ puts g.description
49
+ group_result = g.run
50
+ result = result.zip(group_result).map{ |pair| pair[0] + pair[1] }
51
+ end
52
+ result
53
+ end
54
+
55
+ def count
56
+ @@example_groups.count
57
+ end
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,3 @@
1
+ module Stendhal
2
+ VERSION = "0.0.1"
3
+ end
data/lib/stendhal.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'stendhal/assertions'
2
+ require 'stendhal/example'
3
+ require 'stendhal/example_group'
4
+
5
+ require 'stendhal/core_ext/kernel'
6
+ require 'stendhal/dsl'
data/script/console ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ require "irb"
3
+ lib_path = File.expand_path(File.dirname(__FILE__) + "/../lib")
4
+ $LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
5
+
6
+ require 'stendhal'
7
+
8
+ IRB.start(__FILE__)
@@ -0,0 +1,13 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+
4
+ require 'rubygems'
5
+
6
+ require 'simplecov'
7
+ SimpleCov.start do
8
+ add_group "Lib", 'lib'
9
+ end
10
+
11
+ require 'stendhal'
12
+ require 'rspec'
13
+ require 'rspec/autorun'
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ class MyClass
4
+ include Stendhal::Assertions
5
+ end
6
+
7
+ module Stendhal
8
+ describe Assertions do
9
+
10
+ subject { MyClass.new }
11
+
12
+ describe "#assert" do
13
+
14
+ it "does nothing if asserted expression returns true" do
15
+ subject.assert true
16
+ end
17
+
18
+ it "raises an AssertionFailed exception otherwise" do
19
+ expect { subject.assert false }.to raise_error(AssertionFailed)
20
+ end
21
+
22
+ it "yields a given message for the error" do
23
+ expect { subject.assert false, "softwared!" }.to raise_error(AssertionFailed, "softwared!")
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Kernel extensions" do
4
+ pending "conflicting with RSpec DSL"
5
+ end
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+
3
+ module Stendhal
4
+ describe ExampleGroup do
5
+
6
+ before(:each) do
7
+ ExampleGroup.destroy_all
8
+ Example.destroy_all
9
+ end
10
+
11
+ it "is created with a docstring and a block" do
12
+ group = ExampleGroup.new("docstring") do
13
+
14
+ end
15
+ group.description.should == "docstring"
16
+ end
17
+
18
+ it "allows example declaration inside the block" do
19
+ expect {
20
+ ExampleGroup.new("docstring") do
21
+ it "does something" do
22
+ end
23
+ end
24
+ }.to_not raise_error
25
+ end
26
+
27
+ describe "#add_example" do
28
+ it 'adds an example to the group' do
29
+ group = ExampleGroup.new("docstring")
30
+ group.add_example Example.new("docstring")
31
+ group.should have(1).examples
32
+ end
33
+ end
34
+
35
+ describe "#run" do
36
+ before(:each) do
37
+ @runnable_examples = []
38
+ @group = ExampleGroup.new("group")
39
+ 4.times do
40
+ example = Example.new("some example") do
41
+ assert true
42
+ end
43
+ @runnable_examples << example
44
+ @group.add_example example
45
+ end
46
+ @failing_example = Example.new("failing") do
47
+ assert false
48
+ end
49
+ @group.add_example @failing_example
50
+ @pending_example = Example.new("pending")
51
+ @group.add_example @pending_example
52
+ end
53
+
54
+ it "runs all non-pending examples" do
55
+ @runnable_examples.each {|e| e.should_receive(:run).once.and_return(0)}
56
+ @failing_example.should_receive(:run).once.and_return(1)
57
+ @pending_example.should_not_receive(:run)
58
+
59
+ @group.run
60
+ end
61
+
62
+ it "returns an array with total examples, failures and pendings" do
63
+ @group.run.should == [6,1,1]
64
+ end
65
+ end
66
+
67
+ describe "class methods" do
68
+ describe "#count" do
69
+ it "returns the number of example groups in memory" do
70
+ ExampleGroup.new("group")
71
+ ExampleGroup.count.should == 1
72
+ end
73
+ end
74
+ describe "#run_all" do
75
+ it "sums all the examples, failures and pendings and returns them as an array" do
76
+ group1 = ExampleGroup.new("group")
77
+ group1.stub(:run).and_return([1,2,3])
78
+ group2 = ExampleGroup.new("group")
79
+ group2.stub(:run).and_return([1,0,1])
80
+
81
+ ExampleGroup.run_all.should == [2,2,4]
82
+ end
83
+ end
84
+ end
85
+
86
+ end
87
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ module Stendhal
4
+ describe Example do
5
+
6
+ before(:each) do
7
+ Example.destroy_all
8
+ end
9
+
10
+ let(:example_group) { double('example group') }
11
+
12
+ it "is created with a docstring and a block" do
13
+ example = Example.new("docstring") do
14
+ 3 + 4
15
+ end
16
+ example.description.should == "docstring"
17
+ end
18
+
19
+ it "is pending unless given a block" do
20
+ example = Example.new("pending")
21
+ example.should be_pending
22
+ end
23
+
24
+ describe "#run" do
25
+
26
+ it "calls the block" do
27
+ example = Example.new("docstring") do
28
+ 3 + 4
29
+ end
30
+ example.should_receive(:instance_eval)
31
+
32
+ example.run
33
+ end
34
+
35
+ it "captures failed assertions" do
36
+ example = Example.new("docstring") do
37
+ assert false
38
+ end
39
+ expect {example.run}.to_not raise_error
40
+ example.run
41
+ example.should be_failed
42
+ end
43
+
44
+ it "captures exceptions" do
45
+ example = Example.new("docstring") do
46
+ raise "error"
47
+ end
48
+ expect {example.run}.to_not raise_error
49
+ example.run
50
+ example.should be_aborted
51
+ end
52
+
53
+ end
54
+
55
+ describe "class methods" do
56
+ describe "#count" do
57
+ it "returns the number of examples in memory" do
58
+ Example.new("pending")
59
+ Example.count.should == 1
60
+ end
61
+ end
62
+ end
63
+
64
+ end
65
+ end
data/stendhal.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "stendhal/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "stendhal"
7
+ s.version = Stendhal::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Josep M. Bach"]
10
+ s.email = ["josep.m.bach@gmail.com"]
11
+ s.homepage = "http://rubygems.org/gems/stendhal"
12
+ s.summary = %q{Stendhal is a really simple test framework.}
13
+ s.description = %q{Stendhal is a really simple test framework.}
14
+
15
+ s.rubyforge_project = "stendhal"
16
+ s.default_executable = "stendhal"
17
+
18
+ s.add_development_dependency "rspec"
19
+ s.add_development_dependency "simplecov"
20
+ s.add_development_dependency "cucumber", "=0.8.5"
21
+ s.add_development_dependency "aruba"
22
+
23
+ s.files = `git ls-files`.split("\n")
24
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
26
+ s.require_paths = ["lib"]
27
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: stendhal
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Josep M. Bach
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-10-29 00:00:00 +02:00
18
+ default_executable: stendhal
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rspec
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :development
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: simplecov
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :development
45
+ version_requirements: *id002
46
+ - !ruby/object:Gem::Dependency
47
+ name: cucumber
48
+ prerelease: false
49
+ requirement: &id003 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - "="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ - 8
57
+ - 5
58
+ version: 0.8.5
59
+ type: :development
60
+ version_requirements: *id003
61
+ - !ruby/object:Gem::Dependency
62
+ name: aruba
63
+ prerelease: false
64
+ requirement: &id004 !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 0
71
+ version: "0"
72
+ type: :development
73
+ version_requirements: *id004
74
+ description: Stendhal is a really simple test framework.
75
+ email:
76
+ - josep.m.bach@gmail.com
77
+ executables:
78
+ - stendhal
79
+ extensions: []
80
+
81
+ extra_rdoc_files: []
82
+
83
+ files:
84
+ - .gitignore
85
+ - .rspec
86
+ - .rvmrc
87
+ - Gemfile
88
+ - Gemfile.lock
89
+ - Rakefile
90
+ - Readme.md
91
+ - bin/stendhal
92
+ - features/examples.feature
93
+ - features/support/env.rb
94
+ - lib/stendhal.rb
95
+ - lib/stendhal/assertions.rb
96
+ - lib/stendhal/autorun.rb
97
+ - lib/stendhal/core_ext/kernel.rb
98
+ - lib/stendhal/dsl.rb
99
+ - lib/stendhal/example.rb
100
+ - lib/stendhal/example_group.rb
101
+ - lib/stendhal/version.rb
102
+ - script/console
103
+ - spec/spec_helper.rb
104
+ - spec/stendhal/assertions_spec.rb
105
+ - spec/stendhal/core_ext/kernel_spec.rb
106
+ - spec/stendhal/example_group_spec.rb
107
+ - spec/stendhal/example_spec.rb
108
+ - stendhal.gemspec
109
+ has_rdoc: true
110
+ homepage: http://rubygems.org/gems/stendhal
111
+ licenses: []
112
+
113
+ post_install_message:
114
+ rdoc_options: []
115
+
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ segments:
124
+ - 0
125
+ version: "0"
126
+ required_rubygems_version: !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ segments:
132
+ - 0
133
+ version: "0"
134
+ requirements: []
135
+
136
+ rubyforge_project: stendhal
137
+ rubygems_version: 1.3.7
138
+ signing_key:
139
+ specification_version: 3
140
+ summary: Stendhal is a really simple test framework.
141
+ test_files:
142
+ - features/examples.feature
143
+ - features/support/env.rb
144
+ - spec/spec_helper.rb
145
+ - spec/stendhal/assertions_spec.rb
146
+ - spec/stendhal/core_ext/kernel_spec.rb
147
+ - spec/stendhal/example_group_spec.rb
148
+ - spec/stendhal/example_spec.rb