trick_bag 0.40.0 → 0.41.0

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MDVjMzY3ZGQ2ODZhM2MxOTZkMGQ2NmYyMWQ4NGIzMzQzYTFjZmQ2Mw==
5
+ data.tar.gz: !binary |-
6
+ YzNiNzBkMWVjMjVlZjI5NWFhZTRkMDQ4ODY0OTY1YjdhMGFhZGU5OQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MjEyNzc0NjBiNGJlODYzY2ZkZGJhMjRiNGU2OWNkMzI0YjBhNjE3NjdjYTIy
10
+ ZjQwMjBlYTQwN2FjZDg4NTAyMzVmNWEyODJkOTY0OWZjYmZhYmMyYWJjYjc0
11
+ YjIxMzliZTczZjA5NDZlMTNkYjk3YjlkMDU4MTBlM2IzN2M1ZmM=
12
+ data.tar.gz: !binary |-
13
+ MmI0NWNiMjM4MDkxMmI3MzBmMTdhODYwYTM4OGM5ZTJmYTBkOGVmMDczMDVi
14
+ YzJjNjBlYTM3NTViNjBmODFhNzg3NTY0ODg1MWUyYmQ5NTkxYjA5MWE2MzE3
15
+ Mjk5ZTVhYzU2MjY3YjUyNGFiMmU2MDlhMTNmNTRhOWIwNjRiZmM=
data/RELEASE_NOTES.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## v0.41.0
2
+
3
+ * Added Timing.benchmark().
4
+
5
+
1
6
  ## v0.40.0
2
7
 
3
8
  * Added Validations.raise_on_invalid_value.
@@ -1,4 +1,5 @@
1
1
  require 'trick_bag/io/text_mode_status_updater'
2
+ require 'benchmark'
2
3
 
3
4
  module TrickBag
4
5
  module Timing
@@ -45,5 +46,26 @@ module Timing
45
46
  success
46
47
  end
47
48
 
49
+
50
+ # Executes the passed block with the Ruby Benchmark standard library.
51
+ # Prints the benchmark string to the specified output stream.
52
+ # Returns the passed block's return value.
53
+ #
54
+ # e.g. benchmark('time to loop 1,000,000 times') { 1_000_000.times { 42 }; 'hi' }
55
+ # outputs to the specified output stream the following string:
56
+ # 0.050000 0.000000 0.050000 ( 0.042376): time to loop 1,000,000 times
57
+ # and returns: 42
58
+ #
59
+ # @param caption the text fragment to print after the timing data
60
+ # @param out_stream object responding to << that will get the output string
61
+ # @default $stdout
62
+ # @block the block to execute and benchmark
63
+ def benchmark(caption, out_stream = $stdout, &block)
64
+ return_value = nil
65
+ bm = Benchmark.measure { return_value = block.call }
66
+ out_stream << bm.to_s.chomp << ": #{caption}\n"
67
+ return_value
68
+ end
69
+
48
70
  end
49
71
  end
@@ -1,3 +1,3 @@
1
1
  module TrickBag
2
- VERSION = "0.40.0"
2
+ VERSION = "0.41.0"
3
3
  end
@@ -6,11 +6,27 @@ module TrickBag
6
6
 
7
7
  describe Timing do
8
8
 
9
- it 'returns when the predicate returns true' do
10
- count = 0
11
- predicate = ->{ count += 1; count == 3 }
12
- Timing.retry_until_true_or_timeout(predicate, 0, 1, StringIO.new)
13
- expect(count).to eq(3)
9
+ context '.retry_until_true_or_timeout' do
10
+ it 'returns when the predicate returns true' do
11
+ count = 0
12
+ predicate = ->{ count += 1; count == 3 }
13
+ Timing.retry_until_true_or_timeout(predicate, 0, 1, StringIO.new)
14
+ expect(count).to eq(3)
15
+ end
16
+ end
17
+
18
+
19
+ context '.benchmark' do
20
+ it "returns the passed expression's return value" do
21
+ expect(Timing.benchmark('', '') { 123 }).to eq(123)
22
+ end
23
+
24
+ it 'includes the label in the output string' do
25
+ label = 'foo'
26
+ output_string = ''
27
+ Timing.benchmark(label, output_string) {}
28
+ expect(output_string).to include(label)
29
+ end
14
30
  end
15
31
  end
16
32
 
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trick_bag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.40.0
5
- prerelease:
4
+ version: 0.41.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Keith Bennett
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-04-03 00:00:00.000000000 Z
11
+ date: 2014-04-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: os
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: bundler
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rake
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ! '>='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ! '>='
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rspec
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ! '>='
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ! '>='
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: guard
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ! '>='
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ! '>='
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: guard-rspec
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ! '>='
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - ! '>='
108
95
  - !ruby/object:Gem::Version
@@ -168,27 +155,26 @@ files:
168
155
  homepage: https://github.com/keithrbennett/trick_bag
169
156
  licenses:
170
157
  - MIT
158
+ metadata: {}
171
159
  post_install_message:
172
160
  rdoc_options: []
173
161
  require_paths:
174
162
  - lib
175
163
  required_ruby_version: !ruby/object:Gem::Requirement
176
- none: false
177
164
  requirements:
178
165
  - - ! '>='
179
166
  - !ruby/object:Gem::Version
180
167
  version: '0'
181
168
  required_rubygems_version: !ruby/object:Gem::Requirement
182
- none: false
183
169
  requirements:
184
170
  - - ! '>='
185
171
  - !ruby/object:Gem::Version
186
172
  version: '0'
187
173
  requirements: []
188
174
  rubyforge_project:
189
- rubygems_version: 1.8.25
175
+ rubygems_version: 2.2.2
190
176
  signing_key:
191
- specification_version: 3
177
+ specification_version: 4
192
178
  summary: Miscellaneous general useful tools.
193
179
  test_files:
194
180
  - spec/spec_helper.rb