trick_bag 0.45.1 → 0.46.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 63c0861f2ea308e73bef890b2c8f6b7605d94cf3
4
- data.tar.gz: e88062c5b878e2f68cf4e455f689e4bbcdfe4f31
3
+ metadata.gz: 57ae02e1d4096731aaa9594252922acc1ade8cea
4
+ data.tar.gz: c42a91603f217852a041a7dbaf5ee44a36c6ff29
5
5
  SHA512:
6
- metadata.gz: 739b23d52b123abc1adb02f7f93bb3968a2f97bbe7600451ddffb4ec3b31a2be8b6603b7c22e768c27b71505f8548d74de7a8b9d27071d73529d53b0f37df45f
7
- data.tar.gz: 07685b8575b90bc2a5e25d89316da77036d7a0cdf36aed617bdd187dcd7813129bf16b5167cff27a2d87b58cc779b87eccc3c98f0463f7be8774465f6ee04662
6
+ metadata.gz: 54c102e7e407cb063106c8b387731dfb8844d69580dbc97ff6dc138fa1c40dd06f8c5faa7897fb2f408b5dea9e88437a36923b442653a96ac7bcc291f3f62785
7
+ data.tar.gz: 8be1ece013e697c268106a184a1e66250b3bfa323e3557930f4a222b99eba7fd91313b2f74a5bb14c9a7b589155ba6863ee621f1ed29bbf4157fb85da93369b5
data/RELEASE_NOTES.md CHANGED
@@ -1,11 +1,28 @@
1
+ ## v0.46.0
2
+
3
+ * Add array_diff and array_as_multiline_string to Formatters.
4
+
5
+
6
+ ## v0.45.3
7
+
8
+ * Upgrade to RSpec 3.0. Other minor improvements.
9
+
10
+
11
+ ## v0.45.2
12
+
13
+ * Fix gem dependency versions; remove refs to pry & guard; doc fixes & additions.
14
+
15
+
1
16
  ## v0.45.1
2
17
 
3
18
  * Fix commit omissions.
4
19
 
20
+
5
21
  ## v0.45.0
6
22
 
7
23
  * Add GemDependencyScript.
8
24
 
25
+
9
26
  ## v0.44.0
10
27
 
11
28
  * Fix missing require 'ostruct' in erb_renderer.rb.
@@ -40,6 +57,7 @@
40
57
  * Added FileLineReader.to_s.
41
58
  git
42
59
 
60
+
43
61
  ## v0.38.0
44
62
 
45
63
  * Added documentation.
@@ -4,7 +4,7 @@ require 'trick_bag/meta/classes'
4
4
  module TrickBag
5
5
  module Enumerables
6
6
 
7
- # An enumerator Used to provide all combinations of a set of Enumerables.
7
+ # An enumerator used to provide all combinations of a set of Enumerables.
8
8
 
9
9
  # For example, for blood types [:a, :b, :ab, :o] and rh [:+, :-],
10
10
  # provides an enumerator whose 'each' method gives:
@@ -1,4 +1,5 @@
1
1
  require 'date'
2
+ require 'diffy'
2
3
 
3
4
  module TrickBag
4
5
  module Formatters
@@ -121,6 +122,26 @@ module Formatters
121
122
  string.replace(dos2unix(string, strategy))
122
123
  end
123
124
 
125
+
126
+ # Returns a string representation of the array as would be output by puts,
127
+ # one line per element.
128
+ def array_as_multiline_string(array)
129
+ sio = StringIO.new
130
+ sio.puts(array)
131
+ sio.string
132
+ end
133
+
134
+
135
+ # Shows a visual diff of 2 arrays by comparing the string representations
136
+ # of the arrays with one element per line.
137
+ # @param format can be any valid Diffy option, e.g. :color
138
+ # see https://github.com/samg/diffy/blob/master/lib/diffy/format.rb
139
+ def array_diff(array1, array2, format = :text)
140
+ string1 = array_as_multiline_string(array1)
141
+ string2 = array_as_multiline_string(array2)
142
+ Diffy::Diff.new(string1, string2).to_s(format)
143
+ end
144
+
124
145
  end
125
146
  end
126
147
 
@@ -10,7 +10,7 @@ module TempFiles
10
10
  # @param text the text to write to the temporary file
11
11
  # @param file_prefix optional prefix for the temporary file's name
12
12
  # @yield filespec of the temporary file
13
- def self.file_containing(text, file_prefix = '')
13
+ def file_containing(text, file_prefix = '')
14
14
  raise "This method must be called with a code block." unless block_given?
15
15
 
16
16
  filespec = nil
@@ -24,7 +24,6 @@ module TempFiles
24
24
  File.delete filespec if filespec && File.exist?(filespec)
25
25
  end
26
26
  end
27
-
28
27
  end
29
28
  end
30
29
  end
@@ -31,13 +31,13 @@ module Classes
31
31
 
32
32
  unless read_access == :none
33
33
  attr_reader(*attrs)
34
- send(read_access, *attrs)
34
+ send(read_access, *attrs) # e.g. results in protected :foo, :bar
35
35
  end
36
36
 
37
37
  unless write_access == :none
38
38
  attr_writer(*attrs)
39
39
  writers = attrs.map { |attr| "#{attr}=".to_sym }
40
- send(write_access, *writers)
40
+ send(write_access, *writers) # e.g. results in private :foo=, :bar=
41
41
  end
42
42
  end
43
43
 
@@ -54,7 +54,7 @@ module Timing
54
54
  # e.g. benchmark('time to loop 1,000,000 times') { 1_000_000.times { 42 }; 'hi' }
55
55
  # outputs the following string:
56
56
  # 0.050000 0.000000 0.050000 ( 0.042376): time to loop 1,000,000 times
57
- # and returns: 42
57
+ # and returns: 'hi'
58
58
  #
59
59
  # @param caption the text fragment to print after the timing data
60
60
  # @param out_stream object responding to << that will get the output string
@@ -3,7 +3,15 @@ require 'fileutils'
3
3
 
4
4
  module TrickBag
5
5
 
6
- # Creates and optionally writes to file a scriopt that will check to see that
6
+ # NOTE! If the gem you are testing defines a .gemspec file,
7
+ # then this approach may be eliminated by instead
8
+ # running the following command in the project root (thank you, Rob Kidd):
9
+
10
+ # bundle exec ruby -e "require 'my_gem_name'"
11
+
12
+ # (A bundle install will need to have been done with the current configuration.)
13
+
14
+ # Creates and optionally writes to file a script that will check to see that
7
15
  # the gemspec/Gemfile includes all necessary gems.
8
16
  #
9
17
  # Testing this by doing a simple 'require' instead does not test for the
@@ -16,7 +24,12 @@ module TrickBag
16
24
  # Assumes also that any *gem files in the project root are not needed, and deletes them!
17
25
  #
18
26
  # Call one of the methods to get the script content, and be sure to source it when you
19
- # run it, otherwise rvm may complain that it is not a login shell.
27
+ # run it, otherwise rvm may complain that it is not a login shell. For example,
28
+ # gem install trick_bag and then, in your gem project root do:
29
+ #
30
+ # ruby -e "require 'trick_bag'; TrickBag::GemDependencyScript.write_script_for('', 'test_gem_dep')" && . ./test_gem_dep
31
+ #
32
+ # ...where, of course, you replace 'my_gem' with the name of your gem.
20
33
  module GemDependencyScript
21
34
 
22
35
  module_function
@@ -52,6 +65,7 @@ gemset_name()
52
65
 
53
66
  }
54
67
 
68
+ # Returns a string containing a shell script that will test the gem (see above for details).
55
69
  def script_for(gem_name, script_name = DEFAULT_SCRIPT_NAME)
56
70
  require_command = "require '#{gem_name}'"
57
71
 
@@ -88,6 +102,8 @@ gemset_name()
88
102
  end
89
103
 
90
104
 
105
+ # Writes to file a a shell script that will test the gem (see above for details),
106
+ # and sets the permission to be executable so it can be run as a shell command.
91
107
  def write_script_for(gem_name, filespec = DEFAULT_SCRIPT_NAME)
92
108
  File.write(filespec, script_for(gem_name, filespec))
93
109
  FileUtils.chmod("u=wrx,go=rx", filespec)
@@ -29,6 +29,27 @@ module Validations
29
29
  end
30
30
  end
31
31
 
32
+
33
+ # When a gem project has a .gemspec, this uses bundle exec to verify that requiring
34
+ # that gem name does not result in an error. (An error would occur, for example,
35
+ # if a gem required by the project gem is not specified as a dependency in
36
+ # the .gemspec file.
37
+ #
38
+ # @return a hash containing the :exit_status (0 = success), output (stdout + stderr),
39
+ # and the :process_status (Process::Status object).
40
+ def test_gem_dependency_specs(gem_name)
41
+ command = %Q{bundle exec ruby -e "require '#{gem_name}'"}
42
+
43
+ output, process_status = Open3.capture2e(command)
44
+
45
+ output.prepend(command + "\n\n")
46
+
47
+ {
48
+ exit_status: process_status.exitstatus,
49
+ output: output,
50
+ process_status: process_status
51
+ }
52
+ end
32
53
  end
33
54
  end
34
55
 
@@ -1,3 +1,3 @@
1
1
  module TrickBag
2
- VERSION = "0.45.1"
2
+ VERSION = "0.46.0"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'rspec'
2
- require 'pry'
3
2
 
4
3
  $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
5
4
 
@@ -18,7 +18,7 @@ module TrickBag
18
18
  keys_to_delete = [:b, :d]
19
19
  new_h = clone_hash_except(h, keys_to_delete)
20
20
  keys_to_delete.each do |key|
21
- expect(new_h.has_key?(key)).to be_false
21
+ expect(new_h.has_key?(key)).to eq(false)
22
22
  end
23
23
  end
24
24
 
@@ -61,7 +61,6 @@ module Enumerables
61
61
  @object += 1
62
62
  self.data << @object
63
63
  end
64
- require 'pry'; binding.pry if self.data.is_a?(Fixnum)
65
64
  end
66
65
  end
67
66
  end
@@ -38,7 +38,7 @@ nbc.com
38
38
 
39
39
 
40
40
  it "should create a temporary file" do
41
- expect(File.exist?(@tempfile.path)).to be_true
41
+ expect(File.exist?(@tempfile.path)).to eq(true)
42
42
  end
43
43
 
44
44
  it "should produce an array" do
@@ -46,15 +46,15 @@ nbc.com
46
46
  end
47
47
 
48
48
  it "should produce a nonempty array" do
49
- expect(subject.to_a.empty?).to be_false
49
+ expect(subject.to_a.empty?).to eq(false)
50
50
  end
51
51
 
52
52
  it "should produce a nonempty array containing 'abc.com'" do
53
- expect(subject.to_a.include?('abc.com')).to be_true
53
+ expect(subject.to_a).to include('abc.com')
54
54
  end
55
55
 
56
56
  it "should produce an array without blank lines" do
57
- expect(subject.to_a.include?('')).to be_false
57
+ expect(subject.to_a).not_to include('')
58
58
  end
59
59
 
60
60
  it "should produce an array without beginning comment characters" do
@@ -69,7 +69,7 @@ describe Formatters do
69
69
  expect(s).to eq('2000-01-02_15-44-37')
70
70
  #regex = /^\d\d\d\d-\d\d-\d\d-\d\d-\d\d-\d\d$/
71
71
  #puts s
72
- #expect(regex === s).to be_true
72
+ #expect(regex === s).to eq(true)
73
73
  #
74
74
  #
75
75
  end
@@ -122,6 +122,33 @@ describe Formatters do
122
122
 
123
123
  end
124
124
  end
