nanotest 0.9.2 → 0.9.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest +1 -0
- data/README.rdoc +12 -9
- data/Rakefile +4 -34
- data/lib/nanotest.rb +11 -7
- data/nanotest.gemspec +15 -0
- data/test/test_nanotest.rb +55 -28
- metadata +4 -3
data/Manifest
CHANGED
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
=== Summary
|
2
2
|
|
3
|
-
Extremely mynymal test framework. Perfect for DIY lovers.
|
3
|
+
Extremely mynymal test framework. Perfect for DIY lovers. Nanotest provides
|
4
4
|
the bare mynymum needed; for everything else, there's ruby.
|
5
5
|
|
6
6
|
=== Install
|
@@ -10,23 +10,26 @@ the bare mynymum needed; for everything else, there's ruby.
|
|
10
10
|
=== Examples
|
11
11
|
|
12
12
|
require 'nanotest'
|
13
|
-
include
|
13
|
+
include Nanotest
|
14
14
|
|
15
|
-
assert {
|
16
|
-
assert { 1
|
17
|
-
assert { 1
|
15
|
+
assert { 1 == 1 }
|
16
|
+
assert { 2 > 1 }
|
17
|
+
assert { not 1 > 2 }
|
18
|
+
assert { 1 == 2 } #line 12
|
18
19
|
|
19
20
|
outputs:
|
20
21
|
|
21
|
-
|
22
|
+
...F
|
22
23
|
(examples.rb:012) assertion failed
|
23
24
|
|
25
|
+
There's also a real life example at http://github.com/mynyml/phocus/blob/master/test/test_phocus.rb
|
26
|
+
|
24
27
|
=== API
|
25
28
|
|
26
|
-
|
29
|
+
Nanotest has a single method: #assert. You can either include Nanotest as
|
27
30
|
above, or use its method directly:
|
28
31
|
|
29
|
-
|
32
|
+
Nanotest.assert { true }
|
30
33
|
|
31
34
|
Its block is expected to return a boolean. If it's false it fails, otherwise
|
32
35
|
it passes. Simple as that.
|
@@ -42,7 +45,7 @@ fancy, check out the wiki for a few tips and tricks.
|
|
42
45
|
=== Stats
|
43
46
|
|
44
47
|
$ rake -s loc
|
45
|
-
lib files contain
|
48
|
+
lib files contain 18 SLOCs
|
46
49
|
|
47
50
|
=== Links
|
48
51
|
|
data/Rakefile
CHANGED
@@ -1,39 +1,8 @@
|
|
1
|
-
# --------------------------------------------------
|
2
|
-
# Gem
|
3
|
-
# --------------------------------------------------
|
4
|
-
def gemspec
|
5
|
-
@gemspec ||= Gem::Specification.new do |s|
|
6
|
-
s.name = "nanotest"
|
7
|
-
s.summary = "When all you need is #assert"
|
8
|
-
s.description = "Extremely mynymal test framework. Perfect for DIY lovers. NanoTest provides the bare mynymum needed; for everything else, there's ruby."
|
9
|
-
s.author = "Martin Aumont"
|
10
|
-
s.email = "mynyml@gmail.com"
|
11
|
-
s.homepage = "http://github.com/mynyml/nanotest"
|
12
|
-
s.rubyforge_project = "nanotest"
|
13
|
-
s.has_rdoc = false
|
14
|
-
s.require_path = "lib"
|
15
|
-
s.version = "0.9.2"
|
16
|
-
s.files = File.read("Manifest").strip.split("\n")
|
17
|
-
|
18
|
-
s.add_development_dependency 'minitest'
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
desc "Create a Ruby GEM package with the given name and version."
|
23
|
-
task(:gem) do
|
24
|
-
file = Gem::Builder.new(gemspec).build
|
25
|
-
FileUtils.mkdir 'pkg/' unless File.directory? 'pkg'
|
26
|
-
FileUtils.mv file, "pkg/#{file}", :verbose => true
|
27
|
-
end
|
28
|
-
|
29
|
-
desc "Create gemspec file"
|
30
|
-
task(:gemspec) do
|
31
|
-
open("#{gemspec.name}.gemspec", 'w') {|f| f << YAML.dump(gemspec) }
|
32
|
-
end
|
33
|
-
|
34
1
|
# --------------------------------------------------
|
35
2
|
# Tests
|
36
3
|
# --------------------------------------------------
|
4
|
+
task(:default => "test:all")
|
5
|
+
|
37
6
|
namespace(:test) do
|
38
7
|
|
39
8
|
desc "Run all tests"
|
@@ -46,7 +15,7 @@ namespace(:test) do
|
|
46
15
|
|
47
16
|
desc "Run all tests on multiple ruby versions (requires rvm)"
|
48
17
|
task(:portability) do
|
49
|
-
versions = %w( 1.8.6 1.8.7 1.9 1.9.2 jruby
|
18
|
+
versions = %w( 1.8.6 1.8.7 1.9 1.9.2 jruby )
|
50
19
|
versions.each do |version|
|
51
20
|
system <<-BASH
|
52
21
|
bash -c 'source ~/.rvm/scripts/rvm;
|
@@ -76,6 +45,7 @@ desc "LOC count"
|
|
76
45
|
task(:loc) do
|
77
46
|
loc = 0
|
78
47
|
Dir['lib/**/*'].each do |file|
|
48
|
+
next if File.directory?(file)
|
79
49
|
File.read(file).each_line do |line|
|
80
50
|
loc += 1 unless line.strip.empty? || line.strip =~ /^#/
|
81
51
|
end
|
data/lib/nanotest.rb
CHANGED
@@ -1,18 +1,22 @@
|
|
1
|
-
module
|
1
|
+
module Nanotest
|
2
2
|
extend self
|
3
3
|
|
4
|
-
|
4
|
+
@@failures, @@dots = [], []
|
5
5
|
|
6
|
-
def assert(msg=
|
6
|
+
def assert(msg=nil, file=nil, line=nil, &block)
|
7
7
|
unless block.call
|
8
8
|
file ||= caller.first.split(':')[0]
|
9
9
|
line ||= caller.first.split(':')[1]
|
10
|
-
|
11
|
-
|
10
|
+
@@failures << "(%s:%0.3d) %s" % [file, line, msg || "assertion failed"]
|
11
|
+
@@dots << 'F'
|
12
12
|
else
|
13
|
-
|
13
|
+
@@dots << '.'
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
def self.results #:nodoc:
|
18
|
+
@@dots.join + "\n" + @@failures.join("\n")
|
19
|
+
end
|
20
|
+
|
21
|
+
at_exit { puts results unless results.strip.empty? }
|
18
22
|
end
|
data/nanotest.gemspec
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "nanotest"
|
3
|
+
s.summary = "When all you need is #assert"
|
4
|
+
s.description = "Extremely mynymal test framework. Perfect for DIY lovers. Nanotest provides the bare mynymum needed; for everything else, there's ruby."
|
5
|
+
s.author = "Martin Aumont"
|
6
|
+
s.email = "mynyml@gmail.com"
|
7
|
+
s.homepage = "http://github.com/mynyml/nanotest"
|
8
|
+
s.rubyforge_project = "nanotest"
|
9
|
+
s.has_rdoc = false
|
10
|
+
s.require_path = "lib"
|
11
|
+
s.version = "0.9.3"
|
12
|
+
s.files = File.read("Manifest").strip.split("\n")
|
13
|
+
|
14
|
+
s.add_development_dependency 'minitest'
|
15
|
+
end
|
data/test/test_nanotest.rb
CHANGED
@@ -1,53 +1,80 @@
|
|
1
|
+
require 'minitest/autorun'
|
1
2
|
require 'test/test_helper'
|
2
3
|
|
3
|
-
|
4
|
+
module Nanotest
|
5
|
+
class << self
|
6
|
+
def failures() @@failures end
|
7
|
+
def dots() @@dots end
|
8
|
+
end
|
9
|
+
|
10
|
+
# don't autorun
|
11
|
+
def at_exit() end
|
12
|
+
end
|
13
|
+
require 'nanotest'
|
14
|
+
|
15
|
+
# fixture class for nanotest mixin
|
16
|
+
class Foo
|
17
|
+
include Nanotest
|
18
|
+
end
|
19
|
+
|
20
|
+
class TestNanotest < MiniTest::Unit::TestCase
|
21
|
+
def self.test(name, &block)
|
22
|
+
define_method("test_#{name.gsub(/\s/,'_')}", &block)
|
23
|
+
end
|
4
24
|
|
5
25
|
def teardown
|
6
|
-
|
26
|
+
Nanotest::dots.clear
|
27
|
+
Nanotest::failures.clear
|
7
28
|
end
|
8
29
|
|
9
30
|
test "api" do
|
10
|
-
class Foo; include NanoTest end
|
11
31
|
assert_respond_to Foo.new, :assert
|
12
|
-
assert_respond_to
|
32
|
+
assert_respond_to Nanotest, :assert
|
13
33
|
end
|
14
34
|
|
15
35
|
test "assertion passes" do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
assert_equal '.', out
|
20
|
-
assert_empty NanoTest::FAILURES
|
36
|
+
Nanotest.assert { true }
|
37
|
+
assert_equal '.', Nanotest::dots.last
|
38
|
+
assert_empty Nanotest::failures
|
21
39
|
end
|
22
40
|
|
23
41
|
test "assertion fails (false)" do
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
assert_equal 'F', out
|
28
|
-
refute_empty NanoTest::FAILURES
|
42
|
+
Nanotest.assert { false }
|
43
|
+
assert_equal 'F', Nanotest::dots.last
|
44
|
+
refute_empty Nanotest::failures
|
29
45
|
end
|
30
46
|
|
31
47
|
test "assertion fails (nil)" do
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
assert_equal 'F', out
|
36
|
-
refute_empty NanoTest::FAILURES
|
48
|
+
Nanotest.assert { nil }
|
49
|
+
assert_equal 'F', Nanotest::dots.last
|
50
|
+
refute_empty Nanotest::failures
|
37
51
|
end
|
38
52
|
|
39
53
|
test "failure message" do
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
assert_equal 1, NanoTest::FAILURES.size
|
44
|
-
assert_includes NanoTest::FAILURES, "(%s:%0.3d) assertion failed" % [__FILE__, @line]
|
54
|
+
@line = __LINE__; Nanotest.assert { false }
|
55
|
+
assert_equal 1, Nanotest::failures.size
|
56
|
+
assert_includes Nanotest::failures, "(%s:%0.3d) assertion failed" % [__FILE__, @line]
|
45
57
|
end
|
46
58
|
|
47
59
|
test "custom failure message, file, line" do
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
60
|
+
Nanotest.assert('foo','bar',2) { false }
|
61
|
+
assert_includes Nanotest::failures, "(bar:002) foo"
|
62
|
+
end
|
63
|
+
|
64
|
+
test "displays results" do
|
65
|
+
Nanotest.assert { true }
|
66
|
+
Nanotest.assert { false }; line1 = __LINE__
|
67
|
+
Nanotest.assert { false }; line2 = __LINE__
|
68
|
+
expected = <<-OUT.gsub(/^\s*/,'').strip % [__FILE__, line1, __FILE__, line2]
|
69
|
+
.FF
|
70
|
+
(%s:%0.3d) assertion failed
|
71
|
+
(%s:%0.3d) assertion failed
|
72
|
+
OUT
|
73
|
+
assert_equal expected, Nanotest.results
|
74
|
+
end
|
75
|
+
|
76
|
+
test "displays results with no assertions" do
|
77
|
+
assert_empty Nanotest.results.strip
|
52
78
|
end
|
53
79
|
end
|
80
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nanotest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Aumont
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-27 00:00:00 -03:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
24
|
version:
|
25
|
-
description: Extremely mynymal test framework. Perfect for DIY lovers.
|
25
|
+
description: Extremely mynymal test framework. Perfect for DIY lovers. Nanotest provides the bare mynymum needed; for everything else, there's ruby.
|
26
26
|
email: mynyml@gmail.com
|
27
27
|
executables: []
|
28
28
|
|
@@ -39,6 +39,7 @@ files:
|
|
39
39
|
- examples.rb
|
40
40
|
- gem.watchr
|
41
41
|
- lib/nanotest.rb
|
42
|
+
- nanotest.gemspec
|
42
43
|
- specs.watchr
|
43
44
|
- test/test_helper.rb
|
44
45
|
- test/test_nanotest.rb
|