shoulda-addons 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,15 @@
1
+ Like RSpec's profiling of the 10 slowest test cases? Like how it can print out the full test names in shiny and colorful terminal awesomeness instead of meaningless dots? Me too.
2
+
3
+ require 'shoulda_benchmark'
4
+
5
+ Patches Shoulda to track runtimes of all your tests, showing you the 10 slowest.
6
+
7
+ require 'shoulda_list_runner'
8
+
9
+ Patches Test::Unit to print out test names colored either red or green (you can guess which is which). Blatantly inspired by RedGreen and adapted for Shoulda awesomeness.
10
+
11
+ `require 'shoulda_addons'` if you want both, and why wouldn't you?
12
+
13
+ Install from gemcutter via: `gem install shoulda-addons`
14
+
15
+ Author: Mathias Meyer <meyer@paperplanes.de>
@@ -0,0 +1,4 @@
1
+ $:.<<(File.expand_path(File.dirname(__FILE__)))
2
+
3
+ require 'shoulda_benchmark'
4
+ require 'shoulda_list_runner'
@@ -0,0 +1,39 @@
1
+ module Test
2
+ module Unit
3
+ class TestCase
4
+ def self.method_added(name)
5
+ return if @ignoring_added_methods
6
+
7
+ @__instrumented_methods ||= {}
8
+ return unless name.to_s.match(/^test:/) || @__instrumented_methods[name]
9
+ @ignoring_added_methods = true
10
+ alias_method " #{name}", "#{name}"
11
+ @__instrumented_methods[name] = true
12
+ define_method(name) do
13
+ runtime = Benchmark.realtime do
14
+ send(" #{name}")
15
+ end
16
+ Shoulda.runtimes[name] = runtime
17
+ end
18
+ @ignoring_added_methods = false
19
+ end
20
+
21
+ end
22
+
23
+ class TestResult
24
+ alias :to_old_s :to_s
25
+ def to_s
26
+ puts Shoulda.runtimes.collect {|name, total| total}.inject(0) {|num, sum| num + sum}
27
+ Shoulda.runtimes.collect{|name, total| [name, total]}.
28
+ sort{|runtime1, runtime2| runtime2[1] <=> runtime1[1]}[0...10].
29
+ collect{|name, total| "#{"%0.2f" % total} s: #{name.to_s.gsub(/test: /, "")}"}.<<("").<<(to_old_s).join("\n")
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ module Shoulda
36
+ def self.runtimes
37
+ @runtimes ||= {}
38
+ end
39
+ end
@@ -0,0 +1,43 @@
1
+ require 'test/unit'
2
+ require 'test/unit/ui/console/testrunner'
3
+
4
+ module Color
5
+ COLORS = { :clear => 0, :red => 31, :green => 32, :yellow => 33 }
6
+ def self.method_missing(color_name, *args)
7
+ color(color_name) + args.first + color(:clear)
8
+ end
9
+ def self.color(color)
10
+ "\e[#{COLORS[color.to_sym]}m"
11
+ end
12
+ end
13
+
14
+ module Test
15
+ module Unit
16
+ module UI
17
+ module Console
18
+ class TestRunner
19
+ def test_finished(name)
20
+ if is_fault?(name)
21
+ puts Color.red(name.gsub(/test: /, ""))
22
+ else
23
+ puts Color.green(name.to_s.gsub(/test: /, ""))
24
+ end
25
+ end
26
+
27
+ def is_fault?(name)
28
+ !_faults_by_name[name].nil?
29
+ end
30
+
31
+ def _faults_by_name
32
+ @_faults_by_name ||= {}
33
+ end
34
+
35
+ def add_fault(fault)
36
+ @faults << fault
37
+ _faults_by_name[fault.test_name] = fault
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shoulda-addons
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Mathias Meyer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-17 00:00:00 +02:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Some awesome addons for Shoulda to benchmark tests, or to get nicer output than just a dot, because what the dot?
17
+ email: meyer@paperplanes.de
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.md
24
+ files:
25
+ - README.md
26
+ - lib/shoulda_addons.rb
27
+ - lib/shoulda_benchmark.rb
28
+ - lib/shoulda_list_runner.rb
29
+ has_rdoc: true
30
+ homepage: http://github.com/mattmatt/shoulda-addons
31
+ licenses: []
32
+
33
+ post_install_message:
34
+ rdoc_options:
35
+ - --charset=UTF-8
36
+ require_paths:
37
+ - lib
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: "0"
43
+ version:
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: "0"
49
+ version:
50
+ requirements: []
51
+
52
+ rubyforge_project:
53
+ rubygems_version: 1.3.5
54
+ signing_key:
55
+ specification_version: 3
56
+ summary: Neat addons for Shoulda, because Shoulda is neat.
57
+ test_files: []
58
+