125
+
126
+
127
+ context 'array_as_multiline_string' do
128
+ specify 'string representation is correct when array is NOT empty' do
129
+ array = [1, 2, 3]
130
+ expect(Formatters.array_as_multiline_string(array)).to eq("1\n2\n3\n")
131
+ end
132
+
133
+ specify 'string representation is correct when array is empty' do
134
+ array = []
135
+ expect(Formatters.array_as_multiline_string(array)).to eq("")
136
+ end
137
+ end
138
+
139
+
140
+ context 'array_diff' do
141
+ specify 'text is correct' do
142
+ a1 = [1, 2, 3]
143
+ a2 = [ 2, 3, 4]
144
+ actual_text = Formatters.array_diff(a1, a2, :color)
145
+ expected_text = "-1\n 2\n 3\n+4\n"
146
+ expect(actual_text).to eq(expected_text)
147
+ puts
148
+ puts actual_text
149
+ puts
150
+ end
151
+ end
125
152
  end
126
153
 
127
154
  end
@@ -17,15 +17,15 @@ module TrickBag
17
17
  context "none?" do
18
18
 
19
19
  specify "returns true when all are false" do
20
- expect(TrickBag.none_with_object?(all_false_funcs, 1)).to be_true
20
+ expect(TrickBag.none_with_object?(all_false_funcs, 1)).to eq(true)
21
21
  end
22
22
 
23
23
  specify "returns false when all are true" do
24
- expect(TrickBag.none_with_object?(all_true_funcs, 1)).to be_false
24
+ expect(TrickBag.none_with_object?(all_true_funcs, 1)).to eq(false)
25
25
  end
26
26
 
27
27
  specify "returns false when some are false and some are true" do
28
- expect(TrickBag.none_with_object?(mixed_true_false_funcs, 1)).to be_false
28
+ expect(TrickBag.none_with_object?(mixed_true_false_funcs, 1)).to eq(false)
29
29
  end
30
30
  end
31
31
 
@@ -33,15 +33,15 @@ module TrickBag
33
33
  context "any?" do
34
34
 
35
35
  specify "returns false when all are false" do
36
- expect(TrickBag.any_with_object?(all_false_funcs, 1)).to be_false
36
+ expect(TrickBag.any_with_object?(all_false_funcs, 1)).to eq(false)
37
37
  end
38
38
 
39
39
  specify "returns true when all are true" do
40
- expect(TrickBag.any_with_object?(all_true_funcs, 1)).to be_true
40
+ expect(TrickBag.any_with_object?(all_true_funcs, 1)).to eq(true)
41
41
  end
42
42
 
43
43
  specify "returns true when some are false and some are true" do
44
- expect(TrickBag.any_with_object?(mixed_true_false_funcs, 1)).to be_true
44
+ expect(TrickBag.any_with_object?(mixed_true_false_funcs, 1)).to eq(true)
45
45
  end
46
46
  end
47
47
 
@@ -49,20 +49,16 @@ module TrickBag
49
49
  context "all?" do
50
50
 
51
51
  specify "returns false when all are false" do
52
- expect(TrickBag.all_with_object?(all_false_funcs, 1)).to be_false
52
+ expect(TrickBag.all_with_object?(all_false_funcs, 1)).to eq(false)
53
53
  end
54
54
 
55
55
  specify "returns true when all are true" do
56
- expect(TrickBag.all_with_object?(all_true_funcs, 1)).to be_true
56
+ expect(TrickBag.all_with_object?(all_true_funcs, 1)).to eq(true)
57
57
  end
58
58
 
59
59
  specify "returns false when some are false and some are true" do
60
- expect(TrickBag.all_with_object?(mixed_true_false_funcs, 1)).to be_false
60
+ expect(TrickBag.all_with_object?(mixed_true_false_funcs, 1)).to eq(false)
61
61
  end
62
62
  end
63
-
64
-
65
-
66
63
  end
67
-
68
64
  end
@@ -17,14 +17,14 @@ describe TempFiles do
17
17
  TempFiles.file_containing('foo') do |fspec|
18
18
  filespec = fspec
19
19
  end
20
- expect(File.exist?(filespec)).to be_false
20
+ expect(File.exist?(filespec)).to eq(false)
21
21
  end
22
22
 
23
23
  it 'uses the prefix in the filespec' do
24
24
  prefix = 'jsiapewrqms'
25
25
  TempFiles.file_containing('', prefix) do |filespec|
26
26
  filename = File.split(filespec).last
27
- expect(filename.start_with?(prefix)).to be_true
27
+ expect(filename.start_with?(prefix)).to eq(true)
28
28
  end
29
29
  end
30
30
  end
@@ -14,15 +14,15 @@ describe Classes do
14
14
  context 'class?' do
15
15
 
16
16
  it 'should recognize String as a class' do
17
- expect(Classes.class?('String')).to be_true
17
+ expect(Classes.class?('String')).to eq(true)
18
18
  end
19
19
 
20
20
  it 'should recognize that RUBY_PLATFORM is not a class even though it is a defined constant' do
21
- expect(Classes.class?('RUBY_PLATFORM')).to be_false
21
+ expect(Classes.class?('RUBY_PLATFORM')).to eq(false)
22
22
  end
23
23
 
24
24
  it 'should recognize a nonexistent constant as not being a class' do
25
- expect(Classes.class?('Afjkdiurqpweruwiqopurqpweriuqewprzvxcvzxcvzxvzvzvzvcxzvzv')).to be_false
25
+ expect(Classes.class?('Afjkdiurqpweruwiqopurqpweriuqewprzvxcvzxcvzxvzvzvzvcxzvzv')).to eq(false)
26
26
  end
27
27
  end
28
28
 
@@ -56,7 +56,7 @@ end
56
56
 
57
57
  it "should be a private method" do
58
58
  fn_create_class.()
59
- expect(ClassPatchTestClass.private_method_defined?(:foo)).to be_true
59
+ expect(ClassPatchTestClass.private_method_defined?(:foo)).to eq(true)
60
60
  end
61
61
  end
62
62
 
@@ -74,7 +74,7 @@ end
74
74
 
75
75
  it "should be a private method" do
76
76
  fn_create_class.()
77
- expect(ClassPatchTestClass.private_method_defined?(:foo=)).to be_true
77
+ expect(ClassPatchTestClass.private_method_defined?(:foo=)).to eq(true)
78
78
  end
79
79
  end
80
80
 
@@ -99,8 +99,8 @@ end
99
99
 
100
100
  it "should be private reader and writer" do
101
101
  fn_create_class.()
102
- expect(ClassPatchTestClass.private_method_defined?(:foo)).to be_true
103
- expect(ClassPatchTestClass.private_method_defined?(:foo=)).to be_true
102
+ expect(ClassPatchTestClass.private_method_defined?(:foo)).to eq(true)
103
+ expect(ClassPatchTestClass.private_method_defined?(:foo=)).to eq(true)
104
104
  end
105
105
  end
106
106
 
@@ -126,12 +126,12 @@ end
126
126
 
127
127
  it "should be a public reader" do
128
128
  fn_create_class.()
129
- expect(ClassPatchTestClass.public_method_defined?(:foo)).to be_true
129
+ expect(ClassPatchTestClass.public_method_defined?(:foo)).to eq(true)
130
130
  end
131
131
 
132
132
  it "should be a private writer" do
133
133
  fn_create_class.()
134
- expect(ClassPatchTestClass.private_method_defined?(:foo=)).to be_true
134
+ expect(ClassPatchTestClass.private_method_defined?(:foo=)).to eq(true)
135
135
  end
136
136
  end
137
137
 
@@ -147,14 +147,14 @@ end
147
147
 
148
148
  it "should be a private reader" do
149
149
  fn_create_class.()
150
- expect(ClassPatchTestClass.private_method_defined?(:foo)).to be_true
150
+ expect(ClassPatchTestClass.private_method_defined?(:foo)).to eq(true)
151
151
  end
152
152
 
153
153
  it 'should not contain a writer at all' do
154
154
  fn_create_class.()
155
- expect(ClassPatchTestClass.private_method_defined?(:foo=)).to be_false
156
- expect(ClassPatchTestClass.protected_method_defined?(:foo=)).to be_false
157
- expect(ClassPatchTestClass.public_method_defined?(:foo=)).to be_false
155
+ expect(ClassPatchTestClass.private_method_defined?(:foo=)).to eq(false)
156
+ expect(ClassPatchTestClass.protected_method_defined?(:foo=)).to eq(false)
157
+ expect(ClassPatchTestClass.public_method_defined?(:foo=)).to eq(false)
158
158
  end
159
159
  end
160
160
  end
@@ -10,37 +10,37 @@ module Numeric
10
10
 
11
11
  context '#start_position_reached?' do
12
12
  it 'considers first element to be included when no start position and max are specified' do
13
- expect(StartAndMax.new.start_position_reached?(0)).to be_true
13
+ expect(StartAndMax.new.start_position_reached?(0)).to eq(true)
14
14
  end
15
15
 
16
16
  it 'considers first element to be included when start position == n' do
17
- expect(StartAndMax.new(n).start_position_reached?(n)).to be_true
17
+ expect(StartAndMax.new(n).start_position_reached?(n)).to eq(true)
18
18
  end
19
19
 
20
20
  it 'considers first element to be included when start position < n' do
21
- expect(StartAndMax.new(n).start_position_reached?(n + 1)).to be_true
21
+ expect(StartAndMax.new(n).start_position_reached?(n + 1)).to eq(true)
22
22
  end
23
23
 
24
24
  it 'considers first element NOT to be included when start position is specified but n < start' do
25
- expect(StartAndMax.new(n).start_position_reached?(n - 1)).to be_false
25
+ expect(StartAndMax.new(n).start_position_reached?(n - 1)).to eq(false)
26
26
  end
27
27
  end
28
28
 
29
29
  context '#max_count_reached?' do
30
30
  it 'returns false for a very large number when max is not specified' do
31
- expect(StartAndMax.new.max_count_reached?(10 ** 100)).to be_false
31
+ expect(StartAndMax.new.max_count_reached?(10 ** 100)).to eq(false)
32
32
  end
33
33
 
34
34
  it 'returns true when when n == max' do
35
- expect(StartAndMax.new(0, n).max_count_reached?(n)).to be_true
35
+ expect(StartAndMax.new(0, n).max_count_reached?(n)).to eq(true)
36
36
  end
37
37
 
38
38
  it 'returns false when when n < max' do
39
- expect(StartAndMax.new(0, n).max_count_reached?(n - 1)).to be_false
39
+ expect(StartAndMax.new(0, n).max_count_reached?(n - 1)).to eq(false)
40
40
  end
41
41
 
42
42
  it 'returns true when when n > max' do
43
- expect(StartAndMax.new(0, n).max_count_reached?(n + 1)).to be_true
43
+ expect(StartAndMax.new(0, n).max_count_reached?(n + 1)).to eq(true)
44
44
  end
45
45
  end
46
46
  end
@@ -10,11 +10,11 @@ module System
10
10
 
11
11
  context "#command_available" do
12
12
  specify 'which ls returns true' do
13
- expect(System.command_available?('ls')).to be_true
13
+ expect(System.command_available?('ls')).to eq(true)
14
14
  end
15
15
 
16
16
  specify 'which fsdfiuowqpfeqpxumwfuqiufqpiufpqwmiurqpruiiqwmxrqupruxmqowiruqmpmu returns false' do
17
- expect(System.command_available?('fsdfiuowqpfeqpxumwfuqiufqpiufpqwmiurqpruiiqwmxrqupruxmqowiruqmpmu')).to be_false
17
+ expect(System.command_available?('fsdfiuowqpfeqpxumwfuqiufqpiufpqwmiurqpruiiqwmxrqupruxmqowiruqmpmu')).to eq(false)
18
18
  end
19
19
  end
20
20
 
@@ -22,8 +22,8 @@ module System
22
22
  context ".lsof" do
23
23
  specify "returns ruby lines" do
24
24
  lines = System.lsof
25
- has_ruby_line = lines.any_with_object? { |line| /ruby/ === line }
26
- expect(has_ruby_line).to be_true
25
+ has_ruby_line = lines.any? { |line| /ruby/ === line }
26
+ expect(has_ruby_line).to eq(true)
27
27
  end
28
28
  end
29
29
  end
