ztk 3.0.3 → 3.0.4

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: a5601e9072a8dc2eacd437f77c0ebbedcb408e42
4
- data.tar.gz: 005d552f42c484ca4cbe260b91bd7b5d7d71323f
3
+ metadata.gz: bdc8f617cd4946e08ae511019c8c824602e10690
4
+ data.tar.gz: d59c97edbd63a148a7453aa5ccfc5ade274928b0
5
5
  SHA512:
6
- metadata.gz: f8fc899e8ad6a804e1d2cd145e3c19e14b7a3cbda0317b70fcf7d43e398461229f54b13aa455e7b78ddbfb8dafa2b3b3104f278dc1d40bf773a6b1c47380a0b8
7
- data.tar.gz: 5a9472f0d227c6e30d1f3c5e1687184c65df3709a3e63867cb88a68be348eb9f6325b21d456ee5cdc38b43dac4a9732d26d8fd221d2beb15c6c0da8dfe882223
6
+ metadata.gz: d2ba6a6764ad01b16e5e7dfd33e704f34b7c33c666299745622035c8eeefc0fc0c71d9bacb18f4587e24de74c5688a6a6a20d8b3fe4dc5e966a54dc8d4be3292
7
+ data.tar.gz: 6f715ee4bb05e8cc3430756556834f6057d0cd9e4d7525a054836c2240d0b2f3f8c355dbb9b6fd41df81d61b3b7ed9515eca9708237ed49017dd0de782327a1c
data/Gemfile CHANGED
@@ -1,13 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem "json" if (RUBY_VERSION == "1.8.7")
4
-
5
- if (RUBY_VERSION < "1.9.3")
6
- gem "activesupport", "< 4.0.0"
7
- end
8
-
9
- if (RUBY_VERSION < "1.9.2")
10
- gem "mime-types", "< 2.0"
11
- end
12
-
13
3
  gemspec
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  # ZTK
8
8
 
9
- Zachary's Tool Kit contains a collection of reusable classes meant to simplify development of complex systems in Ruby, especially devops tooling. These classes provide functionality I often find myself needing from project to project. Instead of reinventing the wheel each time, I've started building a collection of reusable classes. Easy-bake DSLs, parallel processing, complex logging, templating and many other useful design patterns, for example are all contained in simple, reusable classes with a common interface and configuration style.
9
+ Zachary's Tool Kit contains a collection of reusable classes meant to simplify development of complex systems in Ruby. These classes provide functionality I often find myself needing from project to project. Instead of reinventing the wheel each time, I've started building a collection of reusable classes. Easy-bake DSLs, parallel processing, complex logging, templating and many other useful design patterns, for example are all contained in simple, reusable classes with a common interface and configuration style.
10
10
 
11
11
  - **ZTK::ANSI**
12
12
 
data/lib/ztk/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module ZTK
2
2
 
3
3
  # ZTK Version String
4
- VERSION = "3.0.3"
4
+ VERSION = "3.0.4"
5
5
 
6
6
  end
@@ -17,8 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
  ################################################################################
20
- #!/bin/bash
21
- set -x
20
+ #!/bin/bash -eux
22
21
 
23
22
  sudo apt-get -qy update
24
23
 
