shindo 0.0.2 → 0.0.3
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.
- data/README.rdoc +22 -22
- data/Rakefile +4 -4
- data/VERSION +1 -1
- data/bin/shindo +9 -10
- data/lib/shindo.rb +7 -3
- data/shindo.gemspec +6 -3
- data/tests/basic_tests.rb +40 -0
- data/tests/tag_tests.rb +37 -0
- data/tests/tests_helper.rb +16 -0
- metadata +5 -2
data/README.rdoc
CHANGED
|
@@ -8,65 +8,65 @@ There are two commands you should know, 'tests' and 'test'. Tests help you group
|
|
|
8
8
|
|
|
9
9
|
A successful test should return true. (yay)
|
|
10
10
|
|
|
11
|
-
Shindo.tests
|
|
11
|
+
Shindo.tests do
|
|
12
12
|
test('something really important') { true }
|
|
13
|
-
|
|
13
|
+
end
|
|
14
14
|
|
|
15
15
|
A failing test should return false or nil. (boo)
|
|
16
16
|
|
|
17
|
-
Shindo.tests
|
|
17
|
+
Shindo.tests do
|
|
18
18
|
test('something (hopefully) less important') { false }
|
|
19
|
-
|
|
19
|
+
end
|
|
20
20
|
|
|
21
21
|
A pending test shouldn't even have a block (meh)
|
|
22
22
|
|
|
23
|
-
Shindo.tests
|
|
23
|
+
Shindo.tests do
|
|
24
24
|
test('something that hasn't been gotten around to yet')
|
|
25
|
-
|
|
25
|
+
end
|
|
26
26
|
|
|
27
27
|
Grouping tests
|
|
28
28
|
|
|
29
|
-
Shindo.tests
|
|
30
|
-
tests('foo/bar')
|
|
29
|
+
Shindo.tests do
|
|
30
|
+
tests('foo/bar') do
|
|
31
31
|
test('foo') { true }
|
|
32
32
|
test('bar') { true }
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
35
|
|
|
36
36
|
You can also have descriptions for Shindo.tests, and write that last one like this
|
|
37
37
|
|
|
38
|
-
Shindo.tests('foo/bar')
|
|
38
|
+
Shindo.tests('foo/bar') do
|
|
39
39
|
test('foo') { true }
|
|
40
40
|
test('bar') { false }
|
|
41
|
-
|
|
41
|
+
end
|
|
42
42
|
|
|
43
43
|
Nest tests as deeply as you would like.
|
|
44
44
|
|
|
45
45
|
Then, if you want to get real fancy you can also tag your tests, to help narrow down which ones to run
|
|
46
46
|
|
|
47
|
-
Shindo.tests
|
|
48
|
-
tests('foo/bar', ['foo', 'bar'])
|
|
47
|
+
Shindo.tests do
|
|
48
|
+
tests('foo/bar', ['foo', 'bar']) do
|
|
49
49
|
test('foo') { true }
|
|
50
50
|
test('bar') { true }
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
53
|
|
|
54
54
|
Or if you can narrow down even more tightly
|
|
55
55
|
|
|
56
|
-
Shindo.tests
|
|
57
|
-
tests('foo/bar')
|
|
56
|
+
Shindo.tests do
|
|
57
|
+
tests('foo/bar') do
|
|
58
58
|
test('foo', ['foo']) { true }
|
|
59
59
|
test('bar', ['bar']) { true }
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
62
|
|
|
63
63
|
== Running tests
|
|
64
64
|
|
|
65
65
|
Run tests with the shindo command, the easiest is to specify a file name:
|
|
66
66
|
|
|
67
|
-
shindo
|
|
67
|
+
shindo something_tests.rb
|
|
68
68
|
|
|
69
|
-
You can also give directories and it will run all .rb
|
|
69
|
+
You can also give directories and it will run all files ending in _tests.rb (recurses through subdirectories)
|
|
70
70
|
|
|
71
71
|
shindo some_test_directory
|
|
72
72
|
|
data/Rakefile
CHANGED
|
@@ -20,16 +20,16 @@ end
|
|
|
20
20
|
|
|
21
21
|
require 'rake/testtask'
|
|
22
22
|
Rake::TestTask.new(:test) do |test|
|
|
23
|
-
test.libs << 'lib' << '
|
|
24
|
-
test.pattern = '
|
|
23
|
+
test.libs << 'lib' << 'tests'
|
|
24
|
+
test.pattern = 'tests/**/*_tests.rb'
|
|
25
25
|
test.verbose = true
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
begin
|
|
29
29
|
require 'rcov/rcovtask'
|
|
30
30
|
Rcov::RcovTask.new do |test|
|
|
31
|
-
test.libs << '
|
|
32
|
-
test.pattern = '
|
|
31
|
+
test.libs << 'tests'
|
|
32
|
+
test.pattern = 'tests/**/*_tests.rb'
|
|
33
33
|
test.verbose = true
|
|
34
34
|
end
|
|
35
35
|
rescue LoadError
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0.
|
|
1
|
+
0.0.3
|
data/bin/shindo
CHANGED
|
@@ -9,14 +9,14 @@ for argument in ARGV
|
|
|
9
9
|
else
|
|
10
10
|
path = File.expand_path(argument)
|
|
11
11
|
if File.directory?(path)
|
|
12
|
-
files |= Dir.glob(File.join(path, '**', '
|
|
12
|
+
files |= Dir.glob(File.join(path, '**', '*_tests.rb'))
|
|
13
13
|
else
|
|
14
14
|
files << path
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
success = true
|
|
19
|
+
@success = true
|
|
20
20
|
def run_in_thread(files, tags)
|
|
21
21
|
tests = Thread.new {
|
|
22
22
|
Thread.current[:tags] = tags
|
|
@@ -26,17 +26,16 @@ def run_in_thread(files, tags)
|
|
|
26
26
|
}
|
|
27
27
|
tests.join
|
|
28
28
|
if tests[:reload]
|
|
29
|
+
@success = true
|
|
29
30
|
run_in_thread(files, tags)
|
|
30
31
|
else
|
|
31
|
-
success = success && tests[:success]
|
|
32
|
+
@success = @success && tests[:success]
|
|
32
33
|
end
|
|
33
34
|
end
|
|
34
35
|
run_in_thread(files, tags)
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
end
|
|
42
|
-
}
|
|
37
|
+
if @success
|
|
38
|
+
Kernel.exit(0)
|
|
39
|
+
else
|
|
40
|
+
Kernel.exit(1)
|
|
41
|
+
end
|
data/lib/shindo.rb
CHANGED
|
@@ -17,8 +17,12 @@ module Shindo
|
|
|
17
17
|
@annals = Annals.new
|
|
18
18
|
@befores = []
|
|
19
19
|
@description_stack = []
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
self.if_tagged = Thread.current[:tags].
|
|
21
|
+
select {|tag| tag.match(/^\+/)}.
|
|
22
|
+
map {|tag| tag[1..-1]}
|
|
23
|
+
self.unless_tagged = Thread.current[:tags].
|
|
24
|
+
select {|tag| tag.match(/^\-/)}.
|
|
25
|
+
map {|tag| tag[1..-1]}
|
|
22
26
|
@indent = 1
|
|
23
27
|
@success = true
|
|
24
28
|
@tag_stack = []
|
|
@@ -27,7 +31,7 @@ module Shindo
|
|
|
27
31
|
tests(header, &block)
|
|
28
32
|
print("\n")
|
|
29
33
|
if @success
|
|
30
|
-
Thread.current[:success] =
|
|
34
|
+
Thread.current[:success] = true
|
|
31
35
|
else
|
|
32
36
|
Thread.current[:success] = false
|
|
33
37
|
end
|
data/shindo.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{shindo}
|
|
8
|
-
s.version = "0.0.
|
|
8
|
+
s.version = "0.0.3"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["geemus (Wesley Beary)"]
|
|
12
|
-
s.date = %q{2009-
|
|
12
|
+
s.date = %q{2009-11-02}
|
|
13
13
|
s.default_executable = %q{shindo}
|
|
14
14
|
s.description = %q{Simple depth first ruby testing}
|
|
15
15
|
s.email = %q{me@geemus.com}
|
|
@@ -25,7 +25,10 @@ Gem::Specification.new do |s|
|
|
|
25
25
|
"VERSION",
|
|
26
26
|
"bin/shindo",
|
|
27
27
|
"lib/shindo.rb",
|
|
28
|
-
"shindo.gemspec"
|
|
28
|
+
"shindo.gemspec",
|
|
29
|
+
"tests/basic_tests.rb",
|
|
30
|
+
"tests/tag_tests.rb",
|
|
31
|
+
"tests/tests_helper.rb"
|
|
29
32
|
]
|
|
30
33
|
s.homepage = %q{http://github.com/geemus/shindo}
|
|
31
34
|
s.rdoc_options = ["--charset=UTF-8"]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'tests_helper')
|
|
2
|
+
|
|
3
|
+
success = Tempfile.new('success')
|
|
4
|
+
success << <<-TESTS
|
|
5
|
+
Shindo.tests do
|
|
6
|
+
test('success') { true }
|
|
7
|
+
end
|
|
8
|
+
TESTS
|
|
9
|
+
success.close
|
|
10
|
+
|
|
11
|
+
failure = Tempfile.new('failure')
|
|
12
|
+
failure << <<-TESTS
|
|
13
|
+
Shindo.tests do
|
|
14
|
+
test('failure') { false }
|
|
15
|
+
end
|
|
16
|
+
TESTS
|
|
17
|
+
failure.close
|
|
18
|
+
|
|
19
|
+
pending = Tempfile.new('pending')
|
|
20
|
+
pending << <<-TESTS
|
|
21
|
+
Shindo.tests do
|
|
22
|
+
test('pending')
|
|
23
|
+
end
|
|
24
|
+
TESTS
|
|
25
|
+
pending.close
|
|
26
|
+
|
|
27
|
+
Shindo.tests('basics') do
|
|
28
|
+
tests('failure') do
|
|
29
|
+
test('output') { `#{BIN} #{failure.path}`.include?('- failure') }
|
|
30
|
+
test('status') { $?.exitstatus == 1 }
|
|
31
|
+
end
|
|
32
|
+
tests('pending') do
|
|
33
|
+
test('output') { `#{BIN} #{pending.path}`.include?('* pending') }
|
|
34
|
+
test('status') { $?.exitstatus == 0 }
|
|
35
|
+
end
|
|
36
|
+
tests('success') do
|
|
37
|
+
test('output') { `#{BIN} #{success.path}`.include?('+ success') }
|
|
38
|
+
test('status') { $?.exitstatus == 0 }
|
|
39
|
+
end
|
|
40
|
+
end
|
data/tests/tag_tests.rb
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'tests_helper')
|
|
2
|
+
|
|
3
|
+
negative = Tempfile.new('negative')
|
|
4
|
+
negative << <<-TESTS
|
|
5
|
+
Shindo.tests do
|
|
6
|
+
test('is tested') { true }
|
|
7
|
+
test('is skipped', 'negative') { false }
|
|
8
|
+
end
|
|
9
|
+
TESTS
|
|
10
|
+
negative.close
|
|
11
|
+
|
|
12
|
+
positive = Tempfile.new('positive')
|
|
13
|
+
positive << <<-TESTS
|
|
14
|
+
Shindo.tests do
|
|
15
|
+
test('is tested', 'positive') { true }
|
|
16
|
+
test('is skipped') { false }
|
|
17
|
+
end
|
|
18
|
+
TESTS
|
|
19
|
+
positive.close
|
|
20
|
+
|
|
21
|
+
Shindo.tests('tags') do
|
|
22
|
+
|
|
23
|
+
tests('negative') do
|
|
24
|
+
before { @output = `#{BIN} #{negative.path} -negative` }
|
|
25
|
+
test('is tested') { @output.include?('+ is tested') }
|
|
26
|
+
test('is skipped') { @output.include?('_ is skipped [negative]') }
|
|
27
|
+
test('status') { $?.exitstatus == 0 }
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
tests('positive') do
|
|
31
|
+
before { @output = `#{BIN} #{positive.path} +positive` }
|
|
32
|
+
test('is tested') { @output.include?('+ is tested [positive]') }
|
|
33
|
+
test('is skipped') { @output.include?('_ is skipped') }
|
|
34
|
+
test('status') { $?.exitstatus == 0 }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
3
|
+
require 'shindo'
|
|
4
|
+
require 'tempfile'
|
|
5
|
+
|
|
6
|
+
unless Object.const_defined?(:BIN)
|
|
7
|
+
BIN = File.join(File.dirname(__FILE__), '..', 'bin', 'shindo')
|
|
8
|
+
end
|
|
9
|
+
tags = Thread.current[:tags] || []
|
|
10
|
+
ARGV.each do |arg|
|
|
11
|
+
if arg.match(/^[\+\-]/)
|
|
12
|
+
tags << arg
|
|
13
|
+
ARGV.delete(arg)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
Thread.current[:tags] = tags
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: shindo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- geemus (Wesley Beary)
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-
|
|
12
|
+
date: 2009-11-02 00:00:00 -08:00
|
|
13
13
|
default_executable: shindo
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -39,6 +39,9 @@ files:
|
|
|
39
39
|
- bin/shindo
|
|
40
40
|
- lib/shindo.rb
|
|
41
41
|
- shindo.gemspec
|
|
42
|
+
- tests/basic_tests.rb
|
|
43
|
+
- tests/tag_tests.rb
|
|
44
|
+
- tests/tests_helper.rb
|
|
42
45
|
has_rdoc: true
|
|
43
46
|
homepage: http://github.com/geemus/shindo
|
|
44
47
|
licenses: []
|