@@ -21,10 +21,19 @@ module TrickBag
21
21
  raise_on_invalid_value('foo', [:bar, :baz], 'manufacturer')
22
22
  fail "Should have raised an error"
23
23
  rescue => error
24
- expect(/manufacturer/ === error.message).to be_true
25
- expect(/:bar/ === error.message).to be_true
24
+ expect(error.message).to match(/manufacturer/)
25
+ expect(error.message).to match(/:bar/)
26
26
  expect(error.message).to eq("Invalid manufacturer 'foo'; must be one of: [:bar, :baz].")
27
27
  end
28
28
  end
29
+
30
+ specify 'this gem contains all necessary gem dependency specifications' do
31
+ require 'open3'
32
+ result = test_gem_dependency_specs('trick_bag')
33
+ exit_status = result[:exit_status]
34
+ if exit_status != 0
35
+ fail "Exit status was #{exit_status}, output was:\n#{output}."
36
+ end
37
+ end
29
38
  end
30
39
  end
data/trick_bag.gemspec CHANGED
@@ -19,10 +19,9 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency "os", '~> 0'
22
+ spec.add_dependency "diffy", '~> 3.0'
22
23
 
23
24
  spec.add_development_dependency "bundler", "~> 1.3"
24
- spec.add_development_dependency "rake", '~> 10'
25
- spec.add_development_dependency "rspec", '~> 2'
26
- spec.add_development_dependency "guard", '~> 2'
27
- spec.add_development_dependency "guard-rspec", '~> 4'
25
+ spec.add_development_dependency "rake", '~> 10.1'
26
+ spec.add_development_dependency "rspec", '~> 3.0'
28
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trick_bag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.45.1
4
+ version: 0.46.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Bennett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-27 00:00:00.000000000 Z
11
+ date: 2014-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: os
@@ -25,75 +25,61 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
28
+ name: diffy
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.3'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.3'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '10'
48
- type: :development
33
+ version: '3.0'
34
+ type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '10'
40
+ version: '3.0'
55
41
  - !ruby/object:Gem::Dependency
56
- name: rspec
42
+ name: bundler
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '2'
47
+ version: '1.3'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '2'
54
+ version: '1.3'
69
55
  - !ruby/object:Gem::Dependency
70
- name: guard
56
+ name: rake
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '2'
61
+ version: '10.1'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '2'
68
+ version: '10.1'
83
69
  - !ruby/object:Gem::Dependency
84
- name: guard-rspec
70
+ name: rspec
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '4'
75
+ version: '3.0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '4'
82
+ version: '3.0'
97
83
  description: Miscellaneous general useful tools for general purpose programming.
98
84
  email:
99
85
  - keithrbennett@gmail.com
@@ -153,7 +139,7 @@ files:
153
139
  - spec/trick_bag/operators/operators_spec.rb
154
140
  - spec/trick_bag/system_spec.rb
155
141
  - spec/trick_bag/timing/timing_spec.rb
156
- - spec/trick_bag/validations/hashes_validations_spec.rb
142
+ - spec/trick_bag/validations/hash_validations_spec.rb
157
143
  - spec/trick_bag/validations/object_validations_spec.rb
158
144
  - spec/trick_bag/validations/other_validations_spec.rb
159
145
  - trick_bag.gemspec
@@ -177,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
163
  version: '0'
178
164
  requirements: []
179
165
  rubyforge_project:
180
- rubygems_version: 2.2.1
166
+ rubygems_version: 2.2.2
181
167
  signing_key:
182
168
  specification_version: 4
183
169
  summary: Miscellaneous general useful tools.
@@ -202,6 +188,6 @@ test_files:
202
188
  - spec/trick_bag/operators/operators_spec.rb
203
189
  - spec/trick_bag/system_spec.rb
204
190
  - spec/trick_bag/timing/timing_spec.rb
205
- - spec/trick_bag/validations/hashes_validations_spec.rb
191
+ - spec/trick_bag/validations/hash_validations_spec.rb
206
192
  - spec/trick_bag/validations/object_validations_spec.rb
207
193
  - spec/trick_bag/validations/other_validations_spec.rb