rspec_timer 0.0.1 → 0.0.2

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 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