warningshot 0.9.4 → 0.9.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +8 -0
- data/CONTRIBUTORS +2 -1
- data/README +86 -6
- data/Rakefile +4 -3
- data/TODO +1 -147
- data/bin/warningshot +11 -7
- data/lib/resolvers/core_lib_resolver.rb +2 -3
- data/lib/resolvers/directory_resolver.rb +1 -1
- data/lib/resolvers/file_resolver.rb +35 -17
- data/lib/resolvers/gem_resolver.rb +81 -60
- data/lib/resolvers/integrity_resolver.rb +10 -11
- data/lib/resolvers/manual_resolver.rb +15 -3
- data/lib/resolvers/permission_resolver.rb +6 -8
- data/lib/resolvers/symlink_resolver.rb +13 -8
- data/lib/resolvers/url_resolver.rb +28 -41
- data/lib/warningshot.rb +10 -7
- data/lib/warningshot/config.rb +254 -0
- data/lib/{warning_shot → warningshot}/dependency_resolver.rb +38 -17
- data/lib/{warning_shot → warningshot}/growl.rb +2 -0
- data/lib/{warning_shot → warningshot}/logger.rb +2 -0
- data/lib/{warning_shot → warningshot}/resolver.rb +177 -89
- data/lib/warningshot/suite.rb +4 -0
- data/lib/{warning_shot → warningshot}/template_generator.rb +4 -1
- data/lib/{warning_shot → warningshot}/version.rb +3 -1
- data/lib/warningshot/warning_shot.rb +187 -0
- data/tasks/gemspec.rb +3 -16
- data/tasks/yard.rb +1 -1
- data/templates/gems.yml +1 -0
- data/test/data/faux_test.yml +5 -0
- data/test/data/faux_test_resolver.rb +21 -0
- data/test/data/mock_resolver.rb +11 -5
- data/test/log/warningshot.log +3051 -532
- data/test/spec/unit/resolvers/core_lib_resolver_spec.rb +1 -1
- data/test/spec/unit/resolvers/directory_resolver_spec.rb +1 -1
- data/test/spec/unit/resolvers/file_resolver_spec.rb +9 -13
- data/test/spec/unit/resolvers/gem_resolver_spec.rb +108 -32
- data/test/spec/unit/resolvers/integrity_resolver_spec.rb +6 -6
- data/test/spec/unit/resolvers/permission_resolver_spec.rb +2 -2
- data/test/spec/unit/resolvers/symlink_resolver_spec.rb +8 -1
- data/test/spec/unit/resolvers/url_resolver_spec.rb +10 -10
- data/test/spec/unit/warningshot/config_spec.rb +57 -0
- data/test/spec/unit/{warning_shot → warningshot}/dependency_resolver_spec.rb +18 -9
- data/test/spec/unit/{warning_shot → warningshot}/resolver_spec.rb +54 -79
- data/test/spec/unit/{warning_shot → warningshot}/template_generator_spec.rb +1 -1
- data/test/spec/unit/{warning_shot → warningshot}/version_spec.rb +0 -0
- data/test/spec/unit/{warning_shot → warningshot}/warning_shot_spec.rb +0 -0
- metadata +24 -26
- data/lib/warning_shot/config.rb +0 -132
- data/lib/warning_shot/warning_shot.rb +0 -130
- data/test/spec/spec.opts.zoiks +0 -0
- data/test/spec/unit/warning_shot/config_spec.rb +0 -35
@@ -15,7 +15,7 @@ describe WarningShot::CoreLibResolver do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'should increment #errors for unloadable core libs' do
|
18
|
-
cld = WarningShot::CoreLibResolver.new 'bogus_core_lib_name'
|
18
|
+
cld = WarningShot::CoreLibResolver.new WarningShot::Config.create,'bogus_core_lib_name'
|
19
19
|
cld.test!
|
20
20
|
|
21
21
|
cld.failed.length.should be(1)
|
@@ -25,7 +25,7 @@ describe WarningShot::DirectoryResolver do
|
|
25
25
|
control_dir = File.expand_path('.')
|
26
26
|
test_dir1 = @@base_path / 'test1'
|
27
27
|
test_dir2 = @@base_path / 'test2'
|
28
|
-
resolver = WarningShot::DirectoryResolver.new control_dir,test_dir1, test_dir2
|
28
|
+
resolver = WarningShot::DirectoryResolver.new WarningShot::Config.create, control_dir,test_dir1, test_dir2
|
29
29
|
resolver.test!
|
30
30
|
resolver.passed.length.should be(1)
|
31
31
|
resolver.failed.length.should be(2)
|
@@ -25,10 +25,6 @@ describe WarningShot::FileResolver do
|
|
25
25
|
it 'should have resolutions regsitered' do
|
26
26
|
WarningShot::FileResolver.resolutions.empty?.should be(false)
|
27
27
|
end
|
28
|
-
|
29
|
-
it 'should treate relative paths as from directory specified by WarningShot::Config[:application]' do
|
30
|
-
pending
|
31
|
-
end
|
32
28
|
|
33
29
|
describe 'with healing enabled' do
|
34
30
|
describe 'with heal instructions' do
|
@@ -37,7 +33,7 @@ describe WarningShot::FileResolver do
|
|
37
33
|
that_file = @@source_path / 'that.txt'
|
38
34
|
this_file = @@dest_path / 'this.txt'
|
39
35
|
|
40
|
-
fd = WarningShot::FileResolver.new({:source => "file://#{that_file}",:target => this_file})
|
36
|
+
fd = WarningShot::FileResolver.new(WarningShot::Config.create,{:source => "file://#{that_file}",:target => this_file})
|
41
37
|
fd.test!
|
42
38
|
|
43
39
|
fd.failed.length.should be(1)
|
@@ -47,7 +43,7 @@ describe WarningShot::FileResolver do
|
|
47
43
|
that_file = @@source_path / 'that.txt'
|
48
44
|
this_file = @@dest_path / 'this.txt'
|
49
45
|
|
50
|
-
fd = WarningShot::FileResolver.new({:source => "file://#{that_file}",:target => this_file})
|
46
|
+
fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:source => "file://#{that_file}",:target => this_file})
|
51
47
|
fd.test!
|
52
48
|
fd.failed.length.should be(1)
|
53
49
|
fd.resolve!
|
@@ -55,7 +51,7 @@ describe WarningShot::FileResolver do
|
|
55
51
|
end
|
56
52
|
|
57
53
|
it 'should heal a file from http://' do
|
58
|
-
fd = WarningShot::FileResolver.new({:source => "http://www.example.com/",:target => (@@dest_path / 'internetz.html')})
|
54
|
+
fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:source => "http://www.example.com/",:target => (@@dest_path / 'internetz.html')})
|
59
55
|
fd.test!
|
60
56
|
fd.failed.length.should be(1)
|
61
57
|
fd.resolve!
|
@@ -67,7 +63,7 @@ describe WarningShot::FileResolver do
|
|
67
63
|
end
|
68
64
|
|
69
65
|
it 'should not increment #resolved if the resolution fails' do
|
70
|
-
fd = WarningShot::FileResolver.new({:source => "http://www.example.com/DOESNT.EXIST",:target => (@@dest_path / 'doesnt_exist.html')})
|
66
|
+
fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:source => "http://www.example.com/DOESNT.EXIST",:target => (@@dest_path / 'doesnt_exist.html')})
|
71
67
|
fd.test!
|
72
68
|
fd.failed.length.should be(1)
|
73
69
|
fd.resolve!
|
@@ -80,12 +76,12 @@ describe WarningShot::FileResolver do
|
|
80
76
|
it 'should be able to return unresolved dependencies' do
|
81
77
|
this_file = @@dest_path / 'this.txt'
|
82
78
|
|
83
|
-
fd = WarningShot::FileResolver.new({:target => this_file})
|
79
|
+
fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:target => this_file})
|
84
80
|
fd.test!
|
85
81
|
fd.resolve!
|
86
82
|
fd.unresolved.length.should be(1)
|
87
83
|
|
88
|
-
fd = WarningShot::FileResolver.new this_file
|
84
|
+
fd = WarningShot::FileResolver.new WarningShot::Config.create, this_file
|
89
85
|
fd.test!
|
90
86
|
fd.resolve!
|
91
87
|
fd.unresolved.length.should be(1)
|
@@ -95,7 +91,7 @@ describe WarningShot::FileResolver do
|
|
95
91
|
it 'should add dependency to #failed' do
|
96
92
|
this_file = @@dest_path / 'this.txt'
|
97
93
|
|
98
|
-
fd = WarningShot::FileResolver.new({:target => this_file})
|
94
|
+
fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:target => this_file})
|
99
95
|
fd.test!
|
100
96
|
fd.failed.length.should be(1)
|
101
97
|
fd.resolve!
|
@@ -112,7 +108,7 @@ describe WarningShot::FileResolver do
|
|
112
108
|
that_file = @@source_path / 'that.txt'
|
113
109
|
this_file = @@dest_path / 'this.txt'
|
114
110
|
|
115
|
-
fd = WarningShot::FileResolver.new({:target => this_file,:source => that_file})
|
111
|
+
fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:target => this_file,:source => that_file})
|
116
112
|
fd.test!
|
117
113
|
fd.failed.length.should be(1)
|
118
114
|
end
|
@@ -124,7 +120,7 @@ describe WarningShot::FileResolver do
|
|
124
120
|
it 'should add dependency to #failed' do
|
125
121
|
this_file = @@dest_path / 'this.txt'
|
126
122
|
|
127
|
-
fd = WarningShot::FileResolver.new({:target => this_file})
|
123
|
+
fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:target => this_file})
|
128
124
|
fd.test!
|
129
125
|
fd.failed.length.should be(1)
|
130
126
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
#
|
1
|
+
# NOTE: All tests that install/uninstall gems should use 'ws-dummy' gem.
|
2
|
+
# All tests for testing existance of gems should use 'warningshot' or 'ws-dummy'
|
3
3
|
|
4
4
|
require "." / "lib" / "resolvers" / "gem_resolver"
|
5
5
|
require 'fileutils'
|
@@ -8,10 +8,17 @@ describe WarningShot::GemResolver do
|
|
8
8
|
WarningShot::GemResolver.logger = $logger
|
9
9
|
|
10
10
|
FileUtils.rm_rf "./test/output/gems"
|
11
|
+
FileUtils.rm_rf "./test/output/gems2"
|
11
12
|
end
|
12
13
|
|
13
|
-
|
14
|
+
before :each do
|
15
|
+
FileUtils.mkdir_p "./test/output/gems"
|
16
|
+
FileUtils.mkdir_p "./test/output/gems2"
|
17
|
+
end
|
18
|
+
|
19
|
+
after :each do
|
14
20
|
FileUtils.rm_rf "./test/output/gems"
|
21
|
+
FileUtils.rm_rf "./test/output/gems2"
|
15
22
|
end
|
16
23
|
|
17
24
|
it 'should have tests registered' do
|
@@ -22,53 +29,122 @@ describe WarningShot::GemResolver do
|
|
22
29
|
WarningShot::GemResolver.resolutions.empty?.should be(false)
|
23
30
|
end
|
24
31
|
|
25
|
-
it 'should provide the command line option
|
26
|
-
WarningShot.
|
27
|
-
WarningShot::Config.
|
32
|
+
it 'should provide the command line option --gempath' do
|
33
|
+
WarningShot::Config::PARSER.to_s.include?("Alternate gem path ':' separated to check. First in path is where gems will be installed").should be(true)
|
34
|
+
WarningShot::Config.parse_args(['--gempath',"./test/output/gems"]).key?(:gem_path).should be(true)
|
28
35
|
end
|
29
|
-
|
30
|
-
it 'should
|
31
|
-
WarningShot.
|
32
|
-
WarningShot::
|
36
|
+
|
37
|
+
it 'should override Gem.path if gempath is given' do
|
38
|
+
config = WarningShot::Config.create({:gem_path => "./test/output/gems:./test/outputs/gems2"})
|
39
|
+
WarningShot::GemResolver.new config
|
40
|
+
|
41
|
+
Gem.path[0].should == File.expand_path("./test/output/gems")
|
42
|
+
Gem.path[1].should == File.expand_path("./test/outputs/gems2")
|
43
|
+
Gem.path.shift
|
44
|
+
Gem.path.shift
|
33
45
|
end
|
34
|
-
|
35
|
-
it 'should override Gem.path if gem_path is given' do
|
36
|
-
WarningShot::Config.configuration[:gem_path] = "./test/output/gems:./test/outputs/gems2"
|
37
|
-
WarningShot::GemResolver.load_paths
|
38
46
|
|
39
|
-
|
40
|
-
|
47
|
+
it 'should provide the command line option --update-sources' do
|
48
|
+
WarningShot::Config::PARSER.to_s.include?("Update gem sources before installing").should be(true)
|
49
|
+
WarningShot::Config.parse_args(['--update-sources']).key?(:update_sources).should be(true)
|
41
50
|
end
|
42
|
-
|
43
|
-
|
44
|
-
|
51
|
+
|
52
|
+
# The gem name is the healing instructions, so if its provide it is the instructions
|
53
|
+
it 'should install the gems when healing is enabled' do
|
54
|
+
config = WarningShot::Config.create({:gem_path => "./test/output/gems:./test/outputs/gems2"})
|
55
|
+
resolver = WarningShot::GemResolver.new(config,{:name => "ws-dummy"})
|
45
56
|
resolver.test!
|
46
57
|
|
47
|
-
resolver.
|
58
|
+
resolver.failed.size.should be(1)
|
59
|
+
|
60
|
+
resolver.resolve!
|
61
|
+
resolver.resolved.size.should be(1)
|
48
62
|
end
|
49
63
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
resolver = WarningShot::GemResolver.new({:name => "
|
64
|
+
it 'should be able to determine if a gem is installed' do
|
65
|
+
config = WarningShot::Config.create({:gem_path => "./test/output/gems:./test/outputs/gems2"})
|
66
|
+
|
67
|
+
resolver = WarningShot::GemResolver.new(config, {:name => "ws-dummy"})
|
54
68
|
resolver.test!
|
69
|
+
resolver.failed.size.should be(1)
|
70
|
+
resolver.resolve!
|
71
|
+
|
72
|
+
resolver = WarningShot::GemResolver.new( config,{:name => "ws-dummy"})
|
73
|
+
resolver.test!
|
74
|
+
resolver.passed.size.should be(1)
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'should be able to install a specific version' do
|
78
|
+
config = WarningShot::Config.create({:gem_path => "./test/output/gems:./test/outputs/gems2"})
|
79
|
+
dummy_gem = {:name => "ws-dummy", :version=>"= 0.2.0"}
|
55
80
|
|
81
|
+
resolver = WarningShot::GemResolver.new(config,dummy_gem)
|
82
|
+
resolver.test!
|
56
83
|
resolver.failed.size.should be(1)
|
84
|
+
resolver.resolve!
|
85
|
+
|
86
|
+
resolver.resolved.size.should be(1)
|
87
|
+
resolver.resolved.first.version.to_s.should == dummy_gem[:version]
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'should be able to determine if a gem is installed in the default gem path' do
|
91
|
+
Gem.clear_paths
|
92
|
+
config = WarningShot::Config.create
|
93
|
+
dummy_gem = {:name => "ws-dummy", :version=>"= 0.2.0"}
|
57
94
|
|
95
|
+
resolver = WarningShot::GemResolver.new(config,dummy_gem)
|
96
|
+
resolver.test!
|
97
|
+
resolver.failed.size.should be(1)
|
58
98
|
resolver.resolve!
|
59
99
|
resolver.resolved.size.should be(1)
|
100
|
+
resolver.resolved.first.version.to_s.should == dummy_gem[:version]
|
101
|
+
|
102
|
+
WarningShot::GemResolver::GemResource.new(dummy_gem[:name],dummy_gem[:version]).uninstall!
|
60
103
|
end
|
61
104
|
|
62
|
-
it 'should
|
63
|
-
|
105
|
+
it 'should be able to determine if a gem is installed in a different path (--gempath)' do
|
106
|
+
config = WarningShot::Config.create({:gem_path => "./test/output/gems:./test/outputs/gems2"})
|
107
|
+
resolver = WarningShot::GemResolver.new(config,{:name => "ws-dummy"})
|
108
|
+
resolver.test!
|
109
|
+
|
110
|
+
resolver.failed.size.should be(1)
|
111
|
+
|
112
|
+
resolver.resolve!
|
113
|
+
resolver.resolved.size.should be(1)
|
114
|
+
|
115
|
+
config = WarningShot::Config.create({:gem_path => "./test/output/gems:./test/outputs/gems2"})
|
116
|
+
resolver = WarningShot::GemResolver.new(config,{:name => "ws-dummy"})
|
117
|
+
resolver.test!
|
118
|
+
resolver.passed.size.should be(1)
|
119
|
+
|
120
|
+
File.exist?("./test/output/gems/specifications/ws-dummy-1.5.0.gemspec").should be(true)
|
64
121
|
end
|
65
|
-
|
66
|
-
it 'should
|
67
|
-
|
122
|
+
|
123
|
+
it 'should be able to determine if a specific version is installed' do
|
124
|
+
config = WarningShot::Config.create({:gem_path => "./test/output/gems:./test/outputs/gems2"})
|
125
|
+
dummy_gem = {:name => "ws-dummy", :version=>"= 0.2.0"}
|
126
|
+
|
127
|
+
resolver = WarningShot::GemResolver.new(config,dummy_gem)
|
128
|
+
resolver.test!
|
129
|
+
resolver.failed.size.should be(1)
|
130
|
+
resolver.resolve!
|
131
|
+
|
132
|
+
resolver = WarningShot::GemResolver.new(config,dummy_gem)
|
133
|
+
resolver.test!
|
134
|
+
resolver.passed.size.should be(1)
|
68
135
|
end
|
136
|
+
|
137
|
+
it 'should be able to install gems from an alternate source' do
|
138
|
+
config = WarningShot::Config.create({:gem_path => "./test/output/gems:./test/outputs/gems2"})
|
139
|
+
dummy_gem = {:name => "coryodaniel-ws-dummy", :version=>"= 1.5.0", :source => "http://gems.github.com"}
|
140
|
+
|
141
|
+
resolver = WarningShot::GemResolver.new(config,dummy_gem)
|
142
|
+
resolver.test!
|
143
|
+
resolver.failed.size.should be(1)
|
144
|
+
resolver.resolve!
|
69
145
|
|
70
|
-
|
71
|
-
|
72
|
-
pending
|
146
|
+
resolver.resolved.size.should be(1)
|
147
|
+
resolver.resolved.first.version.to_s.should == dummy_gem[:version]
|
73
148
|
end
|
149
|
+
|
74
150
|
end
|
@@ -21,7 +21,7 @@ describe WarningShot::IntegrityResolver do
|
|
21
21
|
that_file = @@source_path / 'that.txt'
|
22
22
|
#These values are flipped from FileResolverRspec so that we dont
|
23
23
|
# have to resolve the file dependency to check the integrity
|
24
|
-
resolver = WarningShot::IntegrityResolver.new({
|
24
|
+
resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
|
25
25
|
:target => "file://#{that_file}",
|
26
26
|
:source => "",
|
27
27
|
:sha1 => "e87c9091b6f6d30d1a05d66de1acbac6e1998121"
|
@@ -35,7 +35,7 @@ describe WarningShot::IntegrityResolver do
|
|
35
35
|
that_file = @@source_path / 'that.txt'
|
36
36
|
#These values are flipped from FileResolverRspec so that we dont
|
37
37
|
# have to resolve the file dependency to check the integrity
|
38
|
-
resolver = WarningShot::IntegrityResolver.new({
|
38
|
+
resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
|
39
39
|
:target => "file://#{that_file}",
|
40
40
|
:source => "",
|
41
41
|
:sha1 => "WRONG"
|
@@ -49,7 +49,7 @@ describe WarningShot::IntegrityResolver do
|
|
49
49
|
that_file = @@source_path / 'that.txt'
|
50
50
|
#These values are flipped from FileResolverRspec so that we dont
|
51
51
|
# have to resolve the file dependency to check the integrity
|
52
|
-
resolver = WarningShot::IntegrityResolver.new({
|
52
|
+
resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
|
53
53
|
:target => "file://#{that_file}",
|
54
54
|
:source => "",
|
55
55
|
:md5 => "WRONG"
|
@@ -63,7 +63,7 @@ describe WarningShot::IntegrityResolver do
|
|
63
63
|
that_file = @@source_path / 'that.txt'
|
64
64
|
#These values are flipped from FileResolverRspec so that we dont
|
65
65
|
# have to resolve the file dependency to check the integrity
|
66
|
-
resolver = WarningShot::IntegrityResolver.new({
|
66
|
+
resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
|
67
67
|
:target => "file://#{that_file}",
|
68
68
|
:source => "",
|
69
69
|
:md5 => "db59da6066bab8885569c012b1f6b173"
|
@@ -77,7 +77,7 @@ describe WarningShot::IntegrityResolver do
|
|
77
77
|
that_file = @@source_path / 'that.txt'
|
78
78
|
#These values are flipped from FileResolverRspec so that we dont
|
79
79
|
# have to resolve the file dependency to check the integrity
|
80
|
-
resolver = WarningShot::IntegrityResolver.new({
|
80
|
+
resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
|
81
81
|
:target => "file://#{that_file}",
|
82
82
|
:source => "",
|
83
83
|
:md5 => "WRONG",
|
@@ -92,7 +92,7 @@ describe WarningShot::IntegrityResolver do
|
|
92
92
|
that_file = @@source_path / 'that.txt'
|
93
93
|
#These values are flipped from FileResolverRspec so that we dont
|
94
94
|
# have to resolve the file dependency to check the integrity
|
95
|
-
resolver = WarningShot::IntegrityResolver.new({
|
95
|
+
resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
|
96
96
|
:target => "file://#{that_file}",
|
97
97
|
:source => ""
|
98
98
|
})
|
@@ -17,13 +17,13 @@ describe WarningShot::PermissionResolver do
|
|
17
17
|
_file = $test_data / 'permission_test.txt'
|
18
18
|
_file2 = $test_data / 'permission_test.fake'
|
19
19
|
|
20
|
-
resolver = WarningShot::PermissionResolver.new({
|
20
|
+
resolver = WarningShot::PermissionResolver.new(WarningShot::Config.create,{
|
21
21
|
:path => _file, :mode => '0755',
|
22
22
|
:user => 'www-data', :group => 'www-data',
|
23
23
|
:recursive => "none"
|
24
24
|
})
|
25
25
|
|
26
|
-
resolver2 = WarningShot::PermissionResolver.new({
|
26
|
+
resolver2 = WarningShot::PermissionResolver.new(WarningShot::Config.create,{
|
27
27
|
:path => _file2, :mode => '0755',
|
28
28
|
:user => 'www-data', :group => 'www-data',
|
29
29
|
:recursive => "none"
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "." / "lib" / "resolvers" / "symlink_resolver"
|
2
|
+
require 'digest/md5'
|
2
3
|
|
3
4
|
describe WarningShot::SymlinkResolver do
|
4
5
|
before :all do
|
@@ -31,7 +32,7 @@ describe WarningShot::SymlinkResolver do
|
|
31
32
|
:source => @@data_path / 'mock_resolver.rb',
|
32
33
|
:target => @@base_path / 'linked_mock_resolver.rb'
|
33
34
|
}
|
34
|
-
resolver = WarningShot::SymlinkResolver.new symlink_dep
|
35
|
+
resolver = WarningShot::SymlinkResolver.new WarningShot::Config.create,symlink_dep
|
35
36
|
|
36
37
|
resolver.test!
|
37
38
|
resolver.failed.length.should be(1)
|
@@ -41,4 +42,10 @@ describe WarningShot::SymlinkResolver do
|
|
41
42
|
File.symlink?(symlink_dep[:target]).should be(true)
|
42
43
|
end
|
43
44
|
end # End healing enabled, instructions provided
|
45
|
+
|
46
|
+
describe 'it should expand the target and source paths' do
|
47
|
+
sym = WarningShot::SymlinkResolver.yaml_to_object({:source => "./test_src_expand",:target => "../test_target_expand",:force => true})
|
48
|
+
sym.source.should == File.expand_path("./test_src_expand")
|
49
|
+
sym.target.should == File.expand_path("../test_target_expand")
|
50
|
+
end
|
44
51
|
end
|
@@ -14,44 +14,44 @@ describe WarningShot::UrlResolver do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'should extend the command line interface' do
|
17
|
-
WarningShot.
|
18
|
-
WarningShot.
|
19
|
-
WarningShot.
|
17
|
+
WarningShot::Config::PARSER.to_s.include?("Success is only for 200 instead of 2xx").should be(true)
|
18
|
+
WarningShot::Config::PARSER.to_s.include?("SSL Verify Peer Depth").should be(true)
|
19
|
+
WarningShot::Config::PARSER.to_s.include?("Path to root ca certificate").should be(true)
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'should be able to determine if an http address is reachable' do
|
23
|
-
resolver = WarningShot::UrlResolver.new "http://example.com"
|
23
|
+
resolver = WarningShot::UrlResolver.new WarningShot::Config.create,"http://example.com"
|
24
24
|
resolver.test!
|
25
25
|
resolver.failed.length.should be(0)
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'should be able to determine if an https address is reachable' do
|
29
29
|
#Yeah, what https page to use, huh?
|
30
|
-
resolver = WarningShot::UrlResolver.new "https://www.google.com/analytics/home/"
|
30
|
+
resolver = WarningShot::UrlResolver.new WarningShot::Config.create,"https://www.google.com/analytics/home/"
|
31
31
|
resolver.test!
|
32
32
|
resolver.failed.length.should be(0)
|
33
33
|
end
|
34
34
|
|
35
35
|
it 'should be able to determine if an http address is unreachable' do
|
36
|
-
resolver = WarningShot::UrlResolver.new "http://example.com", "http://127.0.0.1:31337"
|
36
|
+
resolver = WarningShot::UrlResolver.new WarningShot::Config.create, "http://example.com", "http://127.0.0.1:31337"
|
37
37
|
resolver.test!
|
38
38
|
resolver.failed.length.should be(1)
|
39
39
|
resolver.passed.length.should be(1)
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'should be able to determine if an https address is unreachable' do
|
43
|
-
resolver = WarningShot::UrlResolver.new "https://www.google.com/analytics/home/", "https://127.0.0.1:31337"
|
43
|
+
resolver = WarningShot::UrlResolver.new WarningShot::Config.create,"https://www.google.com/analytics/home/", "https://127.0.0.1:31337"
|
44
44
|
resolver.test!
|
45
45
|
resolver.failed.length.should be(1)
|
46
46
|
resolver.passed.length.should be(1)
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'should be able to receive --strict from the command line' do
|
50
|
-
WarningShot::Config.
|
51
|
-
|
50
|
+
config = WarningShot::Config.create({:url_strict=>true})
|
51
|
+
config[:url_strict].should be(true)
|
52
52
|
|
53
53
|
#google redirects, ever heard of no-www.org?
|
54
|
-
resolver = WarningShot::UrlResolver.new "http://example.com","http://google.com"
|
54
|
+
resolver = WarningShot::UrlResolver.new config, "http://example.com","http://google.com"
|
55
55
|
|
56
56
|
resolver.test!
|
57
57
|
resolver.failed.length.should be(1)
|
@@ -0,0 +1,57 @@
|
|
1
|
+
describe WarningShot::Config do
|
2
|
+
|
3
|
+
it 'should be able to parse an ARGV string' do
|
4
|
+
args = ['--very-verbose','--resolve','--environment=rspec_test','-g','-aRspecTest']
|
5
|
+
config = WarningShot::Config.parse_args(args)
|
6
|
+
config[:verbose].should be(true)
|
7
|
+
config[:resolve].should be(true)
|
8
|
+
config[:environment].should == 'rspec_test'
|
9
|
+
config[:growl].should be(true)
|
10
|
+
config[:application].should == 'RspecTest'
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should provide defaults' do
|
14
|
+
defined?(WarningShot::Config::DEFAULTS).should == 'constant'
|
15
|
+
WarningShot::Config::DEFAULTS.class.should be(Hash)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should set defaults if no configuration is passed in' do
|
19
|
+
config = WarningShot::Config.create
|
20
|
+
config.should == WarningShot::Config::DEFAULTS
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should allow configurations to be done with a hash and still set defaults' do
|
24
|
+
_config = {
|
25
|
+
:growl => true,
|
26
|
+
:environment => :rspec_test
|
27
|
+
}
|
28
|
+
config = WarningShot::Config.create _config
|
29
|
+
config[:growl].should be(true)
|
30
|
+
config[:environment].should == :rspec_test
|
31
|
+
config[:colorize].should be(true)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should allow configurations to be changed with a block' do
|
35
|
+
config = WarningShot::Config.create do|c|
|
36
|
+
c[:growl] = true
|
37
|
+
c[:resolve]= true
|
38
|
+
end
|
39
|
+
|
40
|
+
config[:growl].should be(true)
|
41
|
+
config[:resolve].should be(true)
|
42
|
+
config[:colorize].should be(true)
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
it 'should allow a hash and block to be passed, block wins' do
|
47
|
+
conf = WarningShot::Config.create({:environment=>"hash",:something=>true}) do |c|
|
48
|
+
c[:environment] = "blk"
|
49
|
+
c[:else] = true
|
50
|
+
end
|
51
|
+
|
52
|
+
conf[:environment].should == "blk"
|
53
|
+
conf[:something].should be(true)
|
54
|
+
conf[:else].should be(true)
|
55
|
+
conf[:colorize].should be(true)
|
56
|
+
end
|
57
|
+
end
|