riot 0.10.3 → 0.10.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.3
1
+ 0.10.4
data/lib/riot/context.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  module Riot
2
+ RootContext = Struct.new(:setups)
2
3
  class Context
3
- def initialize(description, setups=[], &definition)
4
+ def initialize(description, parent=RootContext.new([]), &definition)
5
+ @parent = parent
4
6
  @description = description
5
- @contexts, @setups, @assertions = [], setups, []
7
+ @contexts, @setups, @assertions = [], [], []
6
8
  self.instance_eval(&definition)
7
9
  end
8
10
 
@@ -10,18 +12,21 @@ module Riot
10
12
  @setups << Setup.new(&definition)
11
13
  end
12
14
 
15
+ def setups
16
+ @parent.setups + @setups
17
+ end
18
+
13
19
  def asserts(what, &definition) new_assertion("asserts", what, &definition); end
14
20
  def should(what, &definition) new_assertion("should", what, &definition); end
15
21
 
16
22
  def asserts_topic; asserts("topic") { topic }; end
17
23
 
18
24
  def context(description, &definition)
19
- # not liking the dup
20
- @contexts << Context.new("#{@description} #{description}", @setups.dup, &definition)
25
+ @contexts << Context.new("#{@description} #{description}", self, &definition)
21
26
  end
22
27
 
23
28
  def run(reporter)
24
- runnables = @setups + @assertions
29
+ runnables = setups + @assertions
25
30
  reporter.describe_context(@description) unless @assertions.empty?
26
31
  situation = Situation.new
27
32
  runnables.each do |runnable|
data/lib/riot/reporter.rb CHANGED
@@ -46,27 +46,38 @@ module Riot
46
46
  values = [passes, failures, errors, ("%0.6f" % time_taken)]
47
47
  say "\n%d passes, %d failures, %d errors in %s seconds" % values
48
48
  end
49
+
50
+ begin
51
+ raise LoadError if ENV["TM_MODE"]
52
+ require 'rubygems'
53
+ require 'term/ansicolor'
54
+ include Term::ANSIColor
55
+ rescue LoadError
56
+ def green(str); str; end
57
+ alias :red :green
58
+ alias :yellow :green
59
+ end
49
60
  end
50
61
 
51
62
  class StoryReporter < IOReporter
52
63
  def describe_context(description) say description; end
53
- def pass(description) say " + " + description.green; end
54
- def fail(description, message) say " - " + "#{description}: #{message}".yellow; end
55
- def error(description, e) say " ! " + "#{description}: #{e.message}".red; end
64
+ def pass(description) say " + " + green(description); end
65
+ def fail(description, message) say " - " + yellow("#{description}: #{message}"); end
66
+ def error(description, e) say " ! " + red("#{description}: #{e.message}"); end
56
67
  end
57
68
 
58
69
  class VerboseStoryReporter < StoryReporter
59
70
  def error(description, e)
60
71
  super(description, e)
61
- say " #{e.class.name} occured".red
62
- e.backtrace.each { |line| say " at #{line}".red }
72
+ say red(" #{e.class.name} occured")
73
+ e.backtrace.each { |line| say red(" at #{line}") }
63
74
  end
64
75
  end
65
76
 
66
77
  class DotMatrixReporter < IOReporter
67
- def pass(description); writer.write ".".green; end
68
- def fail(description, message); writer.write "F".yellow; end
69
- def error(description, e); writer.write "E".red; end
78
+ def pass(description); writer.write green("."); end
79
+ def fail(description, message); writer.write yellow("F"); end
80
+ def error(description, e); writer.write red("E"); end
70
81
  # TODO: Print the failures and errors at the end. Sorry :|
71
82
  end
72
83
 
@@ -77,17 +88,3 @@ module Riot
77
88
  def results(time_taken); end
78
89
  end
79
90
  end # Riot
80
-
81
- # Colorize strings
82
- class ::String
83
- begin
84
- raise LoadError if ENV["TM_MODE"]
85
- require 'rubygems'
86
- require 'term/ansicolor'
87
- include Term::ANSIColor
88
- rescue LoadError
89
- def green; self; end
90
- alias :red :green
91
- alias :yellow :green
92
- end
93
- end
data/riot.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{riot}
8
- s.version = "0.10.3"
8
+ s.version = "0.10.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin 'Gus' Knowlden"]
12
- s.date = %q{2009-12-02}
12
+ s.date = %q{2009-12-03}
13
13
  s.description = %q{An extremely fast, expressive, and context-driven unit-testing framework. A replacement for all other testing frameworks. Protest the slow test.}
14
14
  s.email = %q{gus@gusg.us}
15
15
  s.extra_rdoc_files = [
data/test/context_test.rb CHANGED
@@ -17,14 +17,14 @@ end # Reporting a context
17
17
 
18
18
  context "Defining a context with multiple setups" do
19
19
  setup do
20
- a_context = Riot::Context.new("foobar") do
20
+ @a_context = Riot::Context.new("foobar") do
21
21
  setup { "foo" }
22
22
  setup { topic + "bar" }
23
23
  asserts("blah") { topic == "foobar" }
24
24
  end
25
- a_context.run(MockReporter.new)
25
+ @a_context.run(MockReporter.new)
26
26
  end
27
-
27
+ asserts("has setups") { @a_context.setups.count }.equals(2)
28
28
  asserts("all tests pass") { topic.passes == 1 }
29
29
  end # Defining a context with multiple setups
30
30
 
@@ -59,7 +59,7 @@ context "Nesting a context" do
59
59
 
60
60
  asserts("parent setups are called") { topic.passes == 1 }
61
61
  end # with setups
62
- end # Nestings a context
62
+ end # Nesting a context
63
63
 
64
64
  context "Using should" do
65
65
  setup do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.3
4
+ version: 0.10.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin 'Gus' Knowlden
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-02 00:00:00 -06:00
12
+ date: 2009-12-03 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency