warningshot 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/CHANGELOG +8 -0
  2. data/CONTRIBUTORS +2 -1
  3. data/README +86 -6
  4. data/Rakefile +4 -3
  5. data/TODO +1 -147
  6. data/bin/warningshot +11 -7
  7. data/lib/resolvers/core_lib_resolver.rb +2 -3
  8. data/lib/resolvers/directory_resolver.rb +1 -1
  9. data/lib/resolvers/file_resolver.rb +35 -17
  10. data/lib/resolvers/gem_resolver.rb +81 -60
  11. data/lib/resolvers/integrity_resolver.rb +10 -11
  12. data/lib/resolvers/manual_resolver.rb +15 -3
  13. data/lib/resolvers/permission_resolver.rb +6 -8
  14. data/lib/resolvers/symlink_resolver.rb +13 -8
  15. data/lib/resolvers/url_resolver.rb +28 -41
  16. data/lib/warningshot.rb +10 -7
  17. data/lib/warningshot/config.rb +254 -0
  18. data/lib/{warning_shot → warningshot}/dependency_resolver.rb +38 -17
  19. data/lib/{warning_shot → warningshot}/growl.rb +2 -0
  20. data/lib/{warning_shot → warningshot}/logger.rb +2 -0
  21. data/lib/{warning_shot → warningshot}/resolver.rb +177 -89
  22. data/lib/warningshot/suite.rb +4 -0
  23. data/lib/{warning_shot → warningshot}/template_generator.rb +4 -1
  24. data/lib/{warning_shot → warningshot}/version.rb +3 -1
  25. data/lib/warningshot/warning_shot.rb +187 -0
  26. data/tasks/gemspec.rb +3 -16
  27. data/tasks/yard.rb +1 -1
  28. data/templates/gems.yml +1 -0
  29. data/test/data/faux_test.yml +5 -0
  30. data/test/data/faux_test_resolver.rb +21 -0
  31. data/test/data/mock_resolver.rb +11 -5
  32. data/test/log/warningshot.log +3051 -532
  33. data/test/spec/unit/resolvers/core_lib_resolver_spec.rb +1 -1
  34. data/test/spec/unit/resolvers/directory_resolver_spec.rb +1 -1
  35. data/test/spec/unit/resolvers/file_resolver_spec.rb +9 -13
  36. data/test/spec/unit/resolvers/gem_resolver_spec.rb +108 -32
  37. data/test/spec/unit/resolvers/integrity_resolver_spec.rb +6 -6
  38. data/test/spec/unit/resolvers/permission_resolver_spec.rb +2 -2
  39. data/test/spec/unit/resolvers/symlink_resolver_spec.rb +8 -1
  40. data/test/spec/unit/resolvers/url_resolver_spec.rb +10 -10
  41. data/test/spec/unit/warningshot/config_spec.rb +57 -0
  42. data/test/spec/unit/{warning_shot → warningshot}/dependency_resolver_spec.rb +18 -9
  43. data/test/spec/unit/{warning_shot → warningshot}/resolver_spec.rb +54 -79
  44. data/test/spec/unit/{warning_shot → warningshot}/template_generator_spec.rb +1 -1
  45. data/test/spec/unit/{warning_shot → warningshot}/version_spec.rb +0 -0
  46. data/test/spec/unit/{warning_shot → warningshot}/warning_shot_spec.rb +0 -0
  47. metadata +24 -26
  48. data/lib/warning_shot/config.rb +0 -132
  49. data/lib/warning_shot/warning_shot.rb +0 -130
  50. data/test/spec/spec.opts.zoiks +0 -0
  51. data/test/spec/unit/warning_shot/config_spec.rb +0 -35
@@ -1,10 +1,10 @@
1
1
  describe WarningShot::DependencyResolver do
2
2
  before :all do
3
- @config = {
3
+ @config = WarningShot::Config.create({
4
4
  :config_paths => [$test_data],
5
5
  :environment => 'rspec',
6
6
  :log_path => $log_file
7
- }
7
+ })
8
8
 
9
9
  end
10
10
 
@@ -13,13 +13,7 @@ describe WarningShot::DependencyResolver do
13
13
  pending
14
14
  end
15
15
 
16
- it 'should create a dependency tree from a set of config files' do
17
- @config = {
18
- :config_paths => [$test_data],
19
- :environment => 'rspec',
20
- :log_path => $log_file
21
- }
22
-
16
+ it 'should create a dependency tree from a set of config files' do
23
17
  dr = WarningShot::DependencyResolver.new(@config)
24
18
 
25
19
  dr.dependency_tree[:mock].empty?.should be(false)
@@ -36,7 +30,22 @@ describe WarningShot::DependencyResolver do
36
30
  dr.stats.class.should be(Hash)
37
31
  end
38
32
 
33
+ it 'should ignore resolvers that dont have dependencies registered' do
34
+ pending
35
+ end
36
+
37
+ it 'should ignore disabled resolvers' do
38
+ pending
39
+ end
40
+
39
41
  it 'should be able to run a set of resolvers' do
42
+ config = WarningShot::Config.create({
43
+ :config_paths => [$test_data],
44
+ :environment => 'rspec',
45
+ :log_path => $log_file,
46
+ :oload => :faux_test
47
+ })
48
+
40
49
  pending
41
50
  end
42
51
 
@@ -1,9 +1,10 @@
1
+ require WarningShot.root / 'lib' / 'warningshot' / 'suite'
1
2
  require $test_data / 'mock_resolver'
2
3
 
3
4
  describe WarningShot::Resolver do
4
5
  it 'should provide a base set of resolvers' do
5
- WarningShot::Resolver.descendents.class.should be(Array)
6
- WarningShot::Resolver.descendents.empty?.should be(false)
6
+ WarningShot::Resolver.descendants.class.should be(Array)
7
+ WarningShot::Resolver.descendants.empty?.should be(false)
7
8
  end
8
9
 
9
10
  it 'should allow a resolver to set a order' do
@@ -26,25 +27,31 @@ describe WarningShot::Resolver do
26
27
  MockResolver.description "An awesome mock resolver"
27
28
  MockResolver.description.should == "An awesome mock resolver"
28
29
  end
30
+
31
+ it 'should provide Resolver#add_dependency' do
32
+ pending
33
+ end
34
+
35
+ it 'should disabled specified resolvers based on #add_dependency' do
36
+ pending
37
+ end
38
+
39
+ it 'should disabled specified test & resolvers based on #add_dependency' do
40
+ pending
41
+ end
29
42
 
30
43
  it 'should allow the CLI to be extended' do
31
- MockResolver.cli(
32
- :short => "-t",
33
- :long => "--test=STRING",
34
- :description => "Test extending the CLI",
35
- :default => 'whatever',
36
- :name => 'rspec_test',
37
- :type => String,
38
- :default_desc => "Default: whatever"
39
- )
44
+ MockResolver.cli("-t", "--test=STRING", "Test extending the CLI") do |val|
45
+ options[:rspec_test] = val
46
+ end
40
47
 
41
- WarningShot.parser.to_s.include?("Test extending the CLI").should be(true)
48
+ WarningShot::Config::PARSER.to_s.include?("Test extending the CLI").should be(true)
42
49
  end
43
50
 
44
51
  it 'should be able to cast YAML data to an Object the resolver can work with' do
45
52
  MockDependency = Struct.new :more, :less
46
53
 
47
- MockResolver.cast do |dep|
54
+ MockResolver.typecast do |dep|
48
55
  MockDependency.new dep[:more], dep[:less]
49
56
  end
50
57
 
@@ -81,7 +88,7 @@ describe WarningShot::Resolver do
81
88
 
82
89
  it 'should be able to register a conditional test' do
83
90
  is_test_env = lambda{ |dependency|
84
- WarningShot.environment == 'test'
91
+ WarningShot::Config.create()[:environment] == 'test'
85
92
  }
86
93
  MockResolver.flush_tests!
