tokyo 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,71 @@
1
+ describe :receive do
2
+
3
+ it 'should pass when a message expected and received' do
4
+ this = self
5
+ spec rand do
6
+ test :test do
7
+ expect(x = 'x').to_receive(:class)
8
+ x.class
9
+ end
10
+ this.assert_equal :__tokyo_passed__, run(:test)
11
+ end
12
+ end
13
+
14
+ it 'should fail when a expected message not received' do
15
+ this = self
16
+ spec rand do
17
+ test :test do
18
+ expect(x = 'x').to_receive(:class)
19
+ end
20
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
21
+ end
22
+ end
23
+
24
+ it 'should pass when no message expected and no message received' do
25
+ this = self
26
+ spec rand do
27
+ test :test do
28
+ fail_if(x = 'x').receive(:class)
29
+ end
30
+ this.assert_equal :__tokyo_passed__, run(:test)
31
+ end
32
+ end
33
+
34
+ it 'should fail when unexpected message received' do
35
+ this = self
36
+ spec rand do
37
+ test :test do
38
+ fail_if(x = 'x').receive(:class)
39
+ x.class
40
+ end
41
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
42
+ end
43
+ end
44
+
45
+ describe 'missing methods' do
46
+
47
+ it 'should call method_missing if defined' do
48
+ this = self
49
+ x = Class.new {def self.method_missing(m); 'x' + m.to_s; end}
50
+ spec rand do
51
+ test :test do
52
+ assert(x).receive(:y)
53
+ x.y
54
+ end
55
+ this.assert_equal 'xy', x.y
56
+ this.assert_equal :__tokyo_passed__, run(:test)
57
+ end
58
+ end
59
+
60
+ it 'should raise NoMethodError if no method_missing defined' do
61
+ this = self
62
+ spec rand do
63
+ test :test do
64
+ assert(x = 'x').receive(:y).and_raise(NoMethodError)
65
+ x.y
66
+ end
67
+ this.assert_equal :__tokyo_passed__, run(:test)
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,57 @@
1
+ describe :receive_with do
2
+
3
+ it 'should pass when called with correct arguments' do
4
+ this = self
5
+ spec rand do
6
+ test :test do
7
+ expect(x = 'x').to_receive(:+).with('y')
8
+ x + 'y'
9
+ end
10
+ this.assert_equal :__tokyo_passed__, run(:test)
11
+ end
12
+ end
13
+
14
+ it 'should fail when called without arguments' do
15
+ this = self
16
+ spec rand do
17
+ test :test do
18
+ expect(x = []).to_receive(:join).with('')
19
+ x.join
20
+ end
21
+ this.assert_match /Looks like :join message never was called with expected arguments/, run(:test).reason*' '
22
+ end
23
+ end
24
+
25
+ it 'should fail when called with wrong arguments' do
26
+ this = self
27
+ spec rand do
28
+ test :test do
29
+ expect(x = []).to_receive(:join).with('')
30
+ x.join('/')
31
+ end
32
+ this.assert_match /Looks like :join message never was called with expected arguments/, run(:test).reason*' '
33
+ end
34
+ end
35
+
36
+ it 'should pass when block validates arguments' do
37
+ this = self
38
+ spec rand do
39
+ test :test do
40
+ expect(x = 'x').to_receive(:+).with {|a| a == ['y']}
41
+ x + 'y'
42
+ end
43
+ this.assert_equal :__tokyo_passed__, run(:test)
44
+ end
45
+ end
46
+
47
+ it 'should fail when block does not validate arguments' do
48
+ this = self
49
+ spec rand do
50
+ test :test do
51
+ expect(x = 'x').to_receive(:+).with {false}
52
+ x + 'y'
53
+ end
54
+ this.assert_match /Looks like :\+ message never was called with expected arguments/, run(:test).reason*' '
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,90 @@
1
+ describe :refute_raise do
2
+
3
+ it 'should pass if no exception expected and no exception raised' do
4
+ this = self
5
+ spec rand do
6
+ test(:test) {refute {}.raise}
7
+ this.assert_equal :__tokyo_passed__, run(:test)
8
+ end
9
+ end
10
+
11
+ it 'should fail if exception raised when not expected' do
12
+ this = self
13
+ spec rand do
14
+ test(:test) {refute {x}.raise}
15
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
16
+ end
17
+ end
18
+
19
+ it 'should fail if exception of specific type negated but nothing raised' do
20
+ this = self
21
+ spec rand do
22
+ test(:test) {refute {}.raise NameError}
23
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
24
+ end
25
+ end
26
+
27
+ it 'should fail if exception with specific message negated but nothing raised' do
28
+ this = self
29
+ spec rand do
30
+ test(:test) {refute {}.raise nil, /blah/}
31
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
32
+ end
33
+ end
34
+
35
+ it 'should pass if it raises a exception type different from negated one' do
36
+ this = self
37
+ spec rand do
38
+ test(:test) {refute {x}.raise(ArgumentError)}
39
+ this.assert_equal :__tokyo_passed__, run(:test)
40
+ end
41
+ end
42
+
43
+ it 'should fail if it raises a exception of same type as negated one' do
44
+ this = self
45
+ spec rand do
46
+ test(:test) {refute {x}.raise NameError}
47
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
48
+ end
49
+ end
50
+
51
+ it 'should pass if it raises a exception with a message different from negated one' do
52
+ this = self
53
+ spec rand do
54
+ test(:test) {refute {x}.raise nil, /blah/}
55
+ this.assert_equal :__tokyo_passed__, run(:test)
56
+ end
57
+ end
58
+
59
+ it 'should fail if it raises a exception with a message matching negated one' do
60
+ this = self
61
+ spec rand do
62
+ test(:test) {refute {x}.raise nil, /undefined local variable/}
63
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
64
+ end
65
+ end
66
+
67
+ it 'should pass if raised type is not of negated type and error message does not match negated message' do
68
+ this = self
69
+ spec rand do
70
+ test(:test) {refute {x}.raise ArgumentError, /blah/}
71
+ this.assert_equal :__tokyo_passed__, run(:test)
72
+ end
73
+ end
74
+
75
+ it 'should fail if raised type is of negated type' do
76
+ this = self
77
+ spec rand do
78
+ test(:test) {refute {x}.raise NameError, /blah/}
79
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
80
+ end
81
+ end
82
+
83
+ it 'should fail if error message matches negated one' do
84
+ this = self
85
+ spec rand do
86
+ test(:test) {refute {x}.raise ArgumentError, /undefined local variable/}
87
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,42 @@
1
+ describe :refute_throw do
2
+
3
+ it 'should pass when nothing thrown' do
4
+ this = self
5
+ spec rand do
6
+ test(:test) {refute {}.throw}
7
+ this.assert_equal :__tokyo_passed__, run(:test)
8
+ end
9
+ end
10
+
11
+ it 'should fail when something thrown' do
12
+ this = self
13
+ spec rand do
14
+ test(:test) {refute {throw :x}.throw}
15
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
16
+ end
17
+ end
18
+
19
+ it 'should pass when thrown symbol does not match negated one' do
20
+ this = self
21
+ spec rand do
22
+ test(:test) {refute {throw :x}.throw(:y)}
23
+ this.assert_equal :__tokyo_passed__, run(:test)
24
+ end
25
+ end
26
+
27
+ it 'should fail when thrown symbol does match negated one' do
28
+ this = self
29
+ spec rand do
30
+ test(:test) {refute {throw :x}.throw(:x)}
31
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
32
+ end
33
+ end
34
+
35
+ it 'should fail when a negated symbol given and nothing thrown' do
36
+ this = self
37
+ spec rand do
38
+ test(:test) {refute {}.throw(:x)}
39
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
40
+ end
41
+ end
42
+ end
data/test/setup.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'json'
2
+ require 'minitest/autorun'
3
+ require 'tokyo'
4
+
5
+ module Minitest
6
+ class Mock
7
+ def respond_to?(sym, include_private = false)
8
+ retval = __respond_to?(sym, include_private)
9
+ if @expected_calls.key?(:respond_to?)
10
+ @actual_calls[:respond_to?] << {retval: retval, args: [sym, include_private]}
11
+ end
12
+ retval
13
+ end
14
+ end
15
+ end
16
+
17
+ def proxy obj
18
+ Tokyo::Assert.new(returned: obj)
19
+ end
20
+
21
+ def mock meth, *args, &block
22
+ m = Minitest::Mock.new
23
+ m.expect(meth, true, args, &block)
24
+ proxy(m)
25
+ end
data/test/skip_test.rb ADDED
@@ -0,0 +1,35 @@
1
+ describe :skip do
2
+
3
+ it 'should skip inside spec' do
4
+ r, w = IO.pipe
5
+ fork do
6
+ r.close
7
+ s = Tokyo.define_spec :skip_spec, proc {
8
+ test(:a) {}
9
+ skip
10
+ test(:b) {}
11
+ }
12
+ w.print({skips: Tokyo.skips.size, tests: s.tests.size}.to_json)
13
+ end
14
+ w.close
15
+ data = JSON.parse(r.read)
16
+ assert_equal 1, data['skips']
17
+ assert_equal 1, data['tests']
18
+ end
19
+
20
+ it 'should skip inside test' do
21
+ r, w = IO.pipe
22
+ fork do
23
+ r.close
24
+ Tokyo.define_and_register_a_spec :skip_test, proc {
25
+ test :x do
26
+ skip
27
+ w.print 'bad'
28
+ end
29
+ }
30
+ Tokyo.run
31
+ end
32
+ w.close
33
+ assert_equal '', r.read
34
+ end
35
+ end
@@ -0,0 +1,58 @@
1
+ describe :throw do
2
+
3
+ it 'should pass when any symbol expected and something thrown' do
4
+ this = self
5
+ spec rand do
6
+ test(:test) {assert {throw :x}.throw}
7
+ this.assert_equal :__tokyo_passed__, run(:test)
8
+ end
9
+ end
10
+
11
+ it 'should pass when specific symbol expected and thrown' do
12
+ this = self
13
+ spec rand do
14
+ test(:test) {assert {throw :x}.throw(:x)}
15
+ this.assert_equal :__tokyo_passed__, run(:test)
16
+ end
17
+ end
18
+
19
+ it 'should fail when any throw expected but nothing thrown' do
20
+ this = self
21
+ spec rand do
22
+ test(:test) {assert {}.throw}
23
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
24
+ end
25
+ end
26
+
27
+ it 'should fail when specific symbol expected but nothing thrown' do
28
+ this = self
29
+ spec rand do
30
+ test(:test) {assert {}.throw(:x)}
31
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
32
+ end
33
+ end
34
+
35
+ it 'should fail when wrong symbol thrown' do
36
+ this = self
37
+ spec rand do
38
+ test(:test) {assert {throw :y}.throw(:x)}
39
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
40
+ end
41
+ end
42
+
43
+ it 'should pass when given block validates thrown symbol' do
44
+ this = self
45
+ spec rand do
46
+ test(:test) {assert {throw :x}.throw {|s| s == :x}}
47
+ this.assert_equal :__tokyo_passed__, run(:test)
48
+ end
49
+ end
50
+
51
+ it 'should fail when given block invalidates thrown symbol' do
52
+ this = self
53
+ spec rand do
54
+ test(:test) {assert {}.throw {false}}
55
+ this.assert_equal Tokyo::GenericFailure, run(:test).class
56
+ end
57
+ end
58
+ end
data/tokyo.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = 'tokyo'
3
+ spec.version = '0.0.5'
4
+ spec.authors = ['Slee Woo']
5
+ spec.email = ['mail@sleewoo.com']
6
+ spec.description = 'Super-simple testing library for Ruby'
7
+ spec.summary = [spec.name, spec.version]*'-'
8
+ spec.homepage = 'https://github.com/sleewoo/' + spec.name
9
+ spec.license = 'MIT'
10
+
11
+ spec.files = Dir['**/{*,.[a-z]*}'].reject {|e| e =~ /\.(gem|lock|html)\Z/}
12
+ spec.require_paths = ['lib']
13
+
14
+ spec.executables = Dir['bin/*'].map { |f| File.basename(f)}
15
+
16
+ spec.required_ruby_version = '>= 2'
17
+
18
+ spec.add_runtime_dependency 'tty-progressbar', '~> 0.5'
19
+ spec.add_runtime_dependency 'tty-screen', '~> 0.1'
20
+ spec.add_runtime_dependency 'pastel', '~> 0.4'
21
+ spec.add_runtime_dependency 'coderay', '~> 1'
22
+ spec.add_runtime_dependency 'json', '~> 1.8'
23
+
24
+ spec.add_development_dependency 'minitest', '~> 5.5'
25
+ spec.add_development_dependency 'bundler', '~> 1.8'
26
+ spec.add_development_dependency 'rake', '~> 10.4'
27
+ end
metadata ADDED
@@ -0,0 +1,195 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tokyo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Slee Woo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: tty-progressbar
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: tty-screen
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pastel
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.4'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: coderay
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: json
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.8'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.8'
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '5.5'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '5.5'
97
+ - !ruby/object:Gem::Dependency
98
+ name: bundler
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.8'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.8'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '10.4'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '10.4'
125
+ description: Super-simple testing library for Ruby
126
+ email:
127
+ - mail@sleewoo.com
128
+ executables:
129
+ - tokyo
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - ".gitignore"
134
+ - ".travis.yml"
135
+ - Gemfile
136
+ - LICENSE.txt
137
+ - README.md
138
+ - Rakefile
139
+ - bin/tokyo
140
+ - lib/tokyo.rb
141
+ - lib/tokyo/assert.rb
142
+ - lib/tokyo/core_ext.rb
143
+ - lib/tokyo/expectations.rb
144
+ - lib/tokyo/expectations/raise.rb
145
+ - lib/tokyo/expectations/return.rb
146
+ - lib/tokyo/expectations/throw.rb
147
+ - lib/tokyo/expectations/with.rb
148
+ - lib/tokyo/pretty_print.rb
149
+ - lib/tokyo/run.rb
150
+ - lib/tokyo/unit.rb
151
+ - lib/tokyo/util.rb
152
+ - lib/tokyo/util/assert_raise.rb
153
+ - lib/tokyo/util/assert_throw.rb
154
+ - lib/tokyo/util/refute_raise.rb
155
+ - lib/tokyo/util/refute_throw.rb
156
+ - test/assert_test.rb
157
+ - test/context_inheritance_test.rb
158
+ - test/hooks_test.rb
159
+ - test/raise_test.rb
160
+ - test/receive_and_raise_test.rb
161
+ - test/receive_and_return_test.rb
162
+ - test/receive_and_throw_test.rb
163
+ - test/receive_test.rb
164
+ - test/receive_with_test.rb
165
+ - test/refute_raise_test.rb
166
+ - test/refute_throw_test.rb
167
+ - test/setup.rb
168
+ - test/skip_test.rb
169
+ - test/throw_test.rb
170
+ - tokyo.gemspec
171
+ homepage: https://github.com/sleewoo/tokyo
172
+ licenses:
173
+ - MIT
174
+ metadata: {}
175
+ post_install_message:
176
+ rdoc_options: []
177
+ require_paths:
178
+ - lib
179
+ required_ruby_version: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: '2'
184
+ required_rubygems_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ requirements: []
190
+ rubyforge_project:
191
+ rubygems_version: 2.4.5
192
+ signing_key:
193
+ specification_version: 4
194
+ summary: tokyo-0.0.5
195
+ test_files: []