nanotest_extensions 0.6.1 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,11 +1,6 @@
1
1
  === Summary
2
2
 
3
- Easily focus assertions.
4
-
5
- Simply call #focus, and the subsequent assertion will be run. Can be called
6
- multiple times. Any assertion that is not focused will never run (unless focus
7
- is never called, in which case nanotest will run normally). Will also work
8
- across all test files.
3
+ Easily focus assertions
9
4
 
10
5
  === Examples
11
6
 
@@ -23,4 +18,4 @@ across all test files.
23
18
  assert { true }
24
19
 
25
20
  This will only run the two tests following the #focus calls, and the "suite"
26
- will pass.
21
+ will pass. Will also work across test files.
@@ -13,7 +13,7 @@ Appends total test time, number of assertions and number of failures.
13
13
  assert { false }
14
14
  assert { false }
15
15
 
16
- outputs:
16
+ outputs:
17
17
 
18
18
  ..FF
19
19
  (stats_example.rb:007) assertion failed
data/Rakefile CHANGED
@@ -12,13 +12,15 @@ namespace(:test) do
12
12
 
13
13
  desc "Run all tests"
14
14
  task(:all) do
15
- # test files must be run separately, or else focus kicks in and stats resets nanotest
16
- %w(
15
+ # test files must be run separately, or else focus kicks in, and stats resets nanotest
16
+ paths = %w(
17
17
  test/test_contexts.rb
18
18
  test/test_focus.rb
19
19
  test/test_spec.rb
20
20
  test/test_stats.rb
21
- ).each {|test| run("ruby -rubygems -I.:lib #{test}") }
21
+ )
22
+ statuses = paths.map {|test| run("ruby -rubygems -I.:lib #{test}") }
23
+ exit statuses.all?
22
24
  end
23
25
 
24
26
  desc "Run all tests on multiple ruby versions (requires rvm)"
@@ -16,14 +16,14 @@ module Nanotest
16
16
 
17
17
  alias :focus__orig_assert :assert
18
18
 
19
- def assert(*args, &block)
19
+ def assert(msg=nil,file=nil,line=nil,stack=caller,&block)
20
20
  if @@focused
21
21
  if @@focus_next
22
22
  @@focus_next = false
23
- focus__orig_assert(*args, &block)
23
+ focus__orig_assert(msg,file,line,stack,&block)
24
24
  end
25
25
  else
26
- focus__orig_assert(*args, &block)
26
+ focus__orig_assert(msg,file,line,stack,&block)
27
27
  end
28
28
  end
29
29
  end
@@ -8,7 +8,7 @@ module Nanotest
8
8
  stats = "\n(%f seconds) %d assertions, %d failures" % [Time.now-$nanotest_time, @@dots.size, @@failures.size]
9
9
 
10
10
  # insert stats after failure message if any, or dots otherwise
11
- lines, pos = stats__orig_results.split(/\n/), nil
11
+ lines, pos = stats__orig_results.split(/\n/), 0
12
12
  lines.each_with_index {|line, i| pos = i if line =~ /\((.*):\d+\).*$/ || line =~ /(\.|F)+/ }
13
13
  lines.insert(pos + 1, stats).join("\n")
14
14
  end
@@ -1,5 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "nanotest_extensions"
3
+ s.version = "0.6.3"
3
4
  s.summary = "Nano extensions for nanotest"
4
5
  s.description = "Nano extensions for nanotest."
5
6
  s.author = "Martin Aumont"
@@ -7,7 +8,6 @@ Gem::Specification.new do |s|
7
8
  s.homepage = "http://github.com/mynyml/nanotest_extensions"
8
9
  s.rubyforge_project = "nanotest_extensions"
9
10
  s.require_path = "lib"
10
- s.version = "0.6.1"
11
11
  s.files = File.read("Manifest").strip.split("\n")
12
12
 
13
13
  s.add_development_dependency 'nanotest'
@@ -53,3 +53,30 @@ context do
53
53
  end
54
54
  end
55
55
 
56
+ __END__
57
+ module Foo
58
+ def foo
59
+ end
60
+ end
61
+
62
+ # test: sibling contexts don't share their state
63
+ context do
64
+ include Foo
65
+ def bar() end
66
+ context do
67
+ def baz() end
68
+ assert { respond_to?(:foo) }
69
+ assert { respond_to?(:bar) }
70
+ context do
71
+ assert { respond_to?(:baz) }
72
+ end
73
+ end
74
+ context do
75
+ assert { not respond_to?(:baz) }
76
+ end
77
+ end
78
+ context do
79
+ assert { not respond_to?(:foo) }
80
+ assert { not respond_to?(:bar) }
81
+ end
82
+
@@ -17,4 +17,13 @@ assert("should not be run") { false }
17
17
 
18
18
  # ensure focused assertions were run
19
19
  focus
20
- assert { Nanotest.send(:class_variable_get, :@@dots).size == 2 }
20
+ assert { Nanotest.dots.size == 2 }
21
+
22
+ # test: correctly references origin of assertion
23
+ focus; assert('') { false }; line = __LINE__
24
+
25
+ actual, expected = Nanotest.failures.last, "(%s:%0.3d) " % [__FILE__,line]
26
+ Nanotest.pop
27
+ focus
28
+ assert("expected: #{expected.inspect}, got: #{actual.inspect}") { actual == expected }
29
+
@@ -1,5 +1,17 @@
1
1
  require 'nanotest'
2
2
  begin
3
+ require 'ruby-debug'
3
4
  require 'redgreen'#gem install mynyml-redgreen
4
5
  rescue LoadError, RuntimeError
5
6
  end
7
+
8
+ module Nanotest
9
+ class << self
10
+ def failures() @@failures end
11
+ def dots() @@dots end
12
+ def pop
13
+ failures.pop
14
+ dots.pop
15
+ end
16
+ end
17
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nanotest_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.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-30 00:00:00 -03:00
12
+ date: 2010-01-07 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency