hobo-inviqa 0.0.7 → 0.0.8
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 +15 -0
- data/.editorconfig +10 -0
- data/Gemfile.lock +19 -4
- data/Guardfile +2 -2
- data/Hobofile +5 -1
- data/README.md +8 -32
- data/bin/hobo +12 -18
- data/hobo.gemspec +3 -0
- data/lib/hobo.rb +8 -1
- data/lib/hobo/cli.rb +14 -3
- data/lib/hobo/error_handlers/debug.rb +5 -2
- data/lib/hobo/error_handlers/exit_code_map.rb +16 -0
- data/lib/hobo/error_handlers/friendly.rb +8 -8
- data/lib/hobo/errors.rb +11 -1
- data/lib/hobo/helper/http_download.rb +41 -0
- data/lib/hobo/helper/shell.rb +3 -2
- data/lib/hobo/helper/vm_command.rb +235 -14
- data/lib/hobo/lib/host_check.rb +20 -6
- data/lib/hobo/lib/host_check/deps.rb +22 -4
- data/lib/hobo/lib/host_check/git.rb +41 -17
- data/lib/hobo/lib/host_check/ruby.rb +30 -20
- data/lib/hobo/lib/host_check/vagrant.rb +37 -6
- data/lib/hobo/lib/s3sync.rb +22 -44
- data/lib/hobo/lib/seed/project.rb +10 -6
- data/lib/hobo/patches/slop.rb +21 -2
- data/lib/hobo/tasks/assets.rb +12 -15
- data/lib/hobo/tasks/config.rb +15 -0
- data/lib/hobo/tasks/deps.rb +37 -6
- data/lib/hobo/tasks/system.rb +15 -0
- data/lib/hobo/tasks/system/completions.rb +76 -0
- data/lib/hobo/tasks/tools.rb +10 -6
- data/lib/hobo/tasks/vm.rb +64 -11
- data/lib/hobo/ui.rb +27 -10
- data/lib/hobo/util.rb +36 -2
- data/lib/hobo/version.rb +2 -2
- data/spec/hobo/asset_applicator_spec.rb +2 -2
- data/spec/hobo/cli_spec.rb +40 -24
- data/spec/hobo/config/file_spec.rb +1 -3
- data/spec/hobo/error_handlers/debug_spec.rb +39 -5
- data/spec/hobo/error_handlers/friendly_spec.rb +38 -21
- data/spec/hobo/help_formatter_spec.rb +3 -3
- data/spec/hobo/helpers/file_locator_spec.rb +2 -2
- data/spec/hobo/helpers/shell_spec.rb +2 -2
- data/spec/hobo/helpers/vm_command_spec.rb +54 -21
- data/spec/hobo/lib/s3sync_spec.rb +6 -3
- data/spec/hobo/lib/seed/project_spec.rb +2 -3
- data/spec/hobo/lib/seed/replacer_spec.rb +1 -2
- data/spec/hobo/lib/seed/seed_spec.rb +2 -3
- data/spec/hobo/logging_spec.rb +2 -2
- data/spec/hobo/metadata_spec.rb +2 -2
- data/spec/hobo/null_spec.rb +2 -2
- data/spec/hobo/paths_spec.rb +1 -2
- data/spec/hobo/ui_spec.rb +104 -20
- data/spec/hobo/util_spec.rb +75 -0
- data/spec/spec_helper.rb +1 -0
- metadata +55 -46
- data/lib/hobo/tasks/host.rb +0 -19
data/lib/hobo/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Hobo
|
2
|
-
VERSION = '0.0.
|
3
|
-
end
|
2
|
+
VERSION = '0.0.8'
|
3
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Hobo::AssetApplicatorRegistry do
|
4
4
|
describe "asset_applicators accessor" do
|
@@ -28,4 +28,4 @@ describe Hobo::AssetApplicatorRegistry do
|
|
28
28
|
registry["abc"].call.should match "block"
|
29
29
|
end
|
30
30
|
end
|
31
|
-
end
|
31
|
+
end
|
data/spec/hobo/cli_spec.rb
CHANGED
@@ -1,16 +1,19 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'rake'
|
3
|
-
require 'hobo'
|
4
2
|
|
5
3
|
describe Hobo::Cli do
|
6
4
|
cli = nil
|
7
5
|
help = nil
|
8
6
|
hobofile = nil
|
9
7
|
|
8
|
+
def test_args args
|
9
|
+
args.concat(['--skip-host-checks'])
|
10
|
+
end
|
11
|
+
|
10
12
|
before do
|
11
13
|
Rake::Task.tasks.each do |task|
|
12
14
|
task.clear
|
13
15
|
end
|
16
|
+
|
14
17
|
Hobo.ui = double(Hobo::Ui).as_null_object
|
15
18
|
help = double(Hobo::HelpFormatter).as_null_object
|
16
19
|
cli = Hobo::Cli.new help: help
|
@@ -21,6 +24,8 @@ describe Hobo::Cli do
|
|
21
24
|
FakeFS.activate!
|
22
25
|
|
23
26
|
File.write('Hobofile', hobofile)
|
27
|
+
|
28
|
+
double(Hobo::Lib::HostCheck).as_null_object
|
24
29
|
end
|
25
30
|
|
26
31
|
after do
|
@@ -29,61 +34,61 @@ describe Hobo::Cli do
|
|
29
34
|
end
|
30
35
|
|
31
36
|
it "should load the hobofile if present" do
|
32
|
-
cli.start []
|
37
|
+
cli.start test_args([])
|
33
38
|
Rake::Task["test:non-interactive"].should_not be nil
|
34
39
|
end
|
35
40
|
|
36
41
|
it "should load the user hobofile if present" do
|
37
42
|
FileUtils.mkdir_p(File.dirname(Hobo.user_hobofile_path))
|
38
43
|
File.write(Hobo.user_hobofile_path, "namespace :user do\ntask :user do\nend\nend")
|
39
|
-
cli.start []
|
44
|
+
cli.start test_args([])
|
40
45
|
Rake::Task["user:user"].should_not be nil
|
41
46
|
end
|
42
47
|
|
43
48
|
it "should load project config if present" do
|
44
49
|
FileUtils.mkdir_p("tools/hobo/")
|
45
50
|
File.write("tools/hobo/config.yaml", YAML::dump({ :project => "project_config" }))
|
46
|
-
cli.start []
|
51
|
+
cli.start test_args([])
|
47
52
|
Hobo.project_config.project.should match "project_config"
|
48
53
|
end
|
49
54
|
|
50
55
|
it "should load user config if present" do
|
51
56
|
FileUtils.mkdir_p(Hobo.config_path)
|
52
57
|
File.write(Hobo.user_config_file, YAML::dump({ :user => "user_config" }))
|
53
|
-
cli.start []
|
58
|
+
cli.start test_args([])
|
54
59
|
Hobo.user_config.user.should match "user_config"
|
55
60
|
end
|
56
61
|
|
57
62
|
it "should set command map on help formatter" do
|
58
63
|
help.should_recieve('command_map=')
|
59
|
-
cli.start ["test", "subcommand"]
|
64
|
+
cli.start test_args(["test", "subcommand"])
|
60
65
|
end
|
61
66
|
|
62
67
|
it "should propagate description metadata" do
|
63
68
|
map = nil
|
64
69
|
allow(help).to receive("command_map=") { |i| map = i }
|
65
|
-
cli.start []
|
70
|
+
cli.start test_args([])
|
66
71
|
map["test:metadata"].description.should match "description"
|
67
72
|
end
|
68
73
|
|
69
74
|
it "should propagate long description metadata" do
|
70
75
|
map = nil
|
71
76
|
allow(help).to receive("command_map=") { |i| map = i }
|
72
|
-
cli.start []
|
77
|
+
cli.start test_args([])
|
73
78
|
map["test:metadata"].long_description.should match "long description"
|
74
79
|
end
|
75
80
|
|
76
81
|
it "should propagate arg list metadata" do
|
77
82
|
map = nil
|
78
83
|
allow(help).to receive("command_map=") { |i| map = i }
|
79
|
-
cli.start []
|
84
|
+
cli.start test_args([])
|
80
85
|
expect(map["test:metadata"].arg_list).to eq [ :arg ]
|
81
86
|
end
|
82
87
|
|
83
88
|
it "should propagate option metadata" do
|
84
89
|
map = nil
|
85
90
|
allow(help).to receive("command_map=") { |i| map = i }
|
86
|
-
cli.start []
|
91
|
+
cli.start test_args([])
|
87
92
|
map["test:metadata"].options.length.should be 2
|
88
93
|
expect(map["test:metadata"].options.map(&:short)).to eq [ 'o', 'h' ]
|
89
94
|
expect(map["test:metadata"].options.map(&:long)).to eq [ 'option', 'help' ]
|
@@ -93,61 +98,72 @@ describe Hobo::Cli do
|
|
93
98
|
it "should propagate hidden metadata" do
|
94
99
|
map = nil
|
95
100
|
allow(help).to receive("command_map=") { |i| map = i }
|
96
|
-
cli.start []
|
101
|
+
cli.start test_args([])
|
97
102
|
map["test:metadata"].hidden.should be true
|
98
103
|
end
|
99
104
|
|
100
105
|
it "should set non-interactive mode in ui if --non-interactive" do
|
101
106
|
Hobo.ui.should_receive('interactive=').with(false)
|
102
|
-
cli.start(['--non-interactive'])
|
107
|
+
cli.start(test_args(['--non-interactive']))
|
103
108
|
end
|
104
109
|
|
105
110
|
it "should show help if no args or opts passed" do
|
106
111
|
help.should_receive(:help)
|
107
|
-
cli.start([])
|
112
|
+
cli.start(test_args([]))
|
108
113
|
end
|
109
114
|
|
110
115
|
it "should show help for --help" do
|
111
116
|
help.should_receive(:help)
|
112
|
-
cli.start ["--help"]
|
117
|
+
cli.start test_args(["--help"])
|
113
118
|
end
|
114
119
|
|
115
120
|
it "should execute a top level command" do
|
116
121
|
Hobo.ui.should_recieve(:info).with("top level")
|
117
|
-
cli.start ["top-level"]
|
122
|
+
cli.start test_args(["top-level"])
|
118
123
|
end
|
119
124
|
|
120
125
|
it "should execute a subcommand" do
|
121
126
|
Hobo.ui.should_recieve(:info).with("Subcommand test")
|
122
|
-
cli.start ["test", "subcommand"]
|
127
|
+
cli.start test_args(["test", "subcommand"])
|
123
128
|
end
|
124
129
|
|
125
130
|
it "should show help for a namespace" do
|
126
131
|
help.should_receive(:help).with(all: nil, target: "test")
|
127
|
-
cli.start ["test"]
|
132
|
+
cli.start test_args(["test"])
|
128
133
|
end
|
129
134
|
|
130
135
|
it "should show command help for --help" do
|
131
136
|
help.should_receive(:help).with(all: nil, target: "test:subcommand")
|
132
|
-
cli.start ["test", "subcommand", "--help"]
|
137
|
+
cli.start test_args(["test", "subcommand", "--help"])
|
133
138
|
end
|
134
139
|
|
135
140
|
it "should propagate --all option to help" do
|
136
141
|
help.should_receive(:help).with(all: true, target: "test")
|
137
|
-
cli.start ["test", "--all"]
|
142
|
+
cli.start test_args(["test", "--all"])
|
138
143
|
end
|
139
144
|
|
140
145
|
it "should propagate command opts to command" do
|
141
146
|
Hobo.ui.should_receive(:info).with("1234")
|
142
|
-
cli.start ["test", "option-test", "--testing=1234"]
|
147
|
+
cli.start test_args(["test", "option-test", "--testing=1234"])
|
143
148
|
end
|
144
149
|
|
145
150
|
it "should propagate arguments to command" do
|
146
151
|
Hobo.ui.should_receive(:info).with("1234")
|
147
|
-
cli.start ["test", "argument-test", "1234"]
|
152
|
+
cli.start test_args(["test", "argument-test", "1234"])
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should propagate unparsed arguments in :_unparsed opt" do
|
156
|
+
Hobo.ui.should_receive(:info).with("ls --help")
|
157
|
+
cli.slop.unparsed = "ls --help"
|
158
|
+
cli.start test_args(["test", "unparsed", "--skip-host-checks"])
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should propagate unparsed arguments in :_unparsed opt" do
|
162
|
+
Hobo.ui.should_receive(:info).with("ls --help")
|
163
|
+
cli.start ["test", "unparsed", "--", "ls", "--help"]
|
148
164
|
end
|
149
165
|
|
150
166
|
it "should raise an exception if not enough arguments were passed" do
|
151
|
-
expect { cli.start(["test", "metadata"]) }.to raise_error Hobo::MissingArgumentsError
|
167
|
+
expect { cli.start(test_args(["test", "metadata"])) }.to raise_error Hobo::MissingArgumentsError
|
152
168
|
end
|
153
|
-
end
|
169
|
+
end
|
@@ -1,6 +1,4 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'hobo/paths'
|
3
|
-
require 'hobo/config/file'
|
4
2
|
|
5
3
|
describe Hobo::Config::File do
|
6
4
|
before do
|
@@ -55,4 +53,4 @@ describe Hobo::Config::File do
|
|
55
53
|
expect { Hobo::Config::File.load("test.yaml") }.to raise_error(RuntimeError, "Invalid hobo configuration (test.yaml)")
|
56
54
|
end
|
57
55
|
end
|
58
|
-
end
|
56
|
+
end
|
@@ -1,10 +1,44 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Hobo::ErrorHandlers::Debug do
|
4
|
+
before do
|
5
|
+
Hobo.ui = double(Hobo::Ui.new).as_null_object
|
6
|
+
end
|
7
|
+
|
8
|
+
def faked_exception(error_template)
|
9
|
+
error = nil
|
10
|
+
begin
|
11
|
+
raise error_template
|
12
|
+
rescue Exception => error
|
13
|
+
end
|
14
|
+
|
15
|
+
return error
|
16
|
+
end
|
17
|
+
|
4
18
|
describe "handle" do
|
5
|
-
it "should
|
6
|
-
|
7
|
-
|
19
|
+
it "should dump the error" do
|
20
|
+
error = nil
|
21
|
+
begin
|
22
|
+
raise Exception.new('error_message')
|
23
|
+
rescue Exception => error
|
24
|
+
end
|
25
|
+
|
26
|
+
Hobo.ui.should_receive(:error).with(/\(Exception\).*error_message.*debug_spec.rb.*/m)
|
27
|
+
Hobo::ErrorHandlers::Debug.new.handle(error)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should return exit code according to exit_code_map" do
|
31
|
+
File.write("temp_log", "command output")
|
32
|
+
output = Struct.new(:path).new
|
33
|
+
output.path = "temp_log"
|
34
|
+
|
35
|
+
Hobo::ErrorHandlers::Debug.new.handle(faked_exception Interrupt.new).should eq 1
|
36
|
+
Hobo::ErrorHandlers::Debug.new.handle(faked_exception Hobo::ExternalCommandError.new("command", 128, output)).should eq 3
|
37
|
+
Hobo::ErrorHandlers::Debug.new.handle(faked_exception Hobo::InvalidCommandOrOpt.new("command")).should eq 4
|
38
|
+
Hobo::ErrorHandlers::Debug.new.handle(faked_exception Hobo::MissingArgumentsError.new("command", ["arg1"])).should eq 5
|
39
|
+
Hobo::ErrorHandlers::Debug.new.handle(faked_exception Hobo::UserError.new("user error")).should eq 6
|
40
|
+
Hobo::ErrorHandlers::Debug.new.handle(faked_exception Hobo::ProjectOnlyError.new).should eq 7
|
41
|
+
Hobo::ErrorHandlers::Debug.new.handle(faked_exception Exception.new "general").should eq 128
|
8
42
|
end
|
9
43
|
end
|
10
|
-
end
|
44
|
+
end
|
@@ -1,5 +1,4 @@
|
|
1
|
-
require '
|
2
|
-
require 'hobo/ui'
|
1
|
+
require 'spec_helper'
|
3
2
|
|
4
3
|
describe Hobo::ErrorHandlers::Friendly do
|
5
4
|
before do
|
@@ -13,9 +12,19 @@ describe Hobo::ErrorHandlers::Friendly do
|
|
13
12
|
FakeFS.deactivate!
|
14
13
|
end
|
15
14
|
|
15
|
+
def faked_exception(error_template)
|
16
|
+
error = nil
|
17
|
+
begin
|
18
|
+
raise error_template
|
19
|
+
rescue Exception => error
|
20
|
+
end
|
21
|
+
|
22
|
+
return error
|
23
|
+
end
|
24
|
+
|
16
25
|
describe "handle" do
|
17
26
|
it "should display specialized error for Interrupt" do
|
18
|
-
error = Interrupt.new
|
27
|
+
error = faked_exception(Interrupt.new)
|
19
28
|
Hobo.ui.should_receive(:warning).with(/Caught Interrupt/)
|
20
29
|
Hobo::ErrorHandlers::Friendly.new.handle(error)
|
21
30
|
end
|
@@ -24,7 +33,9 @@ describe Hobo::ErrorHandlers::Friendly do
|
|
24
33
|
File.write("temp_log", "command output")
|
25
34
|
output = Struct.new(:path).new
|
26
35
|
output.path = "temp_log"
|
27
|
-
|
36
|
+
|
37
|
+
error = faked_exception Hobo::ExternalCommandError.new("command", 128, output)
|
38
|
+
|
28
39
|
Hobo.ui.should_receive(:error).with(/The following external command appears to have failed \(exit status 128\)/)
|
29
40
|
Hobo::ErrorHandlers::Friendly.new.handle(error)
|
30
41
|
end
|
@@ -33,49 +44,55 @@ describe Hobo::ErrorHandlers::Friendly do
|
|
33
44
|
File.write("temp_log", "command output")
|
34
45
|
output = Struct.new(:path).new
|
35
46
|
output.path = "temp_log"
|
36
|
-
|
47
|
+
|
48
|
+
error = faked_exception Hobo::ExternalCommandError.new("command", 128, output)
|
49
|
+
|
37
50
|
Hobo::ErrorHandlers::Friendly.new.handle(error)
|
38
51
|
File.read(File.join(Dir.tmpdir, 'hobo_error.log')).should match "command output"
|
39
52
|
end
|
40
53
|
|
41
54
|
it "should display specialized error for invalid command or opt error" do
|
42
|
-
error = Hobo::InvalidCommandOrOpt.new("command")
|
55
|
+
error = faked_exception Hobo::InvalidCommandOrOpt.new("command")
|
43
56
|
Hobo.ui.should_receive(:error).with(/Invalid command or option specified: 'command'/)
|
44
57
|
Hobo::ErrorHandlers::Friendly.new.handle(error)
|
45
58
|
end
|
46
59
|
|
47
60
|
it "should display specialized error for missing argument error" do
|
48
|
-
error = Hobo::MissingArgumentsError.new("command", ["arg1"])
|
61
|
+
error = faked_exception Hobo::MissingArgumentsError.new("command", ["arg1"])
|
49
62
|
Hobo.ui.should_receive(:error).with(/Not enough arguments for command/)
|
50
63
|
Hobo::ErrorHandlers::Friendly.new.handle(error)
|
51
64
|
end
|
52
65
|
|
53
66
|
it "should display specialized error for user error" do
|
54
|
-
error = Hobo::UserError.new("user error")
|
67
|
+
error = faked_exception Hobo::UserError.new("user error")
|
55
68
|
Hobo.ui.should_receive(:error).with(/user error/)
|
56
69
|
Hobo::ErrorHandlers::Friendly.new.handle(error)
|
57
70
|
end
|
58
71
|
|
59
72
|
it "should display generic error for other exception" do
|
60
|
-
error =
|
61
|
-
begin
|
62
|
-
raise Exception.new("general error")
|
63
|
-
rescue Exception => error
|
64
|
-
end
|
65
|
-
|
73
|
+
error = faked_exception Exception.new("general error")
|
66
74
|
Hobo.ui.should_receive(:error).with(/An unexpected error has occured/)
|
67
75
|
Hobo::ErrorHandlers::Friendly.new.handle(error)
|
68
76
|
end
|
69
77
|
|
70
78
|
it "should write error backtrace to /tmp/hobo_error.log for other exception" do
|
71
|
-
error =
|
72
|
-
begin
|
73
|
-
raise Exception.new("general error")
|
74
|
-
rescue Exception => error
|
75
|
-
end
|
76
|
-
|
79
|
+
error = faked_exception Exception.new("general error")
|
77
80
|
Hobo::ErrorHandlers::Friendly.new.handle(error)
|
78
81
|
File.read(File.join(Dir.tmpdir, 'hobo_error.log')).should match /\(Exception\) general error/
|
79
82
|
end
|
83
|
+
|
84
|
+
it "should return exit code according to exit_code_map" do
|
85
|
+
File.write("temp_log", "command output")
|
86
|
+
output = Struct.new(:path).new
|
87
|
+
output.path = "temp_log"
|
88
|
+
|
89
|
+
Hobo::ErrorHandlers::Friendly.new.handle(faked_exception Interrupt.new).should eq 1
|
90
|
+
Hobo::ErrorHandlers::Friendly.new.handle(faked_exception Hobo::ExternalCommandError.new("command", 128, output)).should eq 3
|
91
|
+
Hobo::ErrorHandlers::Friendly.new.handle(faked_exception Hobo::InvalidCommandOrOpt.new("command")).should eq 4
|
92
|
+
Hobo::ErrorHandlers::Friendly.new.handle(faked_exception Hobo::MissingArgumentsError.new("command", ["arg1"])).should eq 5
|
93
|
+
Hobo::ErrorHandlers::Friendly.new.handle(faked_exception Hobo::UserError.new("user error")).should eq 6
|
94
|
+
Hobo::ErrorHandlers::Friendly.new.handle(faked_exception Hobo::ProjectOnlyError.new).should eq 7
|
95
|
+
Hobo::ErrorHandlers::Friendly.new.handle(faked_exception Exception.new "general").should eq 128
|
96
|
+
end
|
80
97
|
end
|
81
|
-
end
|
98
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Hobo::HelpFormatter do
|
4
4
|
help = nil
|
@@ -38,8 +38,8 @@ describe Hobo::HelpFormatter do
|
|
38
38
|
|
39
39
|
help = Hobo::HelpFormatter.new slop
|
40
40
|
help.command_map = map
|
41
|
-
HighLine.use_color = false
|
42
41
|
Hobo.ui = Hobo::Ui.new
|
42
|
+
Hobo.ui.use_color false
|
43
43
|
end
|
44
44
|
|
45
45
|
describe "help" do
|
@@ -160,4 +160,4 @@ describe Hobo::HelpFormatter do
|
|
160
160
|
end
|
161
161
|
end
|
162
162
|
end
|
163
|
-
end
|
163
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Hobo::Helper do
|
4
4
|
describe "locate" do
|
@@ -8,4 +8,4 @@ describe Hobo::Helper do
|
|
8
8
|
it "should chdir to file path before yielding"
|
9
9
|
it "should yield once for each matching file"
|
10
10
|
end
|
11
|
-
end
|
11
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Hobo::Helper do
|
4
4
|
describe "bundle_shell" do
|
@@ -18,4 +18,4 @@ describe Hobo::Helper do
|
|
18
18
|
it "should colour stderr output with red"
|
19
19
|
it "should set ENV args for command if specified with :env"
|
20
20
|
end
|
21
|
-
end
|
21
|
+
end
|
@@ -1,9 +1,4 @@
|
|
1
|
-
require '
|
2
|
-
require 'hobo/logging'
|
3
|
-
require 'hobo/ui'
|
4
|
-
require 'hobo/patches/deepstruct'
|
5
|
-
require 'hobo/helper/vm_command'
|
6
|
-
|
1
|
+
require 'spec_helper'
|
7
2
|
|
8
3
|
describe Hobo::Helper do
|
9
4
|
before do
|
@@ -12,29 +7,59 @@ describe Hobo::Helper do
|
|
12
7
|
:mysql => {
|
13
8
|
:username => "test_user",
|
14
9
|
:password => "test_pass"
|
10
|
+
},
|
11
|
+
:vm => {
|
12
|
+
:project_mount_path => '/'
|
15
13
|
}
|
16
14
|
})
|
15
|
+
|
16
|
+
Hobo.ui = Hobo::Ui.new
|
17
|
+
|
18
|
+
vmi_double = double(Hobo::Helper::VmInspector).as_null_object
|
19
|
+
vmi_double.should_receive(:ssh_config).and_return({
|
20
|
+
:ssh_host => 'fakehost',
|
21
|
+
:ssh_user => 'fakeuser',
|
22
|
+
:ssh_port => '999',
|
23
|
+
:ssh_identity => 'fakeidentity'
|
24
|
+
})
|
25
|
+
|
26
|
+
Hobo::Helper::VmCommand.class_eval do
|
27
|
+
class_variable_set '@@vm_inspector', vmi_double
|
28
|
+
end
|
17
29
|
end
|
18
30
|
|
19
31
|
describe "vm_command" do
|
20
32
|
it "should create a new vm command wrapper with specified command" do
|
21
|
-
vm_command("my_command").to_s.should match
|
33
|
+
vm_command("my_command", :pwd => '/').to_s.should match /-c my_command/
|
22
34
|
end
|
23
35
|
|
36
|
+
<<<<<<< HEAD
|
24
37
|
it "should default to using a psuedo tty" do
|
25
|
-
vm_command("my_command").to_s.should match /\s-t\s/
|
38
|
+
vm_command("my_command", :pwd => '/').to_s.should match /\s-t\s/
|
26
39
|
end
|
27
40
|
|
28
41
|
it "should default to vagrant user" do
|
29
|
-
vm_command("my_command").to_s.should match /vagrant@/
|
42
|
+
vm_command("my_command", :pwd => '/').to_s.should match /vagrant@/
|
30
43
|
end
|
31
44
|
|
32
45
|
it "should default to project host name" do
|
33
|
-
vm_command("my_command").to_s.should match /@test_hostname/
|
46
|
+
vm_command("my_command", :pwd => '/').to_s.should match /@test_hostname/
|
47
|
+
=======
|
48
|
+
it "should default to not using a psuedo tty" do
|
49
|
+
vm_command("my_command", :pwd => '/').to_s.should_not match /\s-t\s/
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should default to ssh_config user" do
|
53
|
+
vm_command("my_command", :pwd => '/').to_s.should match /fakeuser@/
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should default to ssh_config host name" do
|
57
|
+
vm_command("my_command", :pwd => '/').to_s.should match /@fakehost/
|
58
|
+
>>>>>>> 0.0.6-bugfixes
|
34
59
|
end
|
35
60
|
|
36
61
|
it "should not wrap piped commands with echo by default" do
|
37
|
-
c = vm_command("my_command")
|
62
|
+
c = vm_command("my_command", :pwd => '/')
|
38
63
|
c << "test"
|
39
64
|
c.to_s.should_not match /^echo test/
|
40
65
|
end
|
@@ -42,24 +67,32 @@ describe Hobo::Helper do
|
|
42
67
|
|
43
68
|
describe "vm_mysql" do
|
44
69
|
it "should use mysql command by default" do
|
45
|
-
vm_mysql.to_s.should match
|
70
|
+
vm_mysql(:pwd => '/').to_s.should match /-c mysql/
|
46
71
|
end
|
47
72
|
|
48
73
|
it "should use project config mysql username & password if set" do
|
49
|
-
vm_mysql.to_s.should match
|
74
|
+
vm_mysql(:pwd => '/').to_s.should match /-c mysql.*-utest_user.*-ptest_pass/
|
50
75
|
end
|
51
76
|
|
52
|
-
it "should
|
77
|
+
it "should not pass user / pass if project config mysql credentials not set" do
|
53
78
|
Hobo.project_config = DeepStruct.wrap({})
|
54
|
-
|
79
|
+
<<<<<<< HEAD
|
80
|
+
vm_mysql(:pwd => '/').to_s.should match /-c mysql'$/
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should allow specifying the database in options" do
|
84
|
+
vm_mysql(:pwd => '/', :db => "test_db").to_s.should match /-c mysql.*test_db'$/
|
85
|
+
=======
|
86
|
+
vm_mysql(:pwd => '/').to_s.should match /-c mysql'/
|
55
87
|
end
|
56
88
|
|
57
89
|
it "should allow specifying the database in options" do
|
58
|
-
vm_mysql(:db => "test_db").to_s.should match
|
90
|
+
vm_mysql(:pwd => '/', :db => "test_db").to_s.should match /-c mysql.*test_db'/
|
91
|
+
>>>>>>> 0.0.6-bugfixes
|
59
92
|
end
|
60
93
|
|
61
94
|
it "should enable auto echo of piped commands" do
|
62
|
-
c = vm_mysql
|
95
|
+
c = vm_mysql(:pwd => '/')
|
63
96
|
c << "SELECT 1"
|
64
97
|
c.to_s.should match /^echo SELECT\\ 1/
|
65
98
|
end
|
@@ -69,12 +102,12 @@ describe Hobo::Helper do
|
|
69
102
|
it "should execute the command using the shell helper" do
|
70
103
|
Hobo::Helper.class_eval do
|
71
104
|
alias :old_shell :shell
|
72
|
-
def shell command
|
73
|
-
command.should match /ssh.*
|
105
|
+
def shell command, opts
|
106
|
+
command.to_s.should match /ssh.* -c my_command/
|
74
107
|
end
|
75
108
|
end
|
76
109
|
|
77
|
-
vm_shell "my_command"
|
110
|
+
vm_shell "my_command", :pwd => '/'
|
78
111
|
|
79
112
|
Hobo::Helper.class_eval do
|
80
113
|
remove_method :shell
|
@@ -82,4 +115,4 @@ describe Hobo::Helper do
|
|
82
115
|
end
|
83
116
|
end
|
84
117
|
end
|
85
|
-
end
|
118
|
+
end
|