cmds 0.0.3 → 0.0.4
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 +4 -4
- data/Rakefile +152 -0
- data/ansible/dev.yml +5 -0
- data/cmds.gemspec +1 -0
- data/lib/cmds/capture.rb +47 -0
- data/lib/cmds/debug.rb +101 -0
- data/lib/cmds/erb_context.rb +30 -0
- data/lib/cmds/io_handler.rb +76 -0
- data/lib/cmds/pipe.rb +13 -0
- data/lib/cmds/result.rb +34 -0
- data/lib/cmds/shell_eruby.rb +11 -0
- data/lib/cmds/stream.rb +239 -0
- data/lib/cmds/sugar.rb +76 -0
- data/lib/cmds/util.rb +254 -0
- data/lib/cmds/version.rb +1 -1
- data/lib/cmds.rb +19 -376
- data/scratch/popen3.rb +33 -0
- data/scratch/proxy.rb +5 -0
- data/spec/cmds/assert_spec.rb +16 -0
- data/spec/cmds/capture_spec.rb +108 -0
- data/spec/cmds/curry_spec.rb +4 -4
- data/spec/cmds/error_spec.rb +7 -2
- data/spec/cmds/ok_spec.rb +11 -1
- data/spec/cmds/replace_shortcuts_spec.rb +105 -65
- data/spec/cmds/stream_spec.rb +58 -0
- data/spec/debug_helper.rb +3 -0
- data/spec/spec_helper.rb +64 -5
- data/test/answers.txt +3 -0
- data/test/bin/dspec +1 -0
- data/test/echo_cmd.rb +1 -0
- data/test/lines.txt +4 -0
- data/test/questions.rb +15 -0
- data/test/tick.rb +6 -0
- metadata +46 -9
- data/scratch/blah.rb +0 -6
- data/spec/cmds/call_spec.rb +0 -27
- data/spec/cmds/raise_on_error_spec.rb +0 -11
- data/spec/cmds/run_spec.rb +0 -49
@@ -1,78 +1,118 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
def expect_to_replace input, output
|
4
|
-
[
|
5
|
-
"#{ input }",
|
6
|
-
"blah #{ input }",
|
7
|
-
"#{ input } blah",
|
8
|
-
"blah\n#{ input }\nblah",
|
9
|
-
].each do |str|
|
10
|
-
expect( Cmds.replace_shortcuts input ).to eq output
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
3
|
describe 'Cmds::replace_shortcuts' do
|
4
|
+
meth = Cmds.method(:replace_shortcuts)
|
5
|
+
|
15
6
|
it "should replace %s with <%= arg %>" do
|
16
|
-
|
17
|
-
|
18
|
-
|
7
|
+
expect_map meth, {
|
8
|
+
["%s"] => "<%= arg %>",
|
9
|
+
["blah %s"] => "blah <%= arg %>",
|
10
|
+
["%s blah"] => "<%= arg %> blah",
|
11
|
+
["blah\n%s\nblah"] => "blah\n<%= arg %>\nblah",
|
12
|
+
["%s %s"] => "<%= arg %> <%= arg %>",
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
19
16
|
it "should replace %%s with %s (escaping)" do
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
17
|
+
expect_map meth, {
|
18
|
+
["%%s"] => "%s",
|
19
|
+
["blah %%s"] => "blah %s",
|
20
|
+
["%%s blah"] => "%s blah",
|
21
|
+
["blah\n%%s\nblah"] => "blah\n%s\nblah",
|
22
|
+
["%%s %%s"] => "%s %s",
|
23
|
+
["%%%s"] => "%%s",
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
27
|
it "should replace %{key} with <%= key %>" do
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
38
|
-
|
28
|
+
expect_map meth, {
|
29
|
+
["%{key}"] => "<%= key %>",
|
30
|
+
["blah %{key}"] => "blah <%= key %>",
|
31
|
+
["%{key} blah"] => "<%= key %> blah",
|
32
|
+
["blah\n%{key}\nblah"] => "blah\n<%= key %>\nblah",
|
33
|
+
["%{x} %{y}"] => "<%= x %> <%= y %>",
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
39
37
|
it "should replace %{key?} with <%= key? %>" do
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
expect_map meth, {
|
39
|
+
["%{key?}"] => "<%= key? %>",
|
40
|
+
["blah %{key?}"] => "blah <%= key? %>",
|
41
|
+
["%{key?} blah"] => "<%= key? %> blah",
|
42
|
+
["blah\n%{key?}\nblah"] => "blah\n<%= key? %>\nblah",
|
43
|
+
["%{x?} %{y?}"] => "<%= x? %> <%= y? %>",
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should replace %%{key} with %{key} (escaping)" do
|
48
|
+
expect_map meth, {
|
49
|
+
["%%{key}"] => "%{key}",
|
50
|
+
["blah %%{key}"] => "blah %{key}",
|
51
|
+
["%%{key} blah"] => "%{key} blah",
|
52
|
+
["blah\n%%{key}\nblah"] => "blah\n%{key}\nblah",
|
53
|
+
["%%{x} %%{y}"] => "%{x} %{y}",
|
54
|
+
["%%%{key}"] => "%%{key}",
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
43
58
|
it "should replace %%{key?} with %{key?} (escaping)" do
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
59
|
+
expect_map meth, {
|
60
|
+
["%%{key?}"] => "%{key?}",
|
61
|
+
["blah %%{key?}"] => "blah %{key?}",
|
62
|
+
["%%{key?} blah"] => "%{key?} blah",
|
63
|
+
["blah\n%%{key?}\nblah"] => "blah\n%{key?}\nblah",
|
64
|
+
["%%{x?} %%{y?}"] => "%{x?} %{y?}",
|
65
|
+
["%%%{key?}"] => "%%{key?}",
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
51
69
|
it "should replace %<key>s with <%= key %>" do
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
62
|
-
|
70
|
+
expect_map meth, {
|
71
|
+
["%<key>s"] => "<%= key %>",
|
72
|
+
["blah %<key>s"] => "blah <%= key %>",
|
73
|
+
["%<key>s blah"] => "<%= key %> blah",
|
74
|
+
["blah\n%<key>s\nblah"] => "blah\n<%= key %>\nblah",
|
75
|
+
["%<x>s %<y>s"] => "<%= x %> <%= y %>",
|
76
|
+
}
|
77
|
+
end
|
78
|
+
|
63
79
|
it "should replace %<key?>s with <%= key? %>" do
|
64
|
-
|
65
|
-
|
66
|
-
|
80
|
+
expect_map meth, {
|
81
|
+
["%<key?>s"] => "<%= key? %>",
|
82
|
+
["blah %<key?>s"] => "blah <%= key? %>",
|
83
|
+
["%<key?>s blah"] => "<%= key? %> blah",
|
84
|
+
["blah\n%<key?>s\nblah"] => "blah\n<%= key? %>\nblah",
|
85
|
+
["%<x?>s %<y?>s"] => "<%= x? %> <%= y? %>",
|
86
|
+
}
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should replace %%<key>s with %<key>s (escaping)" do
|
90
|
+
expect_map meth, {
|
91
|
+
["%%<key>s"] => "%<key>s",
|
92
|
+
["blah %%<key>s"] => "blah %<key>s",
|
93
|
+
["%%<key>s blah"] => "%<key>s blah",
|
94
|
+
["blah\n%%<key>s\nblah"] => "blah\n%<key>s\nblah",
|
95
|
+
["%%<x>s %%<y>s"] => "%<x>s %<y>s",
|
96
|
+
["%%%<key>s"] => "%%<key>s",
|
97
|
+
}
|
98
|
+
end
|
99
|
+
|
67
100
|
it "should replace %%<key?>s with %<key?>s (escaping)" do
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
101
|
+
expect_map meth, {
|
102
|
+
["%%<key?>s"] => "%<key?>s",
|
103
|
+
["blah %%<key?>s"] => "blah %<key?>s",
|
104
|
+
["%%<key?>s blah"] => "%<key?>s blah",
|
105
|
+
["blah\n%%<key?>s\nblah"] => "blah\n%<key?>s\nblah",
|
106
|
+
["%%<x?>s %%<y?>s"] => "%<x?>s %<y?>s",
|
107
|
+
["%%%<key?>s"] => "%%<key?>s",
|
108
|
+
}
|
109
|
+
end
|
110
|
+
|
111
|
+
|
75
112
|
it "should not touch % that don't fit the shortcut sytax" do
|
76
|
-
|
113
|
+
expect_map meth, {
|
114
|
+
["50%"] => "50%",
|
115
|
+
["50%savings!"] => "50%savings!",
|
116
|
+
}
|
77
117
|
end
|
78
|
-
end
|
118
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Cmds::stream" do
|
4
|
+
let(:times) { 5 }
|
5
|
+
|
6
|
+
it "writes to $stdout and $stderr by default" do
|
7
|
+
out, err = temp_outs do
|
8
|
+
Cmds.new('./test/tick.rb <%= times %>').stream times: times
|
9
|
+
end
|
10
|
+
|
11
|
+
expect(out).to eq times.times.map{|_| "#{_}\n"}.join
|
12
|
+
expect(err).to eq ''
|
13
|
+
end
|
14
|
+
|
15
|
+
it "handles writes in blocks" do
|
16
|
+
out_count = 0
|
17
|
+
err_count = 0
|
18
|
+
Cmds.new('./test/tick.rb <%= times %>').stream(times: times) do |io|
|
19
|
+
io.on_out do |line|
|
20
|
+
out_count += 1
|
21
|
+
end
|
22
|
+
|
23
|
+
io.on_err do |line|
|
24
|
+
err_count += 1
|
25
|
+
end
|
26
|
+
end
|
27
|
+
expect(out_count).to eq times
|
28
|
+
expect(err_count).to eq 0
|
29
|
+
end
|
30
|
+
|
31
|
+
context "input" do
|
32
|
+
it "accepts string value input from a block" do
|
33
|
+
|
34
|
+
out, err = temp_outs do
|
35
|
+
Cmds.new("wc -l").stream do
|
36
|
+
<<-BLOCK
|
37
|
+
one
|
38
|
+
two
|
39
|
+
three
|
40
|
+
BLOCK
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
expect(out).to match /^\s+3\n$/
|
45
|
+
expect(err).to eq ''
|
46
|
+
end
|
47
|
+
|
48
|
+
it "accepts stream value input from a block" do
|
49
|
+
out, err = temp_outs do
|
50
|
+
Cmds.new("wc -l").stream do
|
51
|
+
File.open "./test/lines.txt"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
expect(out).to match /^\s+3\n$/
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end # Cmds::stream
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,72 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'json'
|
3
|
+
|
1
4
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
5
|
require 'cmds'
|
3
6
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
+
ECHO_CMD = "./test/echo_cmd.rb"
|
8
|
+
|
9
|
+
def echo_cmd_data result
|
10
|
+
expect( result.cmd ).to start_with ECHO_CMD
|
11
|
+
expect( result ).to be_instance_of Cmds::Result
|
12
|
+
expect( result.ok? ).to be true
|
13
|
+
data = JSON.load result.out
|
14
|
+
expect( data ).to be_instance_of Hash
|
15
|
+
data
|
16
|
+
end
|
17
|
+
|
18
|
+
def echo_cmd_key result, key
|
19
|
+
data = echo_cmd_data result
|
20
|
+
expect( data.key? key ).to be true
|
21
|
+
data[key]
|
22
|
+
end
|
23
|
+
|
24
|
+
def echo_cmd_argv result
|
25
|
+
echo_cmd_key result, 'ARGV'
|
26
|
+
end
|
27
|
+
|
28
|
+
def echo_cmd_stdin result
|
29
|
+
echo_cmd_key result, 'stdin'
|
7
30
|
end
|
8
31
|
|
9
|
-
|
10
|
-
|
32
|
+
# rspec uses StringIO for stdout and stderr, which spawn doesn't like.
|
33
|
+
# this function swaps in tempfiles for $stdout and $stderr and returns
|
34
|
+
# there outputs as strings.
|
35
|
+
def temp_outs
|
36
|
+
# save ref to $stdout and $stderr
|
37
|
+
prev_stdout, prev_stderr = $stdout, $stderr
|
38
|
+
|
39
|
+
# create templfiles for out and err
|
40
|
+
out_f, err_f = ['out', 'err'].map {|s|
|
41
|
+
Tempfile.new "rspec_std#{ s }"
|
42
|
+
}
|
43
|
+
|
44
|
+
# assign those to $stdout and $stderr
|
45
|
+
$stdout, $stderr = out_f, err_f
|
46
|
+
|
47
|
+
# run the provided block
|
48
|
+
yield
|
49
|
+
|
50
|
+
# get the out and err strings and clean up
|
51
|
+
out, err = [out_f, err_f].map {|f|
|
52
|
+
f.rewind
|
53
|
+
str = f.read
|
54
|
+
f.close
|
55
|
+
f.unlink
|
56
|
+
str
|
57
|
+
}
|
58
|
+
|
59
|
+
# swap back to the old $stdout and $stderr
|
60
|
+
$stdout, $stderr = prev_stdout, prev_stderr
|
61
|
+
|
62
|
+
# return the output strings
|
63
|
+
[out, err]
|
64
|
+
end # temp_out
|
65
|
+
|
66
|
+
def expect_map method, map
|
67
|
+
map.each do |input, output|
|
68
|
+
expect( method.call *input ).to eq output
|
69
|
+
end
|
11
70
|
end
|
12
71
|
|
13
72
|
shared_examples "ok" do
|
data/test/answers.txt
ADDED
data/test/bin/dspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rspec -r ./spec/debug_helper.rb "$@"
|
data/test/echo_cmd.rb
CHANGED
data/test/lines.txt
ADDED
data/test/questions.rb
ADDED
data/test/tick.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cmds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nrser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nrser
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pastel
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
description:
|
84
98
|
email:
|
85
99
|
- neil@ztkae.com
|
@@ -97,22 +111,39 @@ files:
|
|
97
111
|
- ansible/hosts
|
98
112
|
- cmds.gemspec
|
99
113
|
- lib/cmds.rb
|
114
|
+
- lib/cmds/capture.rb
|
115
|
+
- lib/cmds/debug.rb
|
116
|
+
- lib/cmds/erb_context.rb
|
117
|
+
- lib/cmds/io_handler.rb
|
118
|
+
- lib/cmds/pipe.rb
|
119
|
+
- lib/cmds/result.rb
|
120
|
+
- lib/cmds/shell_eruby.rb
|
121
|
+
- lib/cmds/stream.rb
|
122
|
+
- lib/cmds/sugar.rb
|
123
|
+
- lib/cmds/util.rb
|
100
124
|
- lib/cmds/version.rb
|
101
|
-
- scratch/blah.rb
|
102
125
|
- scratch/erb.rb
|
103
|
-
-
|
126
|
+
- scratch/popen3.rb
|
127
|
+
- scratch/proxy.rb
|
128
|
+
- spec/cmds/assert_spec.rb
|
129
|
+
- spec/cmds/capture_spec.rb
|
104
130
|
- spec/cmds/curry_spec.rb
|
105
131
|
- spec/cmds/erb_context_spec.rb
|
106
132
|
- spec/cmds/error_spec.rb
|
107
133
|
- spec/cmds/expand_option_hash_spec.rb
|
108
134
|
- spec/cmds/ok_spec.rb
|
109
|
-
- spec/cmds/raise_on_error_spec.rb
|
110
135
|
- spec/cmds/replace_shortcuts_spec.rb
|
111
|
-
- spec/cmds/
|
136
|
+
- spec/cmds/stream_spec.rb
|
112
137
|
- spec/cmds/sub_spec.rb
|
113
138
|
- spec/cmds_spec.rb
|
139
|
+
- spec/debug_helper.rb
|
114
140
|
- spec/spec_helper.rb
|
141
|
+
- test/answers.txt
|
142
|
+
- test/bin/dspec
|
115
143
|
- test/echo_cmd.rb
|
144
|
+
- test/lines.txt
|
145
|
+
- test/questions.rb
|
146
|
+
- test/tick.rb
|
116
147
|
homepage: ''
|
117
148
|
licenses:
|
118
149
|
- MIT
|
@@ -138,16 +169,22 @@ signing_key:
|
|
138
169
|
specification_version: 4
|
139
170
|
summary: helps read, write and remember commands.
|
140
171
|
test_files:
|
141
|
-
- spec/cmds/
|
172
|
+
- spec/cmds/assert_spec.rb
|
173
|
+
- spec/cmds/capture_spec.rb
|
142
174
|
- spec/cmds/curry_spec.rb
|
143
175
|
- spec/cmds/erb_context_spec.rb
|
144
176
|
- spec/cmds/error_spec.rb
|
145
177
|
- spec/cmds/expand_option_hash_spec.rb
|
146
178
|
- spec/cmds/ok_spec.rb
|
147
|
-
- spec/cmds/raise_on_error_spec.rb
|
148
179
|
- spec/cmds/replace_shortcuts_spec.rb
|
149
|
-
- spec/cmds/
|
180
|
+
- spec/cmds/stream_spec.rb
|
150
181
|
- spec/cmds/sub_spec.rb
|
151
182
|
- spec/cmds_spec.rb
|
183
|
+
- spec/debug_helper.rb
|
152
184
|
- spec/spec_helper.rb
|
185
|
+
- test/answers.txt
|
186
|
+
- test/bin/dspec
|
153
187
|
- test/echo_cmd.rb
|
188
|
+
- test/lines.txt
|
189
|
+
- test/questions.rb
|
190
|
+
- test/tick.rb
|
data/scratch/blah.rb
DELETED
data/spec/cmds/call_spec.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe "Cmds::call" do
|
6
|
-
it "is reusable" do
|
7
|
-
args_cmd = Cmds.new "./test/echo_cmd.rb <%= arg %>"
|
8
|
-
kwds_cmd = Cmds.new "./test/echo_cmd.rb <%= s %>"
|
9
|
-
|
10
|
-
["arg one", "arg two", "arg three"].each do |arg|
|
11
|
-
[args_cmd.call([arg]), kwds_cmd.call(s: arg)].each do |result|
|
12
|
-
expect_argv( result ).to eq [arg]
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end # is reusable
|
16
|
-
|
17
|
-
it "accepts input" do
|
18
|
-
input = <<-BLOCK
|
19
|
-
one
|
20
|
-
two
|
21
|
-
three
|
22
|
-
four!
|
23
|
-
BLOCK
|
24
|
-
|
25
|
-
expect( Cmds.new("wc -l", input: input).call.out ).to match /^\s+4$/
|
26
|
-
end
|
27
|
-
end # Cmds::call
|
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Cmds::raise_on_error" do
|
4
|
-
it "should raise an error when the command fails" do
|
5
|
-
expect{ Cmds.raise_on_error "exit 1" }.to raise_error Errno::EPERM
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should do the same for Cmds!" do
|
9
|
-
expect{ Cmds! "exit 1" }.to raise_error Errno::EPERM
|
10
|
-
end
|
11
|
-
end # Cmds::run
|
data/spec/cmds/run_spec.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe "Cmds::run" do
|
6
|
-
context "echo_cmd.rb 'hello world!'" do
|
7
|
-
|
8
|
-
shared_examples "executes correctly" do
|
9
|
-
it_behaves_like "ok"
|
10
|
-
|
11
|
-
it "should have 'hello world!' as ARGV[0]" do
|
12
|
-
expect( JSON.load(result.out)['ARGV'][0] ).to eq "hello world!"
|
13
|
-
end
|
14
|
-
end # executes correctly
|
15
|
-
|
16
|
-
context "positional args" do
|
17
|
-
let(:result) {
|
18
|
-
Cmds "./test/echo_cmd.rb <%= arg %>", ["hello world!"]
|
19
|
-
}
|
20
|
-
|
21
|
-
it_behaves_like "executes correctly"
|
22
|
-
end
|
23
|
-
|
24
|
-
context "keyword args" do
|
25
|
-
let(:result) {
|
26
|
-
Cmds "./test/echo_cmd.rb <%= s %>", s: "hello world!"
|
27
|
-
}
|
28
|
-
|
29
|
-
it_behaves_like "executes correctly"
|
30
|
-
end
|
31
|
-
|
32
|
-
end # context echo_cmd.rb 'hello world!'
|
33
|
-
|
34
|
-
# context "feeding kwargs to args cmd" do
|
35
|
-
# let(:result) {
|
36
|
-
# Cmds "./test/echo_cmd.rb %s", s: "sup y'all"
|
37
|
-
# }
|
38
|
-
|
39
|
-
# it "" do
|
40
|
-
# expect( result.cmd ).to eq nil
|
41
|
-
# end
|
42
|
-
# end
|
43
|
-
|
44
|
-
it "should error when second (subs) arg is not a hash or array" do
|
45
|
-
expect {
|
46
|
-
Cmds "./test/echo_cmd.rb <%= arg %>", "hello world!"
|
47
|
-
}.to raise_error TypeError
|
48
|
-
end
|
49
|
-
end # Cmds::run
|