nanotest_extensions 0.6.1 → 0.6.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.
@@ -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