tokyo 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []