test-unit-context 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.3
5
+ - jruby-18mode
6
+ - jruby-19mode
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Test::Unit::Context
2
2
 
3
+ [![Build Status][0]](http://travis-ci.org/kares/test-unit-context)
4
+
3
5
  Makes `Test::Unit::TestCase` 'context-able' and thus (subjectively - hopefully)
4
6
  much easier to read and write. If you have ever seen RSpec than it's the very
5
7
  same *context do ... end* re-invented for **Test::Unit**.
@@ -96,3 +98,5 @@ end
96
98
 
97
99
  Copyright (c) 2012 [Karol Bucek](https://github.com/kares).
98
100
  See LICENSE (http://www.apache.org/licenses/LICENSE-2.0) for details.
101
+
102
+ [0]: https://secure.travis-ci.org/kares/test-unit-context.png
@@ -1,75 +1,26 @@
1
- require "test/unit"
2
- require "test/unit/context/helpers"
3
- require "test/unit/context/version"
1
+ require 'test/unit'
2
+ require 'test/unit/context/helpers'
3
+ require 'test/unit/context/version'
4
4
 
5
5
  module Test
6
6
  module Unit
7
7
  module Context
8
-
9
- def context_name #:nodoc:
10
- @context_name ||= ""
8
+
9
+ def context_name
11
10
  if superclass.respond_to?(:context_name)
12
- return "#{superclass.context_name} #{@context_name}".gsub(/^\s+/, "")
11
+ "#{superclass.context_name} #{@context_name}".gsub(/^\s+/, "")
12
+ else
13
+ @context_name
13
14
  end
14
15
  end
15
16
 
16
- def context_name=(val) #:nodoc:
17
- @context_name = val
18
- end
19
-
20
- # Add a context to a set of tests.
21
- #
22
- # context "A new account" do
23
- # test "does not have users"
24
- # assert Account.new.users.empty?
25
- # end
26
- # end
27
- #
28
- # The context name is prepended to the test name, so failures look like this:
29
- #
30
- # 1) Failure:
31
- # test_a_new_account_does_not_have_users() [./test/test_accounts.rb:4]:
32
- # <false> is not true.
33
- #
34
- # Contexts can also be nested like so:
35
- #
36
- # context "A new account" do
37
- # context "created from the web application" do
38
- # test "has web as its vendor" do
39
- # assert_equal "web", users(:web_user).vendor
40
- # end
41
- # end
42
- # end
43
- #
44
- def context(name, &block)
45
- klass = Class.new(self)
46
- klass.context_name = name
47
- # NOTE: make sure by default we run "inherited" setup/teardown hooks
48
- # unless context code does re-define the hook method e.g. `def setup`
49
- # instead of using the `setup do` or the setup method marker syntax :
50
- klass.class_eval do
51
- def setup; super; end
52
- def cleanup; super; end
53
- def teardown; super; end
54
- end
55
- klass.class_eval(&block)
56
-
57
- #@@context_list << klass # make sure it's not GC-ed ?!
58
- class_name = Helpers.to_class_name(name)
59
- const_set("Test#{class_name}#{klass.object_id.abs}", klass)
60
- klass
61
- end
62
-
63
- %w( contexts group ).each { |m| alias_method m, :context }
64
-
65
- #@@context_list = []
17
+ def context_name=(name); @context_name=name; end
66
18
 
67
19
  end
68
20
  end
69
21
  end
70
22
 
71
- Test::Unit::TestCase.extend Test::Unit::Context
72
-
73
- require "test/unit/context/shared"
74
-
75
- Test::Unit::TestCase.extend Test::Unit::Context::Shared
23
+ require 'test/unit/context/context'
24
+ Test::Unit::TestCase.extend Test::Unit::Context::Context
25
+ require 'test/unit/context/shared'
26
+ Test::Unit::TestCase.extend Test::Unit::Context::Shared
@@ -0,0 +1,85 @@
1
+ require 'time'
2
+
3
+ module Test::Unit::Context
4
+ module Context
5
+
6
+ # Add a context to a set of tests.
7
+ #
8
+ # context "A new account" do
9
+ # test "does not have users"
10
+ # assert Account.new.users.empty?
11
+ # end
12
+ # end
13
+ #
14
+ # The context name is prepended to the test name, so failures look like this:
15
+ #
16
+ # 1) Failure:
17
+ # test_a_new_account_does_not_have_users() [./test/test_accounts.rb:4]:
18
+ # <false> is not true.
19
+ #
20
+ # Contexts can also be nested like so:
21
+ #
22
+ # context "A new account" do
23
+ # context "created from the web application" do
24
+ # test "has web as its vendor" do
25
+ # assert_equal "web", users(:web_user).vendor
26
+ # end
27
+ # end
28
+ # end
29
+ #
30
+ # Context should have unique names within a given scope, otherwise they
31
+ # end-up being merged as if it where one single context declaration.
32
+ # Anonymous (un-named) contexts are supported as well - contrary they
33
+ # never get merged (a unique name is generated for each such context).
34
+ #
35
+ def context(name = nil, &block)
36
+ name ||= Helpers.generate_uuid
37
+ # context "created with defaults" ... 'ContextCreatedWithDefaults'
38
+ class_name = Helpers.to_const_name(name.to_s, 'Context')
39
+ if const_defined?(class_name)
40
+ klass = const_get(class_name)
41
+ if ( klass.superclass == self rescue nil )
42
+ warn "duplicate context definition with the name #{name.inspect} " <<
43
+ "found at #{caller.first} it is going to be merged with " <<
44
+ "the previous context definition"
45
+ else
46
+ raise "could not create a context with the name #{name.inspect} " <<
47
+ "as a constant #{class_name} is already defined and is not " <<
48
+ "another context definition"
49
+ end
50
+ else
51
+ klass = Class.new(self)
52
+ klass.extend Test::Unit::Context
53
+ klass.context_name = name
54
+ # NOTE: make sure by default we run "inherited" setup/teardown hooks
55
+ # unless context code does re-define the hook method e.g. `def setup`
56
+ # instead of using the `setup do` or the setup method marker syntax :
57
+ klass.class_eval do
58
+ def setup; super; end
59
+ def cleanup; super; end
60
+ def teardown; super; end
61
+ end
62
+ const_set(class_name, klass)
63
+ end
64
+ context_definitions << klass
65
+ klass.class_eval(&block)
66
+ klass
67
+ end
68
+
69
+ %w( contexts group ).each { |m| alias_method m, :context }
70
+
71
+ def context_definitions(nested = false)
72
+ @_context_definitions ||= []
73
+ if nested
74
+ contexts = @_context_definitions.dup
75
+ @_context_definitions.each do |context|
76
+ contexts.push *context.context_definitions(nested)
77
+ end
78
+ contexts
79
+ else
80
+ @_context_definitions
81
+ end
82
+ end
83
+
84
+ end
85
+ end
@@ -3,20 +3,18 @@ module Test::Unit::Context
3
3
 
4
4
  module_function
5
5
 
6
- # Replaces spaces and tabs with _ so we can use the string as a method name
7
- # Also replace dangerous punctuation
8
- def to_method_name(str)
9
- str.downcase.gsub(/[\s:',\.~;!#=\(\)&]+/,'_')
6
+ def to_const_name(str, prefix = nil)
7
+ name = prefix ? str.dup : str.lstrip
8
+ name.gsub!(/[\s:',\.~;!#=\(\)&]+/, '_')
9
+ name.gsub!(/\/(.?)/) { $1.upcase }
10
+ name.gsub!(/(?:^|_)(.)/) { $1.upcase }
11
+ prefix ? "#{prefix}#{name}" : name
10
12
  end
11
-
12
- # Borrowed from +camelize+ in ActiveSupport
13
- def to_module_name(str)
14
- to_method_name(str).gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
15
- end
16
-
17
- # Borrowed from +camelize+ in ActiveSupport
18
- def to_class_name(str)
19
- to_method_name(str).gsub(/\/(.?)/) { "#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
13
+
14
+ def generate_uuid
15
+ uuid = [ (Time.now.to_f * 1000).to_i % 10 ]
16
+ 15.times { uuid << rand(16).to_s(16) }
17
+ uuid.join
20
18
  end
21
19
 
22
20
  end
@@ -33,8 +33,30 @@ module Test::Unit::Context
33
33
  raise ArgumentError, "use a String or Symbol as the name e.g. " +
34
34
  "`shared #{name.to_s.inspect} do ...`"
35
35
  end
36
- module_name = Helpers.to_module_name(name.to_s)
37
- Object.const_set(module_name, Behavior.create(block))
36
+ const_name = Helpers.to_const_name(name.to_s)
37
+ if Behavior.const_defined?(const_name)
38
+ const = Behavior.const_get(const_name)
39
+ if Behavior === const
40
+ raise "duplicate shared definition with the name #{name.inspect} " <<
41
+ "found at #{caller.first} please provide an unique name"
42
+ else
43
+ raise "could not create a shared definition with the name " <<
44
+ "#{name.inspect} as a constant #{Behavior.name}::#{const_name} " <<
45
+ "already exists"
46
+ end
47
+ else
48
+ behavior = Behavior.new(name, block)
49
+ Behavior.const_set(const_name, behavior)
50
+ # expose at current top-level test-case as a constant as well :
51
+ test_case = self
52
+ while test_case.is_a?(Test::Unit::Context)
53
+ test_case = test_case.superclass
54
+ end
55
+ unless test_case.const_defined?(const_name)
56
+ test_case.const_set(const_name, behavior)
57
+ end
58
+ behavior
59
+ end
38
60
  end
39
61
 
40
62
  %w( share_as ).each { |m| alias_method m, :shared }
@@ -59,13 +81,20 @@ module Test::Unit::Context
59
81
  #
60
82
  def like(shared_name)
61
83
  case shared_name
62
- when String
63
- module_name = Helpers.to_module_name(shared_name)
64
- include Object.const_get(module_name)
65
- when Symbol
66
- module_name = Helpers.to_module_name(shared_name.to_s)
67
- include Object.const_get(module_name)
68
- when Module, Behavior
84
+ when String, Symbol
85
+ const_name = Helpers.to_const_name(shared_name.to_s)
86
+ if Behavior.const_defined?(const_name)
87
+ const = Behavior.const_get(const_name)
88
+ if Behavior === const
89
+ include const
90
+ else
91
+ raise "#{shared_name.inspect} does not resolve into a shared " <<
92
+ "behavior instance but to a #{const.inspect}"
93
+ end
94
+ else
95
+ raise "shared behavior with name #{shared_name.inspect} not defined"
96
+ end
97
+ when Behavior, Module
69
98
  include shared_name
70
99
  else
71
100
  raise ArgumentError, "pass a String or Symbol as the name e.g. " +
@@ -75,14 +104,25 @@ module Test::Unit::Context
75
104
 
76
105
  %w( like_a use uses ).each { |m| alias_method m, :like }
77
106
 
78
- class Behavior < Module
79
-
80
- def self.create(block) # :nodoc:
81
- self.new(block)
107
+ # Returns all available shared definitions.
108
+ def shared_definitions
109
+ shareds = []
110
+ constants.each do |name|
111
+ const = const_get(name)
112
+ if const.is_a?(Behavior)
113
+ shareds << const
114
+ end
82
115
  end
83
-
84
- def initialize(block)
116
+ shareds
117
+ end
118
+
119
+ class Behavior < Module
120
+
121
+ attr_reader :shared_name
122
+
123
+ def initialize(name, block)
85
124
  super()
125
+ @shared_name = name
86
126
  @_block = block
87
127
  end
88
128
 
@@ -1,7 +1,7 @@
1
1
  module Test
2
2
  module Unit
3
3
  module Context
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
6
6
  end
7
- end
7
+ end
@@ -24,28 +24,30 @@ module Test::Unit::Context
24
24
 
25
25
  context "A shared group" do
26
26
  context "creates a module" do
27
+
27
28
  test "based on a string name" do
28
29
  self.class.shared "things and fun" do
29
30
  end
30
31
 
31
- assert Object.const_get(:ThingsAndFun)
32
- assert_equal Shared::Behavior, Object.const_get(:ThingsAndFun).class
32
+ assert Shared::Behavior.const_defined?(:ThingsAndFun)
33
+ assert_instance_of Shared::Behavior, Shared::Behavior.const_get(:ThingsAndFun)
33
34
  end
34
35
 
35
- it "based on a symbol name" do
36
+ test "based on a symbol name" do
36
37
  self.class.shared :fun_and_games do
37
38
  end
38
39
 
39
- assert Object.const_get(:FunAndGames)
40
- assert_equal Shared::Behavior, Object.const_get(:FunAndGames).class
40
+ assert Shared::Behavior.const_defined?(:FunAndGames)
41
+ assert_instance_of Shared::Behavior, Shared::Behavior.const_get(:FunAndGames)
41
42
  end
42
43
 
43
- it "unless the name is not a String or Symbol" do
44
+ test "unless the name is not a String or Symbol" do
44
45
  assert_raise ArgumentError do
45
- self.class.shared StandardError do
46
+ self.class.shared 42 do
46
47
  end
47
48
  end
48
49
  end
50
+
49
51
  end
50
52
 
51
53
  context "should be locatable" do
@@ -84,6 +86,12 @@ module Test::Unit::Context
84
86
  self.class.use HiDog
85
87
  end
86
88
  end
89
+
90
+ it "by behavior reference" do
91
+ assert_nothing_raised do
92
+ self.class.use Shared::Behavior::HiDog
93
+ end
94
+ end
87
95
  end
88
96
 
89
97
  context "should include its shared behavior" do
@@ -134,6 +142,18 @@ module Test::Unit::Context
134
142
  end
135
143
 
136
144
  end
145
+
146
+ test "locates all shared behaviors with their names" do
147
+ assert_not_nil shareds = self.class.shared_definitions
148
+ assert shareds.size >= 4, shareds.inspect
149
+ assert_include shareds, Test::Unit::Context::Shared::Behavior::HiDog
150
+ assert_equal 'hi dog', Test::Unit::Context::Shared::Behavior::HiDog.shared_name
151
+ [ :Athos, :Porthos, :Aramis ].each do |name|
152
+ assert_include shareds, behavior = self.class.const_get(name)
153
+ assert_equal name.to_s, behavior.shared_name
154
+ end
155
+ end
156
+
137
157
  end
138
158
  end
139
159
  end
@@ -16,56 +16,173 @@ module Test::Unit
16
16
  assert self.class.respond_to? :contexts
17
17
  end
18
18
 
19
- context "A new context" do
20
-
21
- context "when not nested" do
22
- setup do
23
- @context =
24
- Class.new(Test::Unit::TestCase).
25
- context("When testing") do
26
- def test_this_thing
27
- true
28
- end
29
- end
19
+ class Default < Test::Unit::TestCase
20
+ CONTEXT = context "When testing" do
21
+ def test_this_thing
22
+ true
30
23
  end
24
+ end
25
+ context "More testing" do
26
+ # @todo implement more tests here ...
27
+ end
28
+ end
31
29
 
32
- test "should set the context name" do
33
- assert_equal "When testing", @context.context_name
34
- end
30
+ setup do
31
+ @default_context = Default::CONTEXT
32
+ end
33
+
34
+ test "[default context] sets the context name" do
35
+ assert_equal "When testing", @default_context.context_name
36
+ end
35
37
 
36
- test "should be a Test::Unit::TestCase" do
37
- assert @context.ancestors.include?(Test::Unit::TestCase)
38
+ test "[default context] is a Test::Unit::TestCase" do
39
+ assert @default_context.ancestors.include?(Test::Unit::TestCase)
40
+ end
41
+
42
+ test "[default context] is defived from the test class" do
43
+ assert_equal Default, @default_context.superclass
44
+ end
45
+
46
+ test "[default context] reports among test case's context defs" do
47
+ assert Default.respond_to?(:context_definitions)
48
+ assert_include Default.context_definitions, @default_context
49
+ assert_equal 2, Default.context_definitions.size
50
+ end
51
+
52
+ test "has a (context name derived) class name" do
53
+ namespace = 'Test::Unit::TestContext::Default::'
54
+ assert_equal "#{namespace}ContextWhenTesting", @default_context.name
55
+ end
56
+
57
+ class Anonymous < Test::Unit::TestCase
58
+ CONTEXT = context do
59
+ def test_some_thing
60
+ true
38
61
  end
39
-
40
62
  end
63
+ context do
64
+ test 'another_thing' do
65
+ end
66
+ end
67
+ context do
68
+ #
69
+ end
70
+ end
71
+
72
+ setup do
73
+ @anonymous_context = Anonymous::CONTEXT
74
+ end
41
75
 
42
- context "when nested" do
43
-
44
- setup do
45
- @context = self.class.context("and we're testing") do
46
- def self.nested
47
- @nested
48
- end
49
-
50
- @nested = context "should be nested" do
51
- def test_this_thing
52
- true
53
- end
54
- end
76
+ test "[anonymous context] has a generated context name" do
77
+ assert_not_nil @anonymous_context.name
78
+ end
79
+
80
+ test "[anonymous context] is defived from the test class" do
81
+ assert_equal Anonymous, @anonymous_context.superclass
82
+ end
83
+
84
+ test "[anonymous context] reports among test case's context defs" do
85
+ assert Anonymous.respond_to?(:context_definitions)
86
+ assert_include Anonymous.context_definitions, @anonymous_context
87
+ assert_equal 3, Anonymous.context_definitions.size
88
+ assert_equal 3, Anonymous.context_definitions(true).size
89
+ end
90
+
91
+ test "[anonymous context] has a (context name derived) class name" do
92
+ namespace = 'Test::Unit::TestContext::Anonymous::'
93
+ context_name = @anonymous_context.context_name
94
+ assert_equal "#{namespace}Context#{context_name}", @anonymous_context.name
95
+ end
96
+
97
+ class Nested < Test::Unit::TestCase
98
+ CONTEXT = context "and we're testing" do
99
+ @nested = context "should be nested" do
100
+ def test_a_thing
101
+ true
55
102
  end
56
103
  end
104
+ def self.nested; @nested; end
105
+ end
106
+ end
107
+
108
+ setup do
109
+ @parent_context = Nested::CONTEXT
110
+ @nested_context = Nested::CONTEXT.nested
111
+ end
112
+
113
+ test "[nested context] sets a nested context name" do
114
+ assert_equal "and we're testing should be nested", @nested_context.context_name
115
+ end
57
116
 
58
- test "should set a nested context's name" do
59
- assert_equal "A new context when nested and we're testing should be nested", @context.nested.context_name
117
+ test "[nested context] is also a Test::Unit::TestCase" do
118
+ assert @nested_context.ancestors.include?(Test::Unit::TestCase)
119
+ end
120
+
121
+ test "[nested context] is defived from the prev context class" do
122
+ assert_equal @parent_context, @nested_context.superclass
123
+ end
124
+
125
+ test "[nested context] reports context defs correctly" do
126
+ assert Nested.respond_to?(:context_definitions)
127
+ assert_equal 1, Nested.context_definitions.size
128
+ assert_equal 1, @parent_context.context_definitions.size
129
+ assert_equal 0, @nested_context.context_definitions.size
130
+ assert_equal 2, Nested.context_definitions(true).size
131
+ end
132
+
133
+ test "[nested context] has a (context name derived) class name" do
134
+ namespace = 'Test::Unit::TestContext::Nested::'
135
+ assert_equal "#{namespace}ContextAndWeReTesting::ContextShouldBeNested",
136
+ @nested_context.name
137
+ end
138
+
139
+ class Redefined < Test::Unit::TestCase
140
+ CONTEXT = context 42 do
141
+ def test_everything
142
+ true
60
143
  end
144
+ end
145
+ @@warns = nil
146
+ def self.warn(message)
147
+ ( @@warns ||= [] ) << message
148
+ super
149
+ end
150
+ def self.warns; @@warns; end
151
+ def self.reset_warns; @@warns = nil; end
152
+ end
153
+
154
+ setup do
155
+ @redefined_context = Redefined::CONTEXT
156
+ end
157
+
158
+ test "[redefined context] sets the context name" do
159
+ assert_equal 42, @redefined_context.context_name
160
+ end
61
161
 
62
- test "should also be a Test::Unit::TestCase" do
63
- assert @context.nested.ancestors.include?(Test::Unit::TestCase)
162
+ test "[redefined context] warns when same context name used" do
163
+ assert_nil Redefined.warns
164
+ class Redefined
165
+ context 42 do
166
+ def test_something_else
167
+ assert true
168
+ end
169
+ end
170
+ end
171
+ assert_not_nil Redefined.warns
172
+ assert_equal 2, @redefined_context.instance_methods(false).grep(/test/).size
173
+
174
+ Redefined.reset_warns
175
+
176
+ assert_nil Redefined.warns
177
+ class Redefined
178
+ context '42' do # same class-name
179
+ def test_a_little_thing
180
+ end
64
181
  end
65
-
66
182
  end
183
+ assert_not_nil Redefined.warns
184
+ assert_equal 3, @redefined_context.instance_methods(false).grep(/test/).size
67
185
  end
68
186
 
69
187
  end
70
-
71
188
  end
metadata CHANGED
@@ -1,94 +1,98 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: test-unit-context
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
4
5
  prerelease:
5
- version: 0.1.0
6
6
  platform: ruby
7
- authors:
8
- - kares
7
+ authors:
8
+ - kares
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-10-10 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: test-unit
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 2.4.0
24
- type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: rake
28
- prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
35
- type: :development
36
- version_requirements: *id002
37
- description: |-
38
- Makes Test::Unit::TestCases 'contextable' and thus much
39
- easier to read and write. If you've seen RSpec than it's the very same 'context
40
- do ... end' re-invendet for Test::Unit. Inspired by gem 'context' that does the
41
- same for the 'old' Test::Unit 1.2.3 bundled with Ruby 1.8.x standard libraries.
42
- email:
43
- - self@kares.org
12
+ date: 2012-10-16 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: test-unit
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.4.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.4.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: ! "Makes Test::Unit::TestCases 'contextable' and thus much\neasier to
47
+ read and write. If you've seen RSpec than it's the very same 'context \ndo ... end'
48
+ re-invendet for Test::Unit. Inspired by gem 'context' that does the\nsame for the
49
+ 'old' Test::Unit 1.2.3 bundled with Ruby 1.8.x standard libraries."
50
+ email:
51
+ - self@kares.org
44
52
  executables: []
45
-
46
53
  extensions: []
47
-
48
- extra_rdoc_files:
49
- - README.md
50
- - LICENSE
51
- files:
52
- - .gitignore
53
- - Gemfile
54
- - LICENSE
55
- - README.md
56
- - Rakefile
57
- - lib/test/unit/context.rb
58
- - lib/test/unit/context/helpers.rb
59
- - lib/test/unit/context/shared.rb
60
- - lib/test/unit/context/version.rb
61
- - test-unit-context.gemspec
62
- - test/test/unit/context/hooks_test.rb
63
- - test/test/unit/context/shared_test.rb
64
- - test/test/unit/context_test.rb
65
- - test/test_helper.rb
54
+ extra_rdoc_files:
55
+ - README.md
56
+ - LICENSE
57
+ files:
58
+ - .gitignore
59
+ - .travis.yml
60
+ - Gemfile
61
+ - LICENSE
62
+ - README.md
63
+ - Rakefile
64
+ - lib/test/unit/context.rb
65
+ - lib/test/unit/context/context.rb
66
+ - lib/test/unit/context/helpers.rb
67
+ - lib/test/unit/context/shared.rb
68
+ - lib/test/unit/context/version.rb
69
+ - test-unit-context.gemspec
70
+ - test/test/unit/context/hooks_test.rb
71
+ - test/test/unit/context/shared_test.rb
72
+ - test/test/unit/context_test.rb
73
+ - test/test_helper.rb
66
74
  homepage: http://github.com/kares/test-unit-context
67
75
  licenses: []
68
-
69
76
  post_install_message:
70
77
  rdoc_options: []
71
-
72
- require_paths:
73
- - lib
74
- required_ruby_version: !ruby/object:Gem::Requirement
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
75
81
  none: false
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- version: "0"
80
- required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
87
  none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- version: "0"
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
86
92
  requirements: []
87
-
88
93
  rubyforge_project:
89
- rubygems_version: 1.8.15
94
+ rubygems_version: 1.8.24
90
95
  signing_key:
91
96
  specification_version: 3
92
97
  summary: Context for Test::Unit (2.x)
93
98
  test_files: []
94
-