87
94
  MockResolver.register :test, :if => is_test_env do |dependency|
@@ -162,7 +169,7 @@ describe WarningShot::Resolver do
162
169
 
163
170
  it 'should be able to register a conditional resolution' do
164
171
  is_test_env = lambda{ |dependency|
165
- WarningShot.environment == 'production'
172
+ WarningShot::Config.create()[:environment] == 'production'
166
173
  }
167
174
  MockResolver.flush_resolutions!
168
175
  MockResolver.register :resolution, :if => is_test_env do |dependency|
@@ -263,85 +270,53 @@ describe WarningShot::Resolver do
263
270
  MockResolver.resolutions(:number_resolution1)[:unless].call.should be(true)
264
271
  end
265
272
 
266
- it 'should increment #passed if the test passed' do
267
- pending
268
- end
269
-
270
- it 'should increment #failed if the test failed' do
271
- pending
272
- end
273
-
274
- it 'should increment #resolved if the resolution passed' do
275
- pending
276
- end
277
-
278
- it 'should increment #unresolved if the resolution was unresolved' do
279
- pending
280
- end
281
-
282
273
  it 'should be able to determine if a test passed' do
283
- MockResolver.flush_tests!
284
- MockResolver.flush_resolutions!
285
-
286
- test_meta = {
287
- :name => :process_block_test,
288
- :test => lambda {|dep| dep[:fav_color] == :blue}
289
- }
290
-
291
- dep = {:fav_color => :blue}
274
+ MockResolver.flush!
275
+ MockResolver.register(:test,:name=>:fav_color_test) {|dep| dep.value == 'blue'}
292
276
 
293
- MockResolver.new.send(:process_block, :test, dep, test_meta).should be(true)
277
+ mock_resolver = MockResolver.new(WarningShot::Config.create,'blue')
278
+ mock_resolver.test!
279
+ mock_resolver.passed.length.should be(1)
294
280
  end
295
281
 
296
282
  it 'should be able to determine if a test failed' do
297
- MockResolver.flush_tests!
298
- MockResolver.flush_resolutions!
283
+ MockResolver.flush!
284
+ MockResolver.register(:test,:name=>:fav_color_test) {|dep| dep.value == 'blue'}
299
285
 
300
- test_meta = {
301
- :name => :process_block_test,
302
- :test => lambda {|dep| dep[:fav_color] == :blue}
303
- }
304
-
305
- dep = {:fav_color => :red}
306
-
307
- MockResolver.new.send(:process_block, :test, dep, test_meta).should be(false)
286
+ mock_resolver = MockResolver.new(WarningShot::Config.create,'red')
287
+ mock_resolver.test!
288
+ mock_resolver.failed.length.should be(1)
308
289
  end
309
290
 
310
291
  it 'should be able to determine if a resolution passed' do
311
- MockResolver.flush_tests!
312
- MockResolver.flush_resolutions!
313
-
314
- resolution_meta = {
315
- :name => :process_block_test,
316
- :resolution => lambda {|dep|
317
- dep[:fav_color] = :blue
318
- dep[:fav_color] == :blue
319
- }
292
+ MockResolver.flush!
293
+
294
+ MockResolver.register(:resolution,:name => :det_res_passed){ |dep|
295
+ dep.value = :blue
296
+ dep.value == :blue
320
297
  }
321
298
 
322
- dep = {:fav_color => :red}
323
-
324
- MockResolver.new.send(:process_block, :resolution, dep, resolution_meta).should be(true)
299
+ mock_resolver = MockResolver.new(WarningShot::Config.create,'red')
300
+ mock_resolver.test!
301
+ mock_resolver.resolve!
302
+ mock_resolver.resolved.length.should be(1)
325
303
  end
326
304
 
327
305
  it 'should be able to determine if a resolution failed' do
328
- MockResolver.flush_tests!
329
- MockResolver.flush_resolutions!
330
-
331
- resolution_meta = {
332
- :name => :process_block_test,
333
- :resolution => lambda {|dep|
334
- begin
335
- dep[:fav_color] = :blue
336
- rescue Exception
337
- # nada
338
- end
339
- dep[:fav_color] == :blue
340
- }
306
+ MockResolver.flush!
307
+
308
+
309
+ MockResolver.register(:resolution,:name => :det_res_failed){ |dep|
310
+ dep.value == :blue
341
311
  }
342
312
 
343
- dep = {:fav_color => :red}.freeze
344
-
345
- MockResolver.new.send(:process_block, :resolution, dep, resolution_meta).should be(false)
313
+ mock_resolver = MockResolver.new(WarningShot::Config.create,'red')
314
+ mock_resolver.test!
315
+ mock_resolver.resolve!
316
+ mock_resolver.unresolved.length.should be(1)
317
+ end
318
+
319
+ it 'should not try to resolve a dependency if it has passed' do
320
+ pending
346
321
  end
347
322
  end
@@ -14,7 +14,7 @@ describe WarningShot::TemplateGenerator do
14
14
  end
15
15
 
16
16
  it "should have generate YAML config files" do
17
- yaml_files = Dir[@test_path / WarningShot::ConfigExt]
17
+ yaml_files = Dir[@test_path / WarningShot::RecipeExt]
18
18
  yaml_files.empty?.should be(false)
19
19
  end
20
20
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warningshot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cory ODaniel
@@ -13,7 +13,7 @@ date: 2008-10-15 00:00:00 -07:00
13
13
  default_executable: warningshot
14
14
  dependencies: []
15
15
 
16
- description: WarningShot Dependency Resolution Framework.
16
+ description: WarningShot provides a simple YAML configurable interface to define dependencies that an application or machine depends on, then it builds them for you.
17
17
  email: warningshot@coryodaniel.com.com
18
18
  executables:
19
19
  - warningshot
@@ -34,6 +34,8 @@ files:
34
34
  - bin/ws-stage.bat
35
35
  - bin/ws-stage.sh
36
36
  - test/data
37
+ - test/data/faux_test.yml
38
+ - test/data/faux_test_resolver.rb
37
39
  - test/data/mock.yaml
38
40
  - test/data/mock.yml
39
41
  - test/data/mock_resolver.rb
@@ -46,11 +48,6 @@ files:
46
48
  - test/log/warningshot.log
47
49
  - test/output
48
50
  - test/spec
49
- - test/spec/integration
50
- - test/spec/integration/core_ext
51
- - test/spec/integration/resolvers
52
- - test/spec/integration/warning_shot
53
- - test/spec/spec.opts.zoiks
54
51
  - test/spec/spec_helper.rb
55
52
  - test/spec/unit
56
53
  - test/spec/unit/core_ext
@@ -64,13 +61,13 @@ files:
64
61
  - test/spec/unit/resolvers/permission_resolver_spec.rb
65
62
  - test/spec/unit/resolvers/symlink_resolver_spec.rb
66
63
  - test/spec/unit/resolvers/url_resolver_spec.rb
67
- - test/spec/unit/warning_shot
68
- - test/spec/unit/warning_shot/config_spec.rb
69
- - test/spec/unit/warning_shot/dependency_resolver_spec.rb
70
- - test/spec/unit/warning_shot/resolver_spec.rb
71
- - test/spec/unit/warning_shot/template_generator_spec.rb
72
- - test/spec/unit/warning_shot/version_spec.rb
73
- - test/spec/unit/warning_shot/warning_shot_spec.rb
64
+ - test/spec/unit/warningshot
65
+ - test/spec/unit/warningshot/config_spec.rb
66
+ - test/spec/unit/warningshot/dependency_resolver_spec.rb
67
+ - test/spec/unit/warningshot/resolver_spec.rb
68
+ - test/spec/unit/warningshot/template_generator_spec.rb
69
+ - test/spec/unit/warningshot/version_spec.rb
70
+ - test/spec/unit/warningshot/warning_shot_spec.rb
74
71
  - lib/core_ext
75
72
  - lib/core_ext/hash.rb
76
73
  - lib/core_ext/kernel.rb
@@ -86,15 +83,16 @@ files:
86
83
  - lib/resolvers/permission_resolver.rb
87
84
  - lib/resolvers/symlink_resolver.rb
88
85
  - lib/resolvers/url_resolver.rb
89
- - lib/warning_shot
90
- - lib/warning_shot/config.rb
91
- - lib/warning_shot/dependency_resolver.rb
92
- - lib/warning_shot/growl.rb
93
- - lib/warning_shot/logger.rb
94
- - lib/warning_shot/resolver.rb
95
- - lib/warning_shot/template_generator.rb
96
- - lib/warning_shot/version.rb
97
- - lib/warning_shot/warning_shot.rb
86
+ - lib/warningshot
87
+ - lib/warningshot/config.rb
88
+ - lib/warningshot/dependency_resolver.rb
89
+ - lib/warningshot/growl.rb
90
+ - lib/warningshot/logger.rb
91
+ - lib/warningshot/resolver.rb
92
+ - lib/warningshot/suite.rb
93
+ - lib/warningshot/template_generator.rb
94
+ - lib/warningshot/version.rb
95
+ - lib/warningshot/warning_shot.rb
98
96
  - lib/warningshot.rb
99
97
  - tasks/gemspec.rb
100
98
  - tasks/rpsec.rb
@@ -114,7 +112,7 @@ files:
114
112
  - images/warningshot_green.png
115
113
  - images/warningshot_red.png
116
114
  has_rdoc: true
117
- homepage: http://warningshot.lighthouseapp.com
115
+ homepage: http://github.com/coryodaniel/warningshot
118
116
  post_install_message:
119
117
  rdoc_options: []
120
118
 
@@ -135,9 +133,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
133
  requirements: []
136
134
 
137
135
  rubyforge_project:
138
- rubygems_version: 1.2.0
136
+ rubygems_version: 1.3.1
139
137
  signing_key:
140
138
  specification_version: 2
141
- summary: WarningShot Dependency Resolution Framework.
139
+ summary: WarningShot provides a simple YAML configurable interface to define dependencies that an application or machine depends on, then it builds them for you.
142
140
  test_files: []
143
141
 
@@ -1,132 +0,0 @@
1
- # I pretty much goinked this from merb, you love merb, merb loves you.
2
- # http://merbivore.com
3
-
4
- module WarningShot
5
- class Config
6
-
7
- class << self
8
- def defaults
9
- @defaults ||= {
10
- :environment => 'development',
11
- :resolve => false,
12
- :config_paths => ['.' / 'config' / 'warningshot', '~' / '.warningshot'],
13
- :application => '.',
14
- :log_path => '.' / 'log' / 'warningshot.log',
15
- :log_level => :info,
16
- :growl => false,
17
- :verbose => false,
18
- :colorize => true,
19
- :resolvers => ['~' / '.warningshot' / '*.rb']
20
- }
21
- end
22
-
23
- def use
24
- @configuration ||= {}
25
- yield @configuration
26
- @configuration = defaults.merge(@configuration)
27
- end
28
-
29
- def [](key)
30
- (@configuration||={})[key]
31
- end
32
-
33
- def []=(key,val)
34
- (@configuration||={})[key] = val
35
- #@configuration[key] = val
36
- end
37
-
38
- def setup(settings = {})
39
- @configuration = defaults.merge(settings)
40
- end
41
-
42
- attr_accessor :configuration
43
-
44
- def parse_args(argv = ARGV)
45
- @configuration ||= {}
46
- options = {}
47
- options[:environment] = ENV["WARNING_SHOT_ENV"] if ENV["WARNING_SHOT_ENV"]
48
-
49
- WarningShot.parser.banner = <<-BANNER
50
- WarningShot v. #{WarningShot::VERSION}
51
- Dependency Resolution Framework
52
-
53
- Usage: warningshot [options]
54
- BANNER
55
- WarningShot.parser.separator '*'*80
56
-
57
- WarningShot.parser.on("-e", "--environment=STRING", String, "Environment to test in","Default: #{defaults[:environment]}") do |env|
58
- options[:environment] = env
59
- end
60
- WarningShot.parser.on("--resolve","Resolve missing dependencies (run as sudo)") do |resolve|
61
- options[:resolve] = resolve
62
- end
63
- WarningShot.parser.on("-a","--app=PATH", String, "Path to application", "Default: #{defaults[:application]}") do |app|
64
- options[:application] = app
65
- end
66
- WarningShot.parser.on("-c","--configs=PATH", String,"Path to config directories (':' seperated)","Default: #{defaults[:config_paths].join(':')}") do |config|
67
- options[:config_paths] = config.split(':')
68
- end
69
- WarningShot.parser.on("-r","--resolvers=PATH", String,"Path to add'l resolvers (':' seperated)","Default: #{defaults[:resolvers].join(':')}") do |config|
70
- options[:resolvers] = config.split(':')
71
- end
72
- WarningShot.parser.on("-t","--templates=PATH", String, "Generate template files", "Default: False") do |template_path|
73
- template_path = options[:config_paths].first if template_path.nil? || template_path.empty?
74
- WarningShot::TemplateGenerator.create(template_path)
75
- exit
76
- end
77
- WarningShot.parser.on("-l","--log LOG", String, "Path to log file", "Default: #{defaults[:log_path]}") do |log_path|
78
- options[:log_path] = log_path
79
- end
80
- WarningShot.parser.on("--loglevel [LEVEL]",[:debug, :info, :warn, :error, :fatal], "Default: #{defaults[:log_level]}") do |log_level|
81
- options[:log_level] = log_level
82
- end
83
- WarningShot.parser.on("-g", "--growl", "Output results via growl (Requires growlnotify)") do |growl|
84
- options[:growl] = growl
85
- end
86
- WarningShot.parser.on("-v", "--[no-]verbose", "Output verbose information") do |verbose|
87
- options[:verbose] = verbose
88
- end
89
- WarningShot.parser.on("-p", "--[no-]prettycolors", "Colorize output") do |colorize|
90
- options[:colorize] = colorize
91
- end
92
- WarningShot.parser.on_tail("--version", "Show version"){
93
- WarningShot.parser.parse!(argv)
94
- WarningShot::Config.setup(options)
95
-
96
- WarningShot.load_app
97
- WarningShot.load_addl_resolvers
98
-
99
- puts "WarningShot v. #{WarningShot::VERSION}"
100
- puts "Installed resolvers:"
101
- Resolver.descendents.each { |klass|
102
- puts "\n"
103
- puts klass
104
- puts " Tests: #{klass.tests.length}, Resolutions: #{klass.resolutions.length} [#{klass.resolutions.empty? ? 'irresolvable' : 'resolvable'}]"
105
- puts " #{klass.description}"
106
- puts " Command Line Options: #{klass.raw_cli_ext.inject([]){|m,c| m << c[:long]}.join(',')}" if klass.raw_cli_ext
107
- }
108
- exit
109
- }
110
- WarningShot.parser.on_tail("-h", "--help","Show this help message") { puts WarningShot.parser; exit }
111
- WarningShot.parser.on_tail("--debugger","Enable debugging") do
112
- begin
113
- require "ruby-debug"
114
- Debugger.start
115
- Debugger.settings[:autoeval] = true if Debugger.respond_to?(:settings)
116
- puts "Debugger enabled"
117
- rescue LoadError => ex
118
- puts "You need to install ruby-debug to run the server in debugging mode. With gems, use 'gem install ruby-debug'"
119
- exit
120
- end
121
- end
122
-
123
- WarningShot.parser.parse!(argv)
124
- WarningShot::Config.setup(options)
125
- rescue OptionParser::InvalidOption, OptionParser::InvalidArgument => op
126
- puts op
127
- puts WarningShot.parser #; exit;
128
- end
129
-
130
- end #End self
131
- end #End Config
132
- end#End WarningShot