minitest-snail 0.0.1
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.
- checksums.yaml +7 -0
- data/README.markdown +45 -0
- data/lib/minitest/snail_plugin.rb +17 -0
- data/lib/minitest/snail_reporter.rb +44 -0
- metadata +61 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 16d29aa7c6a35492b77bfef671e9ac16bc7a58aa
|
4
|
+
data.tar.gz: 6dfb960d71c3ddd016156b99571ec4fc9f295158
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 78bd0c921c844769e9a501a0356b582f8a340e645c5ce34451d7226d39b4b8cf0c914bb37d6b6948e4bcc80d9402eace5bd977b487b357549823d0abd6a98134
|
7
|
+
data.tar.gz: f6789adbc907889135051a65cc5f3e638c19b9318cec94e9e68d28e88c54eba9dfaeb3e94b0d5772879d2004baa67237468dd8fd7130bf963f09046478fa28b8
|
data/README.markdown
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
Minitest Snail
|
2
|
+
======================
|
3
|
+
|
4
|
+
Prints a list of tests that take too long.
|
5
|
+
|
6
|
+
Installation
|
7
|
+
------------
|
8
|
+
|
9
|
+
gem instal minitest-snail
|
10
|
+
|
11
|
+
Usage
|
12
|
+
-----
|
13
|
+
|
14
|
+
Minitest Snail can be enabled from the command line using the `max-duration` parameter:
|
15
|
+
|
16
|
+
ruby test/example_test.rb --max-duration 2
|
17
|
+
|
18
|
+
This would print out a list of any tests taking longer than 2 seconds to run:
|
19
|
+
|
20
|
+
# Running:
|
21
|
+
|
22
|
+
....
|
23
|
+
|
24
|
+
Finished in 5.001143s
|
25
|
+
|
26
|
+
4 runs, 7 assertions, 0 failures, 0 errors, 0 skips
|
27
|
+
|
28
|
+
2 slow tests.
|
29
|
+
0) ExampleTest#test_alpha: 2.30 s
|
30
|
+
1) ExampleTest#test_beta: 2.11 s
|
31
|
+
|
32
|
+
If you don't run your tests directly, you can programmatically enable Minitest Snail:
|
33
|
+
|
34
|
+
Minitest::SnailReporter.enable!
|
35
|
+
|
36
|
+
You can also configure it using `enable!`:
|
37
|
+
|
38
|
+
Minitest::SnailReporter.enable! :max_duration => 2.5
|
39
|
+
|
40
|
+
If you are using Rails, your `test/test_helper.rb` file is good place to do this initialization.
|
41
|
+
|
42
|
+
Authors
|
43
|
+
-------
|
44
|
+
|
45
|
+
[Adam Sanderson](netghost@gmail.com) (http://monkeyandcrow.com)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative './snail_reporter'
|
2
|
+
|
3
|
+
module Minitest
|
4
|
+
def self.plugin_snail_options(opts, options)
|
5
|
+
opts.on "--max-duration TIME", "Report tests that take longer than TIME seconds." do |max_duration|
|
6
|
+
SnailReporter.enable! :max_duration => max_duration.to_f
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.plugin_snail_init(options)
|
11
|
+
if SnailReporter.enabled?
|
12
|
+
io = options[:io]
|
13
|
+
Minitest.reporter.reporters << SnailReporter.new(io)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Minitest
|
2
|
+
class SnailReporter < Reporter
|
3
|
+
attr_reader :slow_tests, :max_duration
|
4
|
+
|
5
|
+
def self.options
|
6
|
+
@default_options ||= {
|
7
|
+
:max_duration => 2
|
8
|
+
}
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.enable!(options = {})
|
12
|
+
@enabled = true
|
13
|
+
self.options.merge!(options)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.enabled?
|
17
|
+
@enabled ||= false
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize(io = STDOUT, options = self.class.options)
|
21
|
+
super
|
22
|
+
|
23
|
+
@max_duration = options.fetch(:max_duration)
|
24
|
+
@slow_tests = []
|
25
|
+
end
|
26
|
+
|
27
|
+
def record result
|
28
|
+
slow_tests << result if result.time > max_duration
|
29
|
+
end
|
30
|
+
|
31
|
+
def report
|
32
|
+
return if slow_tests.empty?
|
33
|
+
|
34
|
+
slow_tests.sort_by!{|r| -r.time}
|
35
|
+
|
36
|
+
io.puts
|
37
|
+
io.puts "#{slow_tests.length} slow tests."
|
38
|
+
slow_tests.each_with_index do |result, i|
|
39
|
+
io.puts "%3d) %s: %.2f s" % [i+1, result.location, result.time]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
metadata
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: minitest-snail
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Adam Sanderson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-03-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: minitest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.5'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5.5'
|
27
|
+
description: Summarizes minitest tests, printing out tests that take too long.
|
28
|
+
email:
|
29
|
+
- netghost@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- README.markdown
|
35
|
+
- lib/minitest/snail_plugin.rb
|
36
|
+
- lib/minitest/snail_reporter.rb
|
37
|
+
homepage: https://github.com/adamsanderson/minitest-snail
|
38
|
+
licenses:
|
39
|
+
- MIT
|
40
|
+
metadata: {}
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
require_paths:
|
44
|
+
- lib
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
requirements: []
|
56
|
+
rubyforge_project:
|
57
|
+
rubygems_version: 2.2.1
|
58
|
+
signing_key:
|
59
|
+
specification_version: 4
|
60
|
+
summary: Identify slow tests.
|
61
|
+
test_files: []
|