rspec_timer 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ea80db1b742f822c6042e37dd61b3b0cfc0b7786
4
- data.tar.gz: 8a2e05d302c6c3d55b09111215c5db6f2503f65f
3
+ metadata.gz: 2cd7e2230eeb45822d0a390f9c72491fb23fdb61
4
+ data.tar.gz: 6a0836aae47e4f725f65726cac9830cd6ed65e11
5
5
  SHA512:
6
- metadata.gz: efa539dcad84281c1a370ebe3bb9fded98d1de9e87dcc86ea7b88e36d646686dc7221cfa5e07c28a9f997ee6c8f3b7a137786fde9054f39dd0b42486e99eb4e4
7
- data.tar.gz: ab5a668874d08897e01ba35eb87a692f5f18071d59af9fc2241ea165bad5bfe96fbfa1d3dfd9d4efb06280ef9d145f54b3cfff4abdcfd64c6fd05275795da316
6
+ metadata.gz: 65887c9f52dfe0d65dea9639d186d6d11ee6c848914f0821f7b0161d73944a81d6b42a4b879404bbbce46f808aa5e28c4d73ca008f56727eb9d74ac1ef5a1e9d
7
+ data.tar.gz: 8fb357c2fcef9270bdf710e1b311f29eacbbc113ba33ef9ed9d329381e9d07f955ab70ad627c7c782e3f4d97efd3dfbfd06b64a4245467b4ca3694a02d43376c
data/README.md CHANGED
@@ -27,12 +27,20 @@ In your spec_helper.rb file, set up your "around" and "after" hooks like so:
27
27
 
28
28
  RSpec.configure do |config|
29
29
 
30
+ config.before(:suite) do
31
+ # Completely wipes any metrics from the log (optional)
32
+ RspecTimer.reset_metrics_log_file('rspec_metrics.yml')
33
+ end
34
+
30
35
  config.around(:each) do |example|
31
- RspecTimer.run_and_measure(example)
36
+ RspecTimer.run_and_measure(example)
32
37
  end
33
38
 
34
39
  config.after(:suite) do
35
- RspecTimer.save_metrics_to_file(Rails.root.join('rspec_metrics.yml').to_s)
40
+ # Stores any metrics from this test run into the YAML log file
41
+ # Adds/updates metrics according to unique signatures which are generated
42
+ # using each individual test's line number and source code.
43
+ RspecTimer.update_metrics_log_file('rspec_metrics.yml')
36
44
  end
37
45
 
38
46
  end
@@ -1,3 +1,3 @@
1
1
  class RspecTimer
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/rspec_timer.rb CHANGED
@@ -7,9 +7,11 @@ class RspecTimer
7
7
  include Singleton
8
8
  extend SingleForwardable
9
9
 
10
- def_delegators :instance, :reset_metrics, :start_measurement, :end_measurement, :metrics, :run_and_measure, :save_metrics_to_file
10
+ def_delegators :instance, :reset_metrics, :log_file, :start_measurement, :end_measurement, :metrics,
11
+ :run_and_measure, :reset_metrics_log_file, :update_metrics_log_file, :signature_for
11
12
 
12
13
  attr_reader :metrics
14
+ attr_accessor :log_file
13
15
 
14
16
  def initialize
15
17
  reset_metrics
@@ -21,7 +23,7 @@ class RspecTimer
21
23
 
22
24
  def start_measurement(example)
23
25
  current_metrics = metrics_for(example)
24
- current_metrics[:signature] = signature_for(example)
26
+ current_metrics[:path] = example_path(example)
25
27
  current_metrics[:start_time] = Time.now
26
28
  example
27
29
  end
@@ -39,25 +41,39 @@ class RspecTimer
39
41
  end_measurement(example)
40
42
  end
41
43
 
42
- def save_metrics_to_file(file_name)
43
- File.write(file_name, YAML.dump(@metrics))
44
+ def reset_metrics_log_file(file_name = default_metrics_file_name)
45
+ File.write(file_name, YAML.dump({}))
46
+ end
47
+
48
+ def update_metrics_log_file(file_name = default_metrics_file_name)
49
+ updated_metrics = {}
50
+ # Load any existing metrics
51
+ updated_metrics = YAML.load_file(file_name) if File.exists? (file_name)
52
+ # Merge in the new metrics, updating any existing ones
53
+ @metrics.keys.each { |key| updated_metrics[key] = @metrics[key] }
54
+ # Save metrics to the YAML log file
55
+ File.write(file_name, YAML.dump(updated_metrics))
56
+ end
57
+
58
+ def signature_for(example)
59
+ Digest::MD5.hexdigest("#{example_path(example)}:#{example.example.instance_variable_get(:@example_block).source.to_s}")
44
60
  end
45
61
 
46
62
  private
47
63
 
64
+ def default_metrics_file_name
65
+ 'rspec_metrics.yml'
66
+ end
67
+
48
68
  def metrics_for(example)
49
- @metrics[example_path(example)] ||= {
69
+ @metrics[signature_for(example)] ||= {
70
+ path: nil,
50
71
  start_time: nil,
51
72
  end_time: nil,
52
- total_time: nil,
53
- signature: nil
73
+ total_time: nil
54
74
  }
55
75
  end
56
76
 
57
- def signature_for(example)
58
- Digest::MD5.hexdigest(example.example.instance_variable_get(:@example_block).source.to_s)
59
- end
60
-
61
77
  def example_path(example)
62
78
  "#{example.metadata[:file_path]}:#{example.metadata[:line_number]}"
63
79
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec_timer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Chapin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-29 00:00:00.000000000 Z
11
+ date: 2015-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: method_source