spec_timer 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: eca6d2ad3ba3f842205748983b524618ef322c7b
4
+ data.tar.gz: 54a3ee9d4e95f4ae790f393e6a33bb0355fd2ad6
5
+ SHA512:
6
+ metadata.gz: 827102975cae2b2550584829af3fc2eb3f33fab4e753a19c4a93b4df88908f61b76ea109c1584203fb352c22d4d90c9eebd6636762e80fdfd3d6c0b38e44fc92
7
+ data.tar.gz: ed090eb0b19b1dccb1b4047b25720eb0d97ca790f586420d285fcbabbe52647a1ffedafdddebba36753cee9d74c99c4f5ea021b0dbc7823c4cb18b1f38917757
@@ -0,0 +1,42 @@
1
+ class SpecTimer::Reporter
2
+ def self.report
3
+ long_tests = SpecTimer::Timer.long_tests
4
+ puts SpecTimer::Color.text("\n\nUsing SpecTimer", :yellow)
5
+
6
+ if long_tests.any?
7
+ puts "Long Tests:"
8
+ long_tests.each_with_index do |test, index|
9
+ puts SpecTimer::Color.text("\n #{index + 1}) #{test[:name]}", :yellow)
10
+ puts SpecTimer::Color.text(" Took to long: #{test[:time]} seconds!", :red)
11
+ puts SpecTimer::Color.text(" # #{test[:file]}", :cyan)
12
+ end
13
+ puts "\nSlow examples:"
14
+ long_tests.each do |test|
15
+ print SpecTimer::Color.text("rspec #{test[:file]} ", :red)
16
+ puts SpecTimer::Color.text("# #{test[:name]}", :cyan)
17
+ end
18
+ else
19
+ puts SpecTimer::Color.text("All tests are under the maximum allowed time!", :green)
20
+ end
21
+ end
22
+ end
23
+
24
+ class SpecTimer::Color
25
+ COLOR_CONVERSION = {
26
+ red: 1,
27
+ green: 2,
28
+ yellow: 3,
29
+ blue: 4,
30
+ magenta: 5,
31
+ cyan: 6,
32
+ white: 7
33
+ }
34
+
35
+ def self.text(string, color)
36
+ "\e[#{COLOR_CONVERSION[color] + 30}m#{string}\e[0m"
37
+ end
38
+
39
+ def self.background(string, color)
40
+ "\e[#{COLOR_CONVERSION[color] + 40}m#{string}\e[0m"
41
+ end
42
+ end
@@ -0,0 +1,31 @@
1
+ module SpecTimer::Timer
2
+ def self.start
3
+ @start_time = Time.now
4
+ end
5
+
6
+ def self.finish(example)
7
+ @end_time = Time.now
8
+ record(example)
9
+ end
10
+
11
+ def self.record(example)
12
+ @recorded ||= []
13
+ @recorded << { time: time_taken, file: example.location, name: example.full_description }
14
+ end
15
+
16
+ def self.long_tests
17
+ recorded.select { |r| r[:time] > 1 }
18
+ end
19
+
20
+ def self.recorded
21
+ @recorded
22
+ end
23
+
24
+ def self.time_taken
25
+ @end_time - @start_time
26
+ end
27
+
28
+ def self.reset
29
+ @recorded = []
30
+ end
31
+ end
@@ -0,0 +1,3 @@
1
+ module SpecTimer
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,13 @@
1
+ RSpec.configure do |config|
2
+ config.before(:each) do
3
+ SpecTimer::Timer.start
4
+ end
5
+
6
+ config.after(:each) do |example|
7
+ SpecTimer::Timer.finish(example)
8
+ end
9
+
10
+ config.after(:suite) do
11
+ SpecTimer::Reporter.report
12
+ end
13
+ end
data/lib/spec_timer.rb ADDED
@@ -0,0 +1,5 @@
1
+ module SpecTimer
2
+ end
3
+
4
+ require_relative "spec_timer/timer"
5
+ require_relative "spec_timer/reporter"
metadata ADDED
@@ -0,0 +1,49 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spec_timer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - dalexj
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-18 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: SpecTimer is a testing hook that reports specs which took too long to
14
+ run
15
+ email: 96dalex@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/spec_timer.rb
21
+ - lib/spec_timer/reporter.rb
22
+ - lib/spec_timer/timer.rb
23
+ - lib/spec_timer/version.rb
24
+ - lib/spec_timer/watch.rb
25
+ homepage: https://github.com/dalexj
26
+ licenses:
27
+ - MIT
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubyforge_project:
45
+ rubygems_version: 2.4.5
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: Times your tests
49
+ test_files: []