oktobertest 0.0.1 → 0.1.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +9 -0
- data/README.md +39 -9
- data/Rakefile +4 -5
- data/lib/oktobertest.rb +40 -42
- data/oktobertest.gemspec +1 -0
- data/test/assertions_test.rb +7 -15
- data/test/fixtures/error_test.rb +2 -0
- data/test/fixtures/failing_test.rb +2 -0
- data/test/fixtures/run_scope_test.rb +2 -0
- data/test/fixtures/run_test_test.rb +2 -0
- data/test/fixtures/skipped_test.rb +2 -0
- data/test/fixtures/successful_test.rb +2 -0
- data/test/helper.rb +5 -0
- data/test/oktobertest_test.rb +11 -9
- data/test/scope_test.rb +17 -3
- data/test/setup_test.rb +4 -2
- data/test/teardown_test.rb +2 -0
- metadata +20 -5
- data/bin/ok +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26c78afdc12b287e7fb1b42bc9df02edf9db80bc
|
4
|
+
data.tar.gz: 395c8827be0f81e2575b57238fbb15e7c716dd5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 364372c78233456737c8b70ab2fd83ee3eb09d938c3b4ec4750848f811f2eaafc88be0240ecfd5abc54af6750d665035cb5d8a370f60f0ad0e0b11faa5465d85
|
7
|
+
data.tar.gz: 0decf196630dcf487feb0b3957b5abcae7246c87204cfd9106406d9963b65e3a29365934e529a7f52de233239047b6a7cb195d5b1070fa4f4e773d2f04d4dea8
|
data/.travis.yml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
---
|
2
|
+
rvm:
|
3
|
+
- 2.0.0
|
4
|
+
- 2.1.1
|
5
|
+
- ruby-head
|
6
|
+
addons:
|
7
|
+
code_climate:
|
8
|
+
repo_token:
|
9
|
+
secure: "D9vSv0Zpxro5tqUneuwtDWQTkUl7ysaA0BN1A17/1l8/omoOSNSgyL+ras01uiquqYA2XmsUNM3PlS1mSKBfYLFpHneFKSL+lpo9gkYlJRY2Rchc5mZxTO/dPOGD3wB+ba1xunLpsG5SuHQB1p+gv09D8DmGG8Bkz+0Hn1RYx2o="
|
data/README.md
CHANGED
@@ -14,7 +14,7 @@ and I thought: "It shouldn't be so difficult to make a test library".
|
|
14
14
|
runs its own context.
|
15
15
|
* Each `scope` is an instance of `Oktobertest::Scope`. Methods defined in a
|
16
16
|
scope are copied into each `test` it contains.
|
17
|
-
* Extensible: it's easy to add more assertions.
|
17
|
+
* Extensible: it's easy to add more assertions (See [oktobertest-contrib](https://github.com/patriciomacadden/oktobertest-contrib)).
|
18
18
|
|
19
19
|
## Installation
|
20
20
|
|
@@ -92,29 +92,59 @@ module Oktobertest
|
|
92
92
|
end
|
93
93
|
```
|
94
94
|
|
95
|
-
### Running
|
95
|
+
### Running a test suite
|
96
96
|
|
97
|
-
You can run
|
97
|
+
You can run a test suite using `rake` or `ruby`.
|
98
98
|
|
99
99
|
Using `rake`:
|
100
100
|
|
101
101
|
```ruby
|
102
|
-
require '
|
102
|
+
require 'rake/testtask'
|
103
103
|
|
104
|
-
|
105
|
-
|
104
|
+
Rake::TestTask.new do |t|
|
105
|
+
t.libs << 'test'
|
106
|
+
t.pattern = 'test/*_test.rb'
|
106
107
|
end
|
107
108
|
|
108
109
|
task default: :test
|
109
110
|
```
|
110
111
|
|
111
|
-
Using `
|
112
|
+
Using `ruby`:
|
112
113
|
|
113
114
|
```bash
|
114
|
-
$
|
115
|
+
$ ruby -r oktobertest test/*_test.rb
|
115
116
|
```
|
116
117
|
|
117
|
-
|
118
|
+
When using `ruby` directly, you can specify two options: `--scope` and `--test`.
|
119
|
+
|
120
|
+
```bash
|
121
|
+
$ ruby -r oktobertest test/*_test.rb --test 'test this'
|
122
|
+
```
|
123
|
+
|
124
|
+
### Testing Rack applications
|
125
|
+
|
126
|
+
Pretty simple:
|
127
|
+
|
128
|
+
```ruby
|
129
|
+
require 'rack/test'
|
130
|
+
|
131
|
+
module Oktobertest
|
132
|
+
class Test
|
133
|
+
include Rack::Test::Methods
|
134
|
+
|
135
|
+
def app
|
136
|
+
Proc.new { |env| [200, {}, ['hello world']] }
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
scope 'rack app' do
|
142
|
+
test 'GET /' do
|
143
|
+
get '/'
|
144
|
+
assert last_response.status == 200
|
145
|
+
end
|
146
|
+
end
|
147
|
+
```
|
118
148
|
|
119
149
|
## Contributing
|
120
150
|
|
data/Rakefile
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
task :test do
|
7
|
-
Oktobertest.run Dir['test/*_test.rb']
|
4
|
+
Rake::TestTask.new do |t|
|
5
|
+
t.libs << 'test'
|
6
|
+
t.pattern = 'test/*_test.rb'
|
8
7
|
end
|
9
8
|
|
10
9
|
task default: :test
|
data/lib/oktobertest.rb
CHANGED
@@ -1,43 +1,35 @@
|
|
1
|
+
require 'clap'
|
2
|
+
|
1
3
|
module Oktobertest
|
2
|
-
VERSION = '0.0
|
4
|
+
VERSION = '0.1.0'
|
3
5
|
|
4
6
|
TestFailed = Class.new StandardError
|
5
7
|
TestSkipped = Class.new StandardError
|
6
8
|
|
7
|
-
def self.
|
8
|
-
files.each { |file| load file }
|
9
|
+
def self.display_errors
|
9
10
|
puts
|
10
11
|
errors.each do |error|
|
11
12
|
case error
|
12
13
|
when TestFailed
|
13
|
-
file, line, _ = error.backtrace[2].split
|
14
|
+
file, line, _ = error.backtrace[2].split ':'
|
14
15
|
print "\nerror: #{error.message}"
|
15
16
|
when TestSkipped
|
16
|
-
file, line, _ = error.backtrace[1].split
|
17
|
+
file, line, _ = error.backtrace[1].split ':'
|
17
18
|
print "\nskip"
|
18
|
-
print ": #{error.message}" unless error.message == error.class.name
|
19
19
|
else
|
20
|
-
file, line, _ = error.backtrace[0].split
|
20
|
+
file, line, _ = error.backtrace[0].split ':'
|
21
21
|
print "\nerror: #{error.message}"
|
22
22
|
end
|
23
23
|
print "\nfile: #{file}\nline: #{line}\n"
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
def self.
|
28
|
-
@
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.run_test
|
32
|
-
@run_test
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.run_scope=(name)
|
36
|
-
@run_scope = name
|
27
|
+
def self.errors
|
28
|
+
@errors ||= []
|
37
29
|
end
|
38
30
|
|
39
|
-
def self.
|
40
|
-
@
|
31
|
+
def self.options
|
32
|
+
@options ||= {}
|
41
33
|
end
|
42
34
|
|
43
35
|
module Assertions
|
@@ -60,8 +52,8 @@ module Oktobertest
|
|
60
52
|
raise TestFailed, message
|
61
53
|
end
|
62
54
|
|
63
|
-
def skip
|
64
|
-
raise TestSkipped
|
55
|
+
def skip
|
56
|
+
raise TestSkipped
|
65
57
|
end
|
66
58
|
end
|
67
59
|
|
@@ -75,12 +67,16 @@ module Oktobertest
|
|
75
67
|
instance_eval &@block
|
76
68
|
end
|
77
69
|
|
70
|
+
def run?
|
71
|
+
!Oktobertest.options[:run_scope] || Oktobertest.options[:run_scope] == @name
|
72
|
+
end
|
73
|
+
|
78
74
|
protected
|
79
75
|
|
80
76
|
def test(name = nil, &block)
|
81
|
-
|
82
|
-
|
83
|
-
|
77
|
+
test = Test.new name, &block
|
78
|
+
public_methods(false).reject { |m| m == :run || m == :run? }.each { |m| test.define_singleton_method m, &method(m) }
|
79
|
+
if test.run?
|
84
80
|
@setup.each { |b| test.instance_eval &b }
|
85
81
|
test.run
|
86
82
|
@teardown.each { |b| test.instance_eval &b }
|
@@ -96,13 +92,11 @@ module Oktobertest
|
|
96
92
|
end
|
97
93
|
|
98
94
|
def scope(name = nil, &block)
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
scope.run
|
105
|
-
end
|
95
|
+
scope = Scope.new name, &block
|
96
|
+
singleton_methods.each { |m| scope.define_singleton_method m, &method(m) }
|
97
|
+
@setup.each { |b| scope.setup &b }
|
98
|
+
@teardown.each { |b| scope.teardown &b }
|
99
|
+
scope.run if scope.run?
|
106
100
|
end
|
107
101
|
end
|
108
102
|
|
@@ -117,28 +111,32 @@ module Oktobertest
|
|
117
111
|
instance_eval &@block
|
118
112
|
print '.'
|
119
113
|
rescue TestFailed => error
|
120
|
-
Oktobertest.errors << error
|
121
114
|
print 'F'
|
122
115
|
rescue TestSkipped => error
|
123
|
-
Oktobertest.errors << error
|
124
116
|
print 'S'
|
125
117
|
rescue StandardError => error
|
126
|
-
Oktobertest.errors << error
|
127
118
|
print 'E'
|
119
|
+
ensure
|
120
|
+
Oktobertest.errors << error unless error.nil?
|
128
121
|
end
|
129
|
-
end
|
130
122
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
@errors ||= []
|
123
|
+
def run?
|
124
|
+
!Oktobertest.options[:run_test] || Oktobertest.options[:run_test] == @name
|
125
|
+
end
|
135
126
|
end
|
136
127
|
end
|
137
128
|
|
138
129
|
module Kernel
|
130
|
+
private
|
131
|
+
|
139
132
|
def scope(name = nil, &block)
|
140
|
-
|
141
|
-
|
142
|
-
end
|
133
|
+
scope = Oktobertest::Scope.new name, &block
|
134
|
+
scope.run if scope.run?
|
143
135
|
end
|
144
136
|
end
|
137
|
+
|
138
|
+
Clap.run ARGV,
|
139
|
+
'--scope' => ->(name) { Oktobertest.options[:run_scope] = name },
|
140
|
+
'--test' => ->(name) { Oktobertest.options[:run_test] = name }
|
141
|
+
|
142
|
+
at_exit { Oktobertest.display_errors }
|
data/oktobertest.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.5'
|
22
|
+
spec.add_development_dependency 'codeclimate-test-reporter'
|
22
23
|
spec.add_development_dependency 'rake'
|
23
24
|
|
24
25
|
spec.add_runtime_dependency 'clap', '~> 1.0.0'
|
data/test/assertions_test.rb
CHANGED
@@ -1,43 +1,35 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
1
3
|
scope 'assert' do
|
2
4
|
test 'passes if the value is true' do
|
3
5
|
assert true
|
4
6
|
end
|
5
7
|
|
6
8
|
test 'fails if the value is false' do
|
7
|
-
assert_raises
|
8
|
-
assert false
|
9
|
-
end
|
9
|
+
assert_raises(Oktobertest::TestFailed) { assert false }
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
scope 'assert_raises' do
|
14
14
|
test 'passes if the block raises the given exception' do
|
15
|
-
assert_raises RuntimeError
|
16
|
-
raise RuntimeError
|
17
|
-
end
|
15
|
+
assert_raises(RuntimeError) { raise RuntimeError }
|
18
16
|
end
|
19
17
|
|
20
18
|
test 'fails if the block does not raise the given exception' do
|
21
19
|
assert_raises Oktobertest::TestFailed do
|
22
|
-
assert_raises
|
23
|
-
raise ArgumentError
|
24
|
-
end
|
20
|
+
assert_raises(RuntimeError) { raise ArgumentError }
|
25
21
|
end
|
26
22
|
end
|
27
23
|
end
|
28
24
|
|
29
25
|
scope 'flunk' do
|
30
26
|
test 'raises Oktobertest::TestFailed exception' do
|
31
|
-
assert_raises
|
32
|
-
flunk
|
33
|
-
end
|
27
|
+
assert_raises(Oktobertest::TestFailed) { flunk }
|
34
28
|
end
|
35
29
|
end
|
36
30
|
|
37
31
|
scope 'skip' do
|
38
32
|
test 'raises Oktobertest::TestSkipped exception' do
|
39
|
-
assert_raises
|
40
|
-
skip
|
41
|
-
end
|
33
|
+
assert_raises(Oktobertest::TestSkipped) { skip }
|
42
34
|
end
|
43
35
|
end
|
data/test/fixtures/error_test.rb
CHANGED
data/test/helper.rb
ADDED
data/test/oktobertest_test.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
1
3
|
scope do
|
2
4
|
test 'successful run' do
|
3
5
|
expected = ".\n"
|
4
|
-
output = %x(
|
6
|
+
output = %x(ruby test/fixtures/successful_test.rb)
|
5
7
|
assert expected == output
|
6
8
|
end
|
7
9
|
|
@@ -11,9 +13,9 @@ E
|
|
11
13
|
|
12
14
|
error: RuntimeError
|
13
15
|
file: test/fixtures/error_test.rb
|
14
|
-
line:
|
16
|
+
line: 4
|
15
17
|
EOS
|
16
|
-
output = %x(
|
18
|
+
output = %x(ruby test/fixtures/error_test.rb)
|
17
19
|
assert expected == output
|
18
20
|
end
|
19
21
|
|
@@ -23,9 +25,9 @@ F
|
|
23
25
|
|
24
26
|
error: condition is not true: false
|
25
27
|
file: test/fixtures/failing_test.rb
|
26
|
-
line:
|
28
|
+
line: 4
|
27
29
|
EOS
|
28
|
-
output = %x(
|
30
|
+
output = %x(ruby test/fixtures/failing_test.rb)
|
29
31
|
assert expected == output
|
30
32
|
end
|
31
33
|
|
@@ -35,21 +37,21 @@ S
|
|
35
37
|
|
36
38
|
skip
|
37
39
|
file: test/fixtures/skipped_test.rb
|
38
|
-
line:
|
40
|
+
line: 4
|
39
41
|
EOS
|
40
|
-
output = %x(
|
42
|
+
output = %x(ruby test/fixtures/skipped_test.rb)
|
41
43
|
assert expected == output
|
42
44
|
end
|
43
45
|
|
44
46
|
test 'run only one scope' do
|
45
47
|
expected = "..\n"
|
46
|
-
output = %x(
|
48
|
+
output = %x(ruby test/fixtures/run_scope_test.rb --scope 'run this')
|
47
49
|
assert expected == output
|
48
50
|
end
|
49
51
|
|
50
52
|
test 'run only one test' do
|
51
53
|
expected = ".\n"
|
52
|
-
output = %x(
|
54
|
+
output = %x(ruby test/fixtures/run_test_test.rb --test 'run this')
|
53
55
|
assert expected == output
|
54
56
|
end
|
55
57
|
end
|
data/test/scope_test.rb
CHANGED
@@ -1,19 +1,33 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
1
3
|
scope do
|
2
4
|
def foo
|
3
5
|
'foo'
|
4
6
|
end
|
5
7
|
|
6
8
|
test 'responds to foo' do
|
9
|
+
assert respond_to? :foo
|
7
10
|
assert foo == 'foo'
|
8
11
|
end
|
9
12
|
|
10
13
|
scope do
|
11
|
-
test 'responds to foo
|
14
|
+
test 'responds to foo' do
|
15
|
+
assert respond_to? :foo
|
12
16
|
assert foo == 'foo'
|
13
17
|
end
|
14
18
|
end
|
15
19
|
end
|
16
20
|
|
21
|
+
scope do
|
22
|
+
test 'does not respond to foo' do
|
23
|
+
assert !respond_to?(:foo)
|
24
|
+
end
|
25
|
+
|
26
|
+
def foo
|
27
|
+
'foo'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
17
31
|
scope do
|
18
32
|
setup do
|
19
33
|
@foo = 'foo'
|
@@ -24,13 +38,13 @@ scope do
|
|
24
38
|
@bar = 'bar'
|
25
39
|
end
|
26
40
|
|
27
|
-
test 'foo and bar
|
41
|
+
test 'foo and bar are defined' do
|
28
42
|
assert @foo == 'foo'
|
29
43
|
assert @bar == 'bar'
|
30
44
|
end
|
31
45
|
end
|
32
46
|
|
33
|
-
test 'foo
|
47
|
+
test 'foo is defined and bar is not' do
|
34
48
|
assert @foo == 'foo'
|
35
49
|
assert @bar.nil?
|
36
50
|
end
|
data/test/setup_test.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
1
3
|
scope do
|
2
4
|
setup do
|
3
5
|
@foo = 'foo'
|
@@ -8,7 +10,7 @@ scope do
|
|
8
10
|
end
|
9
11
|
|
10
12
|
scope do
|
11
|
-
test 'foo is defined
|
13
|
+
test 'foo is defined' do
|
12
14
|
assert @foo == 'foo'
|
13
15
|
end
|
14
16
|
end
|
@@ -24,7 +26,7 @@ scope do
|
|
24
26
|
@foo = 'bar'
|
25
27
|
end
|
26
28
|
|
27
|
-
test 'foo
|
29
|
+
test 'foo has not changed' do
|
28
30
|
assert @foo == 'foo'
|
29
31
|
end
|
30
32
|
end
|
data/test/teardown_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oktobertest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patricio Mac Adden
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: codeclimate-test-reporter
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -55,17 +69,16 @@ dependencies:
|
|
55
69
|
description: Small test library
|
56
70
|
email:
|
57
71
|
- patriciomacadden@gmail.com
|
58
|
-
executables:
|
59
|
-
- ok
|
72
|
+
executables: []
|
60
73
|
extensions: []
|
61
74
|
extra_rdoc_files: []
|
62
75
|
files:
|
63
76
|
- ".gitignore"
|
77
|
+
- ".travis.yml"
|
64
78
|
- Gemfile
|
65
79
|
- LICENSE
|
66
80
|
- README.md
|
67
81
|
- Rakefile
|
68
|
-
- bin/ok
|
69
82
|
- lib/oktobertest.rb
|
70
83
|
- oktobertest.gemspec
|
71
84
|
- test/assertions_test.rb
|
@@ -75,6 +88,7 @@ files:
|
|
75
88
|
- test/fixtures/run_test_test.rb
|
76
89
|
- test/fixtures/skipped_test.rb
|
77
90
|
- test/fixtures/successful_test.rb
|
91
|
+
- test/helper.rb
|
78
92
|
- test/oktobertest_test.rb
|
79
93
|
- test/scope_test.rb
|
80
94
|
- test/setup_test.rb
|
@@ -111,6 +125,7 @@ test_files:
|
|
111
125
|
- test/fixtures/run_test_test.rb
|
112
126
|
- test/fixtures/skipped_test.rb
|
113
127
|
- test/fixtures/successful_test.rb
|
128
|
+
- test/helper.rb
|
114
129
|
- test/oktobertest_test.rb
|
115
130
|
- test/scope_test.rb
|
116
131
|
- test/setup_test.rb
|
data/bin/ok
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
puts 'usage: ok [-r lib] [-s scope] [-t test] [-v] file ...' if ARGV.empty?
|
4
|
-
|
5
|
-
require 'clap'
|
6
|
-
require_relative '../lib/oktobertest'
|
7
|
-
|
8
|
-
files = Clap.run ARGV,
|
9
|
-
'-r' => ->(file) { require file },
|
10
|
-
'-s' => ->(name) { Oktobertest.run_scope = name },
|
11
|
-
'-t' => ->(name) { Oktobertest.run_test = name },
|
12
|
-
'-v' => -> { puts Oktobertest::VERSION }
|
13
|
-
|
14
|
-
Oktobertest.run files if files.any?
|