@@ -0,0 +1,83 @@
1
+ ################################################################################
2
+ #
3
+ # Author: Zachary Patten <zachary AT jovelabs DOT com>
4
+ # Copyright: Copyright (c) Zachary Patten
5
+ # License: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+ ################################################################################
20
+
21
+ require "spec_helper"
22
+
23
+ describe "ZTK::ANSI Module" do
24
+
25
+ subject { ZTK::ANSI }
26
+
27
+ describe "module" do
28
+
29
+ it "should be ZTK::ANSI" do
30
+ subject.should be ZTK::ANSI
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+
37
+ describe "ZTK::ANSI Monkey-Patch String Class" do
38
+
39
+ subject {
40
+ class String
41
+ include ZTK::ANSI
42
+ end
43
+ }
44
+
45
+ describe "class" do
46
+
47
+ it "should include ZTK::ANSI" do
48
+ expect(subject.include?(ZTK::ANSI)).to be true
49
+ end
50
+
51
+ end
52
+
53
+ describe "methods" do
54
+
55
+ ZTK::ANSI::ANSI_COLORS.each do |color, code|
56
+
57
+ it "should color the string #{color}" do
58
+ expect(subject.new("#{color}").send(color)).to match(/#{color}/)
59
+ expect(subject.new("#{color}").send(color)).to match(/#{code}/)
60
+ end
61
+
62
+ it "should remove #{color} color from the string" do
63
+ expect(subject.new("#{color}").send(color).uncolor).to match(/#{color}/)
64
+ expect(subject.new("#{color}").send(color).uncolor).not_to match(/#{code}/)
65
+ end
66
+
67
+
68
+ it "should reset the screen and color the string #{color}" do
69
+ expect(subject.new("#{color}").send(color).reset).to match(/#{color}/)
70
+ expect(subject.new("#{color}").send(color).reset).to match(/#{code}/)
71
+ expect(subject.new("#{color}").send(color).reset).to start_with("\e[2J")
72
+ end
73
+
74
+ end
75
+
76
+ x, y = Random.rand(25), Random.rand(25)
77
+ it "should move the cursor to #{x},#{y}" do
78
+ expect(subject.new.goto(x,y)).to start_with("\e[#{x};#{y}H")
79
+ end
80
+
81
+ end
82
+
83
+ end
data/spec/ztk/ssh_spec.rb CHANGED
@@ -35,7 +35,7 @@ describe ZTK::SSH do
35
35
  describe "class" do
36
36
 
37
37
  it "should be an instance of ZTK::SSH" do
38
- subject.should be_an_instance_of ZTK::SSH
38
+ expect(subject).to be_an_instance_of ZTK::SSH
39
39
  end
40
40
 
41
41
  end
@@ -59,6 +59,8 @@ describe ZTK::SSH do
59
59
  status.exit_code.should == 0
60
60
  @ui.stdout.rewind
61
61
  @ui.stdout.read.chomp.should == data
62
+
63
+ expect(subject.close).to be true
62
64
  end
63
65
 
64
66
  it "should timeout after the period specified" do
@@ -71,6 +73,8 @@ describe ZTK::SSH do
71
73
  end
72
74
  hostname = %x(hostname).chomp
73
75
  lambda { subject.exec("hostname ; sleep 10") }.should raise_error ZTK::SSHError
76
+
77
+ expect(subject.close).to be true
74
78
  end
75
79
 
76
80
  it "should throw an exception if the exit status is not as expected" do
@@ -81,6 +85,8 @@ describe ZTK::SSH do
81
85
  config.host_name = "127.0.0.1"
82
86
  end
83
87
  lambda { subject.exec("/bin/bash -c 'exit 64'") }.should raise_error ZTK::SSHError
88
+
89
+ expect(subject.close).to be true
84
90
  end
85
91
 
86
92
  it "should return a instance of an OpenStruct object" do
@@ -92,6 +98,8 @@ describe ZTK::SSH do
92
98
  end
93
99
  result = subject.exec(%q{echo "Hello World"})
94
100
  result.should be_an_instance_of OpenStruct
101
+
102
+ expect(subject.close).to be true
95
103
  end
96
104
 
97
105
  it "should return the exit code" do
@@ -105,6 +113,8 @@ describe ZTK::SSH do
105
113
 
106
114
  result = subject.exec(%Q{/bin/bash -c 'exit #{data}'}, :exit_code => data)
107
115
  result.exit_code.should == data
116
+
117
+ expect(subject.close).to be true
108
118
  end
109
119
 
110
120
  it "should return the output" do
@@ -118,6 +128,8 @@ describe ZTK::SSH do
118
128
 
119
129
  result = subject.exec(%Q{echo "#{data}"})
120
130
  result.output.match(data).should_not be nil
131
+
132
+ expect(subject.close).to be true
121
133
  end
122
134
 
123
135
  it "should allow us to change the expected exit code" do
@@ -129,6 +141,47 @@ describe ZTK::SSH do
129
141
  end
130
142
  data = 32
131
143
  result = subject.exec(%Q{/bin/bash -c 'exit #{data}'}, :exit_code => data)
144
+
145
+ expect(subject.close).to be true
146
+ end
147
+
148
+ it "should allow us to execute a bootstrap script" do
149
+ subject.config do |config|
150
+ config.ui = @ui
151
+
152
+ config.user = ENV["USER"]
153
+ config.host_name = "127.0.0.1"
154
+ end
155
+ data = "Hello World @ #{Time.now.utc}"
156
+
157
+ result = subject.bootstrap(<<-EOBOOTSTRAP)
158
+ echo "#{data}" >&1
159
+ EOBOOTSTRAP
160
+
161
+ expect(result.output).to match(/#{data}/)
162
+
163
+ expect(subject.close).to be true
164
+ end
165
+
166
+ it "should allow us to write a file" do
167
+ subject.config do |config|
168
+ config.ui = @ui
169
+
170
+ config.user = ENV["USER"]
171
+ config.host_name = "127.0.0.1"
172
+ end
173
+ data = "Hello World @ #{Time.now.utc}"
174
+ test_filename = File.join("", "tmp", "test_file.txt")
175
+
176
+ subject.file(:target => test_filename) do |f|
177
+ f.write(data)
178
+ end
179
+
180
+ result = subject.exec(%Q{cat #{test_filename}})
181
+
182
+ expect(result.output).to match(/#{data}/)
183
+
184
+ expect(subject.close).to be true
132
185
  end
133
186
 
134
187
  describe "stdout" do
@@ -142,16 +195,18 @@ describe ZTK::SSH do
142
195
  end
143
196
  data = "Hello World @ #{Time.now.utc}"
144
197
 
145
- subject.exec(%Q{echo "#{data}" -f >&1})
198
+ subject.exec(%Q{echo "#{data}" >&1})
146
199
 
147
200
  @ui.stdout.rewind
148
- @ui.stdout.read.match(data).should_not be nil
201
+ expect(@ui.stdout.read).to match(/#{data}/)
149
202
 
150
203
  @ui.stderr.rewind
151
- @ui.stderr.read.match(data).should be nil
204
+ expect(@ui.stderr.read).to be_empty
152
205
 
153
206
  @ui.stdin.rewind
154
- @ui.stdin.read.match(data).should be nil
207
+ expect(@ui.stdin.read).to be_empty
208
+
209
+ expect(subject.close).to be true
155
210
  end
156
211
 
157
212
  it "should capture STDOUT (without PTY) and send it to the STDOUT pipe" do
@@ -165,16 +220,18 @@ describe ZTK::SSH do
165
220
  end
166
221
  data = "Hello World @ #{Time.now.utc}"
167
222
 
168
- subject.exec(%Q{echo "#{data}" -f >&1})
223
+ subject.exec(%Q{echo "#{data}" >&1})
169
224
 
170
225
  @ui.stdout.rewind
171
- @ui.stdout.read.match(data).should_not be nil
226
+ expect(@ui.stdout.read).to match(/#{data}/)
172
227
 
173
228
  @ui.stderr.rewind
174
- @ui.stderr.read.match(data).should be nil
229
+ expect(@ui.stderr.read).to be_empty
175
230
 
176
231
  @ui.stdin.rewind
177
- @ui.stdin.read.match(data).should be nil
232
+ expect(@ui.stdin.read).to be_empty
233
+
234
+ expect(subject.close).to be true
178
235
  end
179
236
 
180
237
  end
@@ -190,16 +247,18 @@ describe ZTK::SSH do
190
247
  end
191
248
  data = "Hello World @ #{Time.now.utc}"
192
249
 
193
- subject.exec(%Q{echo "#{data}" -f >&2})
250
+ subject.exec(%Q{echo "#{data}" >&2})
194
251
 
195
252
  @ui.stdout.rewind
196
- @ui.stdout.read.match(data).should_not be nil
253
+ expect(@ui.stdout.read).to match(/#{data}/)
197
254
 
198
255
  @ui.stderr.rewind
199
- @ui.stderr.read.match(data).should be nil
256
+ expect(@ui.stderr.read).to be_empty
200
257
 
201
258
  @ui.stdin.rewind
202
- @ui.stdin.read.match(data).should be nil
259
+ expect(@ui.stdin.read).to be_empty
260
+
261
+ expect(subject.close).to be true
203
262
  end
204
263
 
205
264
  it "should capture STDERR (without PTY) and send it to the STDERR pipe" do
@@ -213,16 +272,18 @@ describe ZTK::SSH do
213
272
  end
214
273
  data = "Hello World @ #{Time.now.utc}"
215
274
 
216
- subject.exec(%Q{echo "#{data}" -f >&2})
275
+ subject.exec(%Q{echo "#{data}" >&2})
217
276
 
218
277
  @ui.stdout.rewind
219
- @ui.stdout.read.match(data).should be nil
278
+ expect(@ui.stdout.read).to be_empty
220
279
 
221
280
  @ui.stderr.rewind
222
- @ui.stderr.read.match(data).should_not be nil
281
+ expect(@ui.stderr.read).to match(/#{data}/)
223
282
 
224
283
  @ui.stdin.rewind
225
- @ui.stdin.read.match(data).should be nil
284
+ expect(@ui.stdin.read).to be_empty
285
+
286
+ expect(subject.close).to be true
226
287
  end
227
288
 
228
289
  end
@@ -259,11 +320,13 @@ describe ZTK::SSH do
259
320
  end
260
321
 
261
322
  File.exists?(remote_file).should == false
262
- subject.upload(local_file, remote_file)
323
+ subject.upload(local_file, remote_file, :use_scp => use_scp)
263
324
  File.exists?(remote_file).should == true
264
325
 
265
326
  File.exists?(remote_file) && File.delete(remote_file)
266
327
  File.exists?(local_file) && File.delete(local_file)
328
+
329
+ expect(subject.close).to be true
267
330
  end
268
331
  end
269
332
 
@@ -278,7 +341,6 @@ describe ZTK::SSH do
278
341
 
279
342
  config.user = ENV["USER"]
280
343
  config.host_name = "127.0.0.1"
281
- config.use_scp = use_scp
282
344
  end
283
345
 
284
346
  data = "Hello World @ #{Time.now.utc}"
@@ -300,11 +362,13 @@ describe ZTK::SSH do
300
362
  end
301
363
 
302
364
  File.exists?(local_file).should == false
303
- subject.download(remote_file, local_file)
365
+ subject.download(remote_file, local_file, :use_scp => use_scp)
304
366
  File.exists?(local_file).should == true
305
367
 
306
368
  File.exists?(local_file) && File.delete(local_file)
307
369
  File.exists?(remote_file) && File.delete(remote_file)
370
+
371
+ expect(subject.close).to be true
308
372
  end
309
373
  end
310
374
 
@@ -332,6 +396,8 @@ describe ZTK::SSH do
332
396
  status.exit_code.should == 0
333
397
  @ui.stdout.rewind
334
398
  @ui.stdout.read.chomp.should == data
399
+
400
+ expect(subject.close).to be true
335
401
  end
336
402
 
337
403
  it "should timeout after the period specified" do
@@ -346,6 +412,8 @@ describe ZTK::SSH do
346
412
  end
347
413
  hostname = %x(hostname).chomp
348
414
  lambda { subject.exec("hostname ; sleep 10") }.should raise_error ZTK::SSHError
415
+
416
+ expect(subject.close).to be true
349
417
  end
350
418
 
351
419
  it "should throw an exception if the exit status is not as expected" do
@@ -358,6 +426,8 @@ describe ZTK::SSH do
358
426
  config.proxy_host_name = "127.0.0.1"
359
427
  end
360
428
  lambda { subject.exec("/bin/bash -c 'exit 64'") }.should raise_error ZTK::SSHError
429
+
430
+ expect(subject.close).to be true
361
431
  end
362
432
 
363
433
  it "should return a instance of an OpenStruct object" do
@@ -371,6 +441,8 @@ describe ZTK::SSH do
371
441
  end
372
442
  result = subject.exec(%q{echo "Hello World"})
373
443
  result.should be_an_instance_of OpenStruct
444
+
445
+ expect(subject.close).to be true
374
446
  end
375
447
 
376
448
  it "should return the exit code" do
@@ -386,6 +458,8 @@ describe ZTK::SSH do
386
458
 
387
459
  result = subject.exec(%Q{/bin/bash -c 'exit #{data}'}, :exit_code => data)
388
460
  result.exit_code.should == data
461
+
462
+ expect(subject.close).to be true
389
463
  end
390
464
 
391
465
  it "should return the output" do
@@ -401,6 +475,8 @@ describe ZTK::SSH do
401
475
 
402
476
  result = subject.exec(%Q{echo "#{data}"})
403
477
  result.output.match(data).should_not be nil
478
+
479
+ expect(subject.close).to be true
404
480
  end
405
481
 
406
482
  it "should allow us to change the expected exit code" do
@@ -414,6 +490,47 @@ describe ZTK::SSH do
414
490
  end
415
491
  data = 32
416
492
  result = subject.exec(%Q{/bin/bash -c 'exit #{data}'}, :exit_code => data)
493
+
494
+ expect(subject.close).to be true
495
+ end
496
+
497
+ it "should allow us to execute a bootstrap script" do
498
+ subject.config do |config|
499
+ config.ui = @ui
500
+
501
+ config.user = ENV["USER"]
502
+ config.host_name = "127.0.0.1"
503
+ end
504
+ data = "Hello World @ #{Time.now.utc}"
505
+
506
+ result = subject.bootstrap(<<-EOBOOTSTRAP)
507
+ echo "#{data}" >&1
508
+ EOBOOTSTRAP
509
+
510
+ expect(result.output).to match(/#{data}/)
511
+
512
+ expect(subject.close).to be true
513
+ end
514
+
515
+ it "should allow us to write a file" do
516
+ subject.config do |config|
517
+ config.ui = @ui
518
+
519
+ config.user = ENV["USER"]
520
+ config.host_name = "127.0.0.1"
521
+ end
522
+ data = "Hello World @ #{Time.now.utc}"
523
+ test_filename = File.join("", "tmp", "test_file.txt")
524
+
525
+ subject.file(:target => test_filename) do |f|
526
+ f.write(data)
527
+ end
528
+
529
+ result = subject.exec(%Q{cat #{test_filename}})
530
+
531
+ expect(result.output).to match(/#{data}/)
532
+
533
+ expect(subject.close).to be true
417
534
  end
418
535
 
419
536
  describe "stdout" do
@@ -429,16 +546,18 @@ describe ZTK::SSH do
429
546
  end
430
547
  data = "Hello World @ #{Time.now.utc}"
431
548
 
432
- subject.exec(%Q{echo "#{data}" -f >&1})
549
+ subject.exec(%Q{echo "#{data}" >&1})
433
550
 
434
551
  @ui.stdout.rewind
435
- @ui.stdout.read.match(data).should_not be nil
552
+ expect(@ui.stdout.read).to match(/#{data}/)
436
553
 
437
554
  @ui.stderr.rewind
438
- @ui.stderr.read.match(data).should be nil
555
+ expect(@ui.stderr.read).to be_empty
439
556
 
440
557
  @ui.stdin.rewind
441
- @ui.stdin.read.match(data).should be nil
558
+ expect(@ui.stdin.read).to be_empty
559
+
560
+ expect(subject.close).to be true
442
561
  end
443
562
 
444
563
  it "should capture STDOUT (without PTY) and send it to the STDOUT pipe" do
@@ -454,16 +573,18 @@ describe ZTK::SSH do
454
573
  end
455
574
  data = "Hello World @ #{Time.now.utc}"
456
575
 
457
- subject.exec(%Q{echo "#{data}" -f >&1})
576
+ subject.exec(%Q{echo "#{data}" >&1})
458
577
 
459
578
  @ui.stdout.rewind
460
- @ui.stdout.read.match(data).should_not be nil
579
+ expect(@ui.stdout.read).to match(/#{data}/)
461
580
 
462
581
  @ui.stderr.rewind
463
- @ui.stderr.read.match(data).should be nil
582
+ expect(@ui.stderr.read).to be_empty
464
583
 
465
584
  @ui.stdin.rewind
466
- @ui.stdin.read.match(data).should be nil
585
+ expect(@ui.stdin.read).to be_empty
586
+
587
+ expect(subject.close).to be true
467
588
  end
468
589
 
469
590
  end
@@ -481,16 +602,18 @@ describe ZTK::SSH do
481
602
  end
482
603
  data = "Hello World @ #{Time.now.utc}"
483
604
 
484
- subject.exec(%Q{echo "#{data}" -f >&2})
605
+ subject.exec(%Q{echo "#{data}" >&2})
485
606
 
486
607
  @ui.stdout.rewind
487
- @ui.stdout.read.match(data).should_not be nil
608
+ expect(@ui.stdout.read).to match(/#{data}/)
488
609
 
489
610
  @ui.stderr.rewind
490
- @ui.stderr.read.match(data).should be nil
611
+ expect(@ui.stderr.read).to be_empty
491
612
 
492
613
  @ui.stdin.rewind
493
- @ui.stdin.read.match(data).should be nil
614
+ expect(@ui.stdin.read).to be_empty
615
+
616
+ expect(subject.close).to be true
494
617
  end
495
618
 
496
619
  it "should capture STDERR (without PTY) and send it to the STDERR pipe" do
@@ -506,16 +629,18 @@ describe ZTK::SSH do
506
629
  end
507
630
  data = "Hello World @ #{Time.now.utc}"
508
631
 
509
- subject.exec(%Q{echo "#{data}" -f >&2})
632
+ subject.exec(%Q{echo "#{data}" >&2})
510
633
 
511
634
  @ui.stdout.rewind
512
- @ui.stdout.read.match(data).should be nil
635
+ expect(@ui.stdout.read).to be_empty
513
636
 
514
637
  @ui.stderr.rewind
515
- @ui.stderr.read.match(data).should_not be nil
638
+ expect(@ui.stderr.read).to match(/#{data}/)
516
639
 
517
640
  @ui.stdin.rewind
518
- @ui.stdin.read.match(data).should be nil
641
+ expect(@ui.stdin.read).to be_empty
642
+
643
+ expect(subject.close).to be true
519
644
  end
520
645
 
521
646
  end
@@ -554,11 +679,13 @@ describe ZTK::SSH do
554
679
  end
555
680
 
556
681
  File.exists?(remote_file).should == false
557
- subject.upload(local_file, remote_file)
682
+ subject.upload(local_file, remote_file, :use_scp => use_scp)
558
683
  File.exists?(remote_file).should == true
559
684
 
560
685
  File.exists?(remote_file) && File.delete(remote_file)
561
686
  File.exists?(local_file) && File.delete(local_file)
687
+
688
+ expect(subject.close).to be true
562
689
  end
563
690
  end
564
691
 
@@ -596,11 +723,13 @@ describe ZTK::SSH do
596
723
  end
597
724
 
598
725
  File.exists?(local_file).should == false
599
- subject.download(remote_file, local_file)
726
+ subject.download(remote_file, local_file, :use_scp => use_scp)
600
727
  File.exists?(local_file).should == true
601
728
 
602
729
  File.exists?(local_file) && File.delete(local_file)
603
730
  File.exists?(remote_file) && File.delete(remote_file)
731
+
732
+ expect(subject.close).to be true
604
733
  end
605
734
  end
606
735
 
@@ -98,10 +98,10 @@ describe ZTK::TCPSocketCheck do
98
98
 
99
99
  describe "read check" do
100
100
 
101
- it "should return false on a read check to 127.0.0.1:0" do
101
+ it "should return false on a read check to 127.0.0.1:1" do
102
102
  subject.config do |config|
103
103
  config.host = "127.0.0.1"
104
- config.port = 0
104
+ config.port = 1
105
105
  config.wait = WAIT_SMALL
106
106
  end
107
107
  subject.wait.should == false
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ztk
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.3
4
+ version: 3.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zachary Patten
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-18 00:00:00.000000000 Z
11
+ date: 2016-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -346,6 +346,7 @@ files:
346
346
  - spec/support/before_install.sh
347
347
  - spec/support/test-config.rb
348
348
  - spec/support/test-template.txt.erb
349
+ - spec/ztk/ansi_spec.rb
349
350
  - spec/ztk/background_spec.rb
350
351
  - spec/ztk/base_spec.rb
351
352
  - spec/ztk/benchmark_spec.rb
@@ -394,6 +395,7 @@ test_files:
394
395
  - spec/support/before_install.sh
395
396
  - spec/support/test-config.rb
396
397
  - spec/support/test-template.txt.erb
398
+ - spec/ztk/ansi_spec.rb
397
399
  - spec/ztk/background_spec.rb
398
400
  - spec/ztk/base_spec.rb
399
401
  - spec/ztk/benchmark_spec.rb