hobo-inviqa 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -0
- data/Gemfile.lock +93 -0
- data/Guardfile +14 -0
- data/Hobofile +34 -0
- data/Rakefile +2 -0
- data/bin/hobo +23 -0
- data/features/deps.feature +43 -0
- data/features/hobo/basic.feature +30 -0
- data/features/hobo/help.feature +12 -0
- data/features/hobo/subcommands.feature +16 -0
- data/features/seed/plant.feature +64 -0
- data/features/step_definitions/seed.rb +11 -0
- data/features/support/env.rb +6 -0
- data/features/vm.feature +0 -0
- data/hobo.gemspec +37 -0
- data/lib/hobo.rb +44 -0
- data/lib/hobo/cli.rb +185 -0
- data/lib/hobo/config/file.rb +21 -0
- data/lib/hobo/error_handlers/debug.rb +9 -0
- data/lib/hobo/error_handlers/friendly.rb +52 -0
- data/lib/hobo/errors.rb +60 -0
- data/lib/hobo/help_formatter.rb +111 -0
- data/lib/hobo/helper/file_locator.rb +39 -0
- data/lib/hobo/helper/shell.rb +59 -0
- data/lib/hobo/lib/seed/project.rb +41 -0
- data/lib/hobo/lib/seed/replacer.rb +57 -0
- data/lib/hobo/lib/seed/seed.rb +43 -0
- data/lib/hobo/metadata.rb +28 -0
- data/lib/hobo/patches/rake.rb +56 -0
- data/lib/hobo/patches/slop.rb +22 -0
- data/lib/hobo/paths.rb +49 -0
- data/lib/hobo/tasks/debug.rb +22 -0
- data/lib/hobo/tasks/deps.rb +45 -0
- data/lib/hobo/tasks/seed.rb +43 -0
- data/lib/hobo/tasks/tools.rb +13 -0
- data/lib/hobo/tasks/vm.rb +49 -0
- data/lib/hobo/ui.rb +96 -0
- data/lib/hobo/util.rb +7 -0
- data/lib/hobo/version.rb +3 -0
- data/spec/hobo/cli_spec.rb +135 -0
- data/spec/hobo/config/file_spec.rb +48 -0
- data/spec/hobo/error_handlers/debug_spec.rb +10 -0
- data/spec/hobo/error_handlers/friendly_spec.rb +81 -0
- data/spec/hobo/error_spec.rb +0 -0
- data/spec/hobo/help_formatter_spec.rb +131 -0
- data/spec/hobo/helpers/file_locator_spec.rb +7 -0
- data/spec/hobo/helpers/shell_spec.rb +7 -0
- data/spec/hobo/lib/seed/project_spec.rb +83 -0
- data/spec/hobo/lib/seed/replacer_spec.rb +47 -0
- data/spec/hobo/lib/seed/seed_spec.rb +95 -0
- data/spec/hobo/metadata_spec.rb +46 -0
- data/spec/hobo/patches/rake_spec.rb +0 -0
- data/spec/hobo/paths_spec.rb +77 -0
- data/spec/hobo/ui_spec.rb +64 -0
- data/spec/spec_helper.rb +6 -0
- metadata +355 -0
File without changes
|
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'hobo/help_formatter'
|
2
|
+
|
3
|
+
describe Hobo::HelpFormatter do
|
4
|
+
help = nil
|
5
|
+
slop = nil
|
6
|
+
|
7
|
+
before do
|
8
|
+
map = {}
|
9
|
+
slop = Slop.new
|
10
|
+
slop.instance_eval do
|
11
|
+
opt "-g", "--global", "Global option"
|
12
|
+
|
13
|
+
map["test"] = command "test" do
|
14
|
+
description "Testing1"
|
15
|
+
opt "-t", "--test", "Test description"
|
16
|
+
opt "-x", "--longer-option", "Longer option"
|
17
|
+
|
18
|
+
map["test:test"] = command "test" do
|
19
|
+
description "Testing2"
|
20
|
+
arg_list [:arg]
|
21
|
+
opt "-a=", "--a-test=", "Arg with value"
|
22
|
+
opt "-b=", "--b-test=", "Arg with optional value", argument: :optional
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
help = Hobo::HelpFormatter.new slop
|
28
|
+
help.command_map = map
|
29
|
+
HighLine.use_color = false
|
30
|
+
Hobo.ui = Hobo::Ui.new
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "help" do
|
34
|
+
|
35
|
+
it "should return global help if no target passed" do
|
36
|
+
help.help.should match(/test\s+Testing1/)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return command help if target passed" do
|
40
|
+
help.help(target: "test").should match /^Testing1$/
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "usage format" do
|
44
|
+
it "should include generic usage for global help" do
|
45
|
+
help.help.should match /Usage:\n\s+rspec \[command\] \[options\]/
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should include command usage for command help" do
|
49
|
+
help.help(target: "test:test").should match /Usage:\n\s+rspec test test <arg> \[options\]/
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "option format" do
|
54
|
+
it "should include short, long and description" do
|
55
|
+
help.help(target: "test").should match /\s+-t, --test\s+Test description/
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should append token value to options that take an argument" do
|
59
|
+
help.help(target: "test:test").should match /--a-test=A-TEST/
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should surround token value qith square brackets for option with optional argument" do
|
63
|
+
help.help(target: "test:test").should match /--b-test=\[B-TEST\]/
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should have description aligned to longest option or command" do
|
67
|
+
len = "--longer-option".length - "--test".length + 4 # ALIGN_PAD
|
68
|
+
help.help(target: "test").should match /\s+-t, --test\s{#{len}}Test description/
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "command format" do
|
73
|
+
it "should have name and description" do
|
74
|
+
help.help.should match /\s+test\s+Testing1/
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "global" do
|
79
|
+
it "should include usage" do
|
80
|
+
help.help.should match /Usage:/
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should include global options" do
|
84
|
+
help.help.should match /Global options:\n\s+-g/
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should include top level command list" do
|
88
|
+
help.help.should match /Commands:\n\s+test/
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "namespace" do
|
93
|
+
it "should include usage" do
|
94
|
+
help.help(target: "test").should match /Usage:/
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should include global options" do
|
98
|
+
help.help(target: "test").should match /Global options:/
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should include namespace level command list" do
|
102
|
+
help.help(target: "test").should match /Commands:/
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe "command" do
|
107
|
+
it "should include long command description if set"
|
108
|
+
it "should fall back to short command description if long description not set"
|
109
|
+
it "should not display extra blank lines if no description set"
|
110
|
+
it "should include usage"
|
111
|
+
it "should include global options"
|
112
|
+
it "should include command options"
|
113
|
+
it "shoult not include -h command option"
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "options" do
|
117
|
+
it "should include short option"
|
118
|
+
it "should include long option"
|
119
|
+
it "should include option description"
|
120
|
+
end
|
121
|
+
|
122
|
+
describe "alignment" do
|
123
|
+
it "should align descriptions according to longest option or command"
|
124
|
+
end
|
125
|
+
|
126
|
+
describe "filtering" do
|
127
|
+
it "should not show commands that do not have descriptions"
|
128
|
+
it "should show commands that do not have descriptions if :all is set"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'hobo/paths'
|
3
|
+
require 'hobo/config/file'
|
4
|
+
require 'hobo/lib/seed/project'
|
5
|
+
require 'hobo/lib/seed/seed'
|
6
|
+
require 'hobo/lib/seed/replacer'
|
7
|
+
require 'hobo/helper/file_locator'
|
8
|
+
require 'hobo/helper/shell'
|
9
|
+
require 'hobo/ui'
|
10
|
+
|
11
|
+
describe Hobo::Lib::Seed::Project do
|
12
|
+
pwd = nil
|
13
|
+
tmp_dir = nil
|
14
|
+
default_config = {}
|
15
|
+
|
16
|
+
before do
|
17
|
+
tmp_dir = Dir.mktmpdir
|
18
|
+
pwd = Dir.pwd
|
19
|
+
Dir.chdir tmp_dir
|
20
|
+
FileUtils.mkdir_p "project_path"
|
21
|
+
FileUtils.touch "project_path/test"
|
22
|
+
Hobo.ui = Hobo::Ui.new
|
23
|
+
default_config = {
|
24
|
+
:config_class => double(Hobo::Config::File).as_null_object,
|
25
|
+
:replacer => double(Hobo::Lib::Seed::Replacer.new).as_null_object
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
after do
|
30
|
+
Dir.chdir pwd
|
31
|
+
FileUtils.remove_entry tmp_dir
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "setup" do
|
35
|
+
it "should update seed before use" do
|
36
|
+
seed = double(Hobo::Lib::Seed::Seed).as_null_object
|
37
|
+
seed.should_receive :update
|
38
|
+
|
39
|
+
project = Hobo::Lib::Seed::Project.new(default_config)
|
40
|
+
|
41
|
+
project.setup(seed, { :project_path => "project_path", :seed => {}, :git_url => '.' })
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should export seed to project directory" do
|
45
|
+
seed = double(Hobo::Lib::Seed::Seed).as_null_object
|
46
|
+
seed.should_recieve(:export).with("project_path")
|
47
|
+
|
48
|
+
project = Hobo::Lib::Seed::Project.new(default_config)
|
49
|
+
|
50
|
+
project.setup(seed, { :project_path => "project_path", :seed => {}, :git_url => '.' })
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should save config in project" do
|
54
|
+
seed = double(Hobo::Lib::Seed::Seed).as_null_object
|
55
|
+
seed.should_recieve :export, "project_path"
|
56
|
+
|
57
|
+
config_class = double(Hobo::Config::File).as_null_object
|
58
|
+
config_class.should_recieve(:save).with("project_config_file")
|
59
|
+
|
60
|
+
project = Hobo::Lib::Seed::Project.new(default_config.merge({ :project_config_file => "project_config_file" }))
|
61
|
+
|
62
|
+
project.setup(seed, { :project_path => "project_path", :seed => {}, :git_url => '.' })
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should initialize the project git repository" do
|
66
|
+
seed = double(Hobo::Lib::Seed::Seed).as_null_object
|
67
|
+
|
68
|
+
project = Hobo::Lib::Seed::Project.new(default_config)
|
69
|
+
|
70
|
+
project.setup(seed, { :project_path => "project_path", :seed => {}, :git_url => '.' })
|
71
|
+
expect { Hobo::Helper.shell("cd project_path && git status")}.not_to raise_error
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should add the git url as the origin remote" do
|
75
|
+
seed = double(Hobo::Lib::Seed::Seed).as_null_object
|
76
|
+
|
77
|
+
project = Hobo::Lib::Seed::Project.new(default_config)
|
78
|
+
|
79
|
+
project.setup(seed, { :project_path => "project_path", :seed => {}, :git_url => 'remote_url' })
|
80
|
+
Hobo::Helper.shell("cd project_path && git remote show -n origin", :capture => true).should match /remote_url/
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "hobo/lib/seed/replacer"
|
3
|
+
|
4
|
+
describe Hobo::Lib::Seed::Replacer do
|
5
|
+
before do
|
6
|
+
FakeFS.activate!
|
7
|
+
Dir.mkdir("bin")
|
8
|
+
Dir.mkdir("dir")
|
9
|
+
{
|
10
|
+
"./test1" => "some {{test}} is here",
|
11
|
+
"./test2" => "no test is here",
|
12
|
+
"./dir/test" => "subdir {{test}}",
|
13
|
+
"./dir/nested" => "nested {{nested.test}}",
|
14
|
+
"./dir/no-utf" => "\xc2 {{test}}", # invalid utf should be skipped
|
15
|
+
"./bin/test" => "{{test}}" # bin/ should be ignored
|
16
|
+
}.each do |name, content|
|
17
|
+
File.write(name, content)
|
18
|
+
end
|
19
|
+
|
20
|
+
@replacer = Hobo::Lib::Seed::Replacer.new
|
21
|
+
end
|
22
|
+
|
23
|
+
after do
|
24
|
+
FakeFS::FileSystem.clear
|
25
|
+
FakeFS.deactivate!
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should respect exclude directories" do
|
29
|
+
files = @replacer.replace(".", { :test => 'badger' })
|
30
|
+
File.read("./bin/test").should eq "{{test}}"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should replace placeholders in files" do
|
34
|
+
files = @replacer.replace(".", { :test => 'badger' })
|
35
|
+
expect(files.sort).to eq(["./dir/test", "./test1"])
|
36
|
+
|
37
|
+
File.read("./test1").should eq "some badger is here"
|
38
|
+
File.read("./dir/test").should eq "subdir badger"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should handle nested hashes" do
|
42
|
+
files = @replacer.replace(".", { :nested => { :test => 'nested' } })
|
43
|
+
expect(files.sort).to eq(["./dir/nested"])
|
44
|
+
|
45
|
+
File.read("./dir/nested").should eq "nested nested"
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'hobo/lib/seed/seed'
|
3
|
+
require 'hobo/helper/file_locator'
|
4
|
+
require 'hobo/helper/shell'
|
5
|
+
require 'hobo/ui'
|
6
|
+
|
7
|
+
describe Hobo::Lib::Seed::Seed do
|
8
|
+
pwd = nil
|
9
|
+
tmp_dir = nil
|
10
|
+
|
11
|
+
before do
|
12
|
+
tmp_dir = Dir.mktmpdir
|
13
|
+
pwd = Dir.pwd
|
14
|
+
Dir.chdir tmp_dir
|
15
|
+
Hobo.ui = Hobo::Ui.new
|
16
|
+
end
|
17
|
+
|
18
|
+
after do
|
19
|
+
Dir.chdir pwd
|
20
|
+
FileUtils.remove_entry tmp_dir
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_test_repo path, content
|
24
|
+
FileUtils.mkdir_p path
|
25
|
+
Dir.chdir path do
|
26
|
+
`git init`
|
27
|
+
`echo "#{content}" > test`
|
28
|
+
`git add *`
|
29
|
+
`git commit -m "test"`
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "update", :integration do
|
34
|
+
it "should fetch the seed if it does not exist locally" do
|
35
|
+
# Create test repo as seed remote
|
36
|
+
remote_seed_path = File.join(tmp_dir, "seed_1")
|
37
|
+
create_test_repo remote_seed_path, "does not exist locally"
|
38
|
+
|
39
|
+
seed = Hobo::Lib::Seed::Seed.new 'seeds/seed_1', remote_seed_path
|
40
|
+
seed.update
|
41
|
+
|
42
|
+
# Repo is bare so we need to use git show to get contents
|
43
|
+
`cd seeds/seed_1 && git show HEAD:test`.strip.should eq "does not exist locally"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should update the seed if it exists locally" do
|
47
|
+
# Create test repo as seed remote
|
48
|
+
remote_seed_path = File.join(tmp_dir, "seed_2")
|
49
|
+
create_test_repo remote_seed_path, "does exist locally"
|
50
|
+
|
51
|
+
# Clone seed to seed cache directory
|
52
|
+
FileUtils.mkdir_p "seeds"
|
53
|
+
`cd seeds && git clone #{remote_seed_path} seed_2 --mirror 2> /dev/null`
|
54
|
+
|
55
|
+
# Update seed origin repo to give test something to update
|
56
|
+
`cd seed_2 && echo "updated" > test && git add test && git commit -m "test"`
|
57
|
+
|
58
|
+
seed = Hobo::Lib::Seed::Seed.new 'seeds/seed_2', remote_seed_path
|
59
|
+
seed.update
|
60
|
+
|
61
|
+
# Repo is bare so we need to use git show to get contents
|
62
|
+
`cd seeds/seed_2 && git show HEAD:test`.strip.should eq "updated"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "export", :integration do
|
67
|
+
it "should export the seed contents to specified directory" do
|
68
|
+
# Create test repo as seed remote
|
69
|
+
remote_seed_path = File.join(tmp_dir, "seed_3")
|
70
|
+
create_test_repo remote_seed_path, "exported"
|
71
|
+
|
72
|
+
# Update seed and export
|
73
|
+
seed = Hobo::Lib::Seed::Seed.new 'seeds/seed_3', remote_seed_path
|
74
|
+
seed.update
|
75
|
+
seed.export "exported"
|
76
|
+
|
77
|
+
File.read("exported/test").strip.should eq "exported"
|
78
|
+
File.exists?("exported/.git").should be false
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe "version", :integration do
|
83
|
+
it "should return the git sha of the seed" do
|
84
|
+
# Create test repo as seed remote
|
85
|
+
remote_seed_path = File.join(tmp_dir, "seed_4")
|
86
|
+
create_test_repo remote_seed_path, "version_test"
|
87
|
+
|
88
|
+
# Update seed and export
|
89
|
+
seed = Hobo::Lib::Seed::Seed.new 'seeds/seed_4', remote_seed_path
|
90
|
+
seed.update
|
91
|
+
|
92
|
+
seed.version.should eq `cd seeds/seed_4 && git rev-parse --short HEAD`.strip
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'hobo/metadata'
|
2
|
+
|
3
|
+
describe Hobo::Metadata do
|
4
|
+
before do
|
5
|
+
Hobo::Metadata.store = {}
|
6
|
+
Hobo::Metadata.metadata = {}
|
7
|
+
Hobo::Metadata.defaults = {}
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "store" do
|
11
|
+
it "should expose storage" do
|
12
|
+
Hobo::Metadata.store[:opts] = {}
|
13
|
+
Hobo::Metadata.store[:opts].should be {}
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "metadata" do
|
18
|
+
it "should expose metadata" do
|
19
|
+
Hobo::Metadata.store[:type] = "value"
|
20
|
+
Hobo::Metadata.add "key", :type
|
21
|
+
Hobo::Metadata.metadata["key"][:type].should match "value"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "add" do
|
26
|
+
it "should assign store value to task metadata for type" do
|
27
|
+
Hobo::Metadata.store[:type] = "value"
|
28
|
+
Hobo::Metadata.add "key", :type
|
29
|
+
Hobo::Metadata.metadata["key"][:type].should match "value"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should set store value to default after add" do
|
33
|
+
Hobo::Metadata.default :type, "value"
|
34
|
+
Hobo::Metadata.add "key", :type
|
35
|
+
Hobo::Metadata.metadata["key"][:type].should match "value"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "default" do
|
40
|
+
it "should store default value for type" do
|
41
|
+
Hobo::Metadata.default :type, "default"
|
42
|
+
Hobo::Metadata.add "key", :type
|
43
|
+
Hobo::Metadata.metadata["key"][:type].should match "default"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
File without changes
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'hobo/paths'
|
3
|
+
|
4
|
+
describe Hobo do
|
5
|
+
describe 'project_path' do
|
6
|
+
before do
|
7
|
+
Hobo.project_path = nil
|
8
|
+
FakeFS.activate!
|
9
|
+
end
|
10
|
+
|
11
|
+
after do
|
12
|
+
FakeFS::FileSystem.clear
|
13
|
+
FakeFS.deactivate!
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should return current directory if not in project' do
|
17
|
+
Hobo.project_path.should eq Dir.pwd
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should return project directory if tools/hobo exists' do
|
21
|
+
FileUtils.mkdir_p 'project/test/tools/hobo'
|
22
|
+
Dir.chdir 'project/test' do
|
23
|
+
Hobo.project_path.should eq '/project/test'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should traverse up directories search for tools/hobo' do
|
28
|
+
FileUtils.mkdir_p 'project/test/tools/hobo'
|
29
|
+
Dir.chdir 'project/test/tools/hobo' do
|
30
|
+
Hobo.project_path.should eq '/project/test'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should memoize project path' do
|
35
|
+
FileUtils.mkdir_p 'project/test/tools/hobo'
|
36
|
+
Dir.chdir 'project/test/tools/hobo' do
|
37
|
+
Hobo.project_path.should eq '/project/test'
|
38
|
+
end
|
39
|
+
|
40
|
+
# We remove the hobo directory to see if the path was memoized or not
|
41
|
+
FileUtils.rmdir('project/test/tools/hobo')
|
42
|
+
Dir.chdir 'project/test/tools' do
|
43
|
+
Hobo.project_path.should eq '/project/test'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe 'config_path' do
|
49
|
+
it 'should be ~/.hobo' do
|
50
|
+
Hobo.config_path.should eq File.join(ENV['HOME'], '.hobo')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe 'seed_cache_path' do
|
55
|
+
it 'should be ~/.hobo/seeds' do
|
56
|
+
Hobo.seed_cache_path.should eq File.join(ENV['HOME'], '.hobo', 'seeds')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe 'hobofile_path' do
|
61
|
+
it 'should be project_path + Hobofile' do
|
62
|
+
Hobo.hobofile_path.should eq File.join(Hobo.project_path, 'Hobofile')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe 'project_config_file' do
|
67
|
+
it 'should be project_path + tools/hobo/storage.yaml' do
|
68
|
+
Hobo.project_config_file.should eq File.join(Hobo.project_path, 'tools', 'hobo', 'storage.yaml')
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe 'user_config_file' do
|
73
|
+
it 'should be ~/.hobo/config.rb' do
|
74
|
+
Hobo.user_config_file.should eq File.join(Hobo.config_path, 'config.rb')
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|