<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,13 @@
 # -*- coding: utf-8 -*-
 
+2009-01-26 	Cory ODaniel &lt;warningshot@coryodaniel.com&gt;
+	* Resolver.branch takes a *params now
+	* Added specs for Resolver.branch single &amp; multiple branches
+	* DependencyResolver loops over branches
+	* SymlinkResolver checks symlink with File.readlink
+	* rbconfig is only loaded if Config::CONFIG is not defined (stops tons of warnings that show up in log)
+	* !IMPORTANT -&gt; Changed public API for Writing resolvers.  YourResolver#initialize should take (config,branch_name,*deps)
+
 = 0.9.5
 2009-01-22 	Cory ODaniel &lt;warningshot@coryodaniel.com&gt;
 	* RubyGems 1.3 Support</diff>
      <filename>CHANGELOG</filename>
    </modified>
    <modified>
      <diff>@@ -97,7 +97,7 @@ class WarningShot::GemResolver
     end
   end
   
-  def initialize(config,*params)
+  def initialize(config,branch_name,*params)
     super
     
     Gem.configuration.update_sources = !!(self.config[:update_sources])</diff>
      <filename>lib/resolvers/gem_resolver.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,31 +1,31 @@
-# TODO It would be really sweet if there was a way for FileResolver, 
-#   DirectoryResolver, and SymlinkResolver inherited this functionality if
-#   mode, user, or group is set in its config file.
+
+# TODO Branch should take a params of branches, here: file, directory, symlink
+# TODO uid, gid should be integer or string (string for name, interger for id)
+# 
+
 class WarningShot::PermissionResolver
   include WarningShot::Resolver
   order  100
   branch :permission
   description 'Validates mode, user, and group permission on files and directories'
-     
-  module UnixPermissionsInterface;end;  
-  module WindowsPermissionsInterface;end;
-       
-  if WarningShot.platform != :windows
-    include WarningShot::PermissionResolver::UnixPermissionsInterface
-    #http://www.ruby-doc.org/core/classes/File/Stat.html
-    #http://www.ruby-doc.org/stdlib/libdoc/etc/rdoc/index.html
-    #http://www.ruby-doc.org/stdlib/libdoc/pathname/rdoc/index.html
-    #http://www.ruby-doc.org/stdlib/libdoc/fileutils/rdoc/index.html
-    #http://www.ruby-doc.org/core/classes/File.html#M002574
-  else
-    include WarningShot::PermissionResolver::WindowsPermissionsInterface
-  end     
-    
+         
   PermissionResource = Struct.new(:path,:target_mode,:target_user,:target_group,:recursive) do
     def exists?
       File.exist? self.path
     end
     
+    def correct_owner!
+      false
+    end
+    
+    def correct_group!
+      false
+    end
+    
+    def correct_mode!
+      false
+    end
+    
     def correct_owner?
       false
     end</diff>
      <filename>lib/resolvers/permission_resolver.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,6 @@
+# SHOUDL DETERMINE IF LINK EXISTS (File.stat().ftype == &quot;link&quot;)
+# and it points at proper file
+
 class WarningShot::SymlinkResolver
   include WarningShot::Resolver
   add_dependency :core, 'fileutils'
@@ -9,13 +12,18 @@ class WarningShot::SymlinkResolver
   SymlinkResource = Struct.new(:source,:target,:force) do
     def link!;FileUtils.ln_s(self.source,self.target,:force=&gt;self.force);end;
     
-    def exists?
+    #Is the symlink present
+    def linked?
       self.target ? File.symlink?(self.target) : false
     end
     
     # Determines if link points at correct file
     def correct?
-      File.identical? self.source, self.target
+      !!(File.readlink(self.target) == self.source)
+    end
+    
+    def valid?
+      !!(self.linked? &amp;&amp; self.correct?)
     end
       
   end
@@ -29,7 +37,7 @@ class WarningShot::SymlinkResolver
   
   # If the target wasn't specified, it doesn't exist
   register :test do |dep| 
-    if symlink_correct = dep.exists? &amp;&amp; dep.correct?
+    if symlink_correct = dep.valid?
       logger.debug &quot; ~ [PASSED] symlink #{dep.target}&quot;
     else
       logger.warn &quot; ~ [FAILED] symlink #{dep.target}&quot;
@@ -43,6 +51,6 @@ class WarningShot::SymlinkResolver
     rescue Errno::EEXIST, Errno::ENOTDIR =&gt; ex
       logger.error &quot; ~ Could not create symlink #{dep.source} =&gt; #{dep.target}&quot;
     end
-    dep.exists?
+    dep.valid?
   end
 end
\ No newline at end of file</diff>
      <filename>lib/resolvers/symlink_resolver.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ require 'fileutils'
 require 'yaml'
 require 'logger'
 require 'set'
-require 'rbconfig'
+require 'rbconfig' unless defined?(::Config::CONFIG)
 require 'optparse'
 
 # Load core extensions</diff>
      <filename>lib/warningshot.rb</filename>
    </modified>
    <modified>
      <diff>@@ -75,42 +75,43 @@ module WarningShot
       WarningShot::Resolver.descendants.each do |klass|
         next if klass.disabled?
         
-        @logger.info &quot;\n#{'-'*60}&quot;
+        klass.logger = @logger
+        klass.logger.info &quot;\n#{'-'*60}&quot;
+        klass.logger.info &quot;#{klass.name}; branch: #{klass.branch.join(',')} [TESTING]&quot;
 
-        branch = @dependency_tree[klass.branch.to_sym]
+        #Process each branch for the Resolver Class (klass)
+        klass.branch.each do |branch_name|
+          branch = @dependency_tree[branch_name.to_sym]
 
-        if branch.nil?
-          @logger.info &quot;[SKIPPING] #{klass}, #{klass.branch}; No machine recipes was registered&quot;
-          next
-        elsif branch.empty?
-          @logger.info &quot;[SKIPPING] #{klass}, #{klass.branch}; No dependencies in machine recipe&quot;
-          next
-        end
+          if branch.nil?
+            klass.logger.info &quot;[SKIPPING] #{klass}, #{branch_name}; No machine recipes were registered&quot;
+            next
+          elsif branch.empty?
+            klass.logger.info &quot;[SKIPPING] #{klass}, #{branch_name}; No dependencies in machine recipe&quot;
+            next
+          end
         
-        klass.logger = @logger
-        resolver = klass.new(@config,*branch)
-
-        @resolvers &lt;&lt; resolver
+          resolver = klass.new(@config,branch_name.to_sym,*branch)          
+          @resolvers &lt;&lt; resolver
         
-        @logger.info &quot;#{resolver.class}; branch: #{klass.branch} [TESTING]&quot;
-                
-        # Start test
-        klass.before_filters(:test).each{|p| p.call}
-        resolver.test!
-        klass.after_filters(:test).each{|p| p.call}
+          # Start test
+          klass.before_filters(:test).each{|p| p.call}
+          resolver.test!
+          klass.after_filters(:test).each{|p| p.call}
         
-        @logger.info &quot;Passed: #{resolver.passed.size} / Failed: #{resolver.failed.size}&quot;
+          klass.logger.info &quot;Passed: #{resolver.passed.size} / Failed: #{resolver.failed.size}&quot;
 
-        if self[:resolve] &amp;&amp; !klass.resolutions.empty?
-          @logger.info &quot;#{resolver.class}; branch: #{klass.branch} [RESOLVING]&quot;
+          if self[:resolve] &amp;&amp; !klass.resolutions.empty?
+            klass.logger.info &quot;#{resolver.class}; branch: #{resolver.current_branch} [RESOLVING]&quot;
 
-          klass.before_filters(:resolution).each{|p| p.call}        
-          resolver.resolve! 
-          klass.after_filters(:resolution).each{|p| p.call}
+            klass.before_filters(:resolution).each{|p| p.call}        
+            resolver.resolve! 
+            klass.after_filters(:resolution).each{|p| p.call}
           
-          @logger.info &quot;Resolved: #{resolver.resolved.size} / Unresolved: #{resolver.unresolved.size}&quot;
-        end
-      end
+            klass.logger.info &quot;Resolved: #{resolver.resolved.size} / Unresolved: #{resolver.unresolved.size}&quot;
+          end
+        end #Branch Loop
+      end #Resolver Class Loop
       
       @logger.info &quot;\nResults:&quot;
       stats.each {|k,v| @logger.info(&quot; ~ #{k}: \t#{v}&quot;)}</diff>
      <filename>lib/warningshot/dependency_resolver.rb</filename>
    </modified>
    <modified>
      <diff>@@ -99,11 +99,13 @@ module WarningShot
       #   class MyResolver
       #     include WarningShot::Resolver
       #     branch :mock
+      #     # Alternatively pass a set of branches you want to pull from (see PermissionResolver)
+      #     # branch :mock, :faux, :test
       #   end
       #
       # @api public
-      def branch(b=nil)
-        @branch = b unless b.nil?
+      def branch(*b)
+        @branch = b unless b.empty?
         @branch
       end
       
@@ -432,6 +434,10 @@ module WarningShot
     end
     
     module InstanceMethods
+      # get the currently processed branch
+      def current_branch
+        return @current_branch
+      end
       
       # Loops through each dependency and runs applicable tests until one passes
       # 
@@ -511,6 +517,9 @@ module WarningShot
       # @param config [WarningShot::Config]
       #   Configuration to use
       #
+      # @param branch_name [Symbol]
+      #   Name of the branch being processed
+      #
       # @param *deps [Array]
       #   Dependencies from YAML file
       #
@@ -521,9 +530,10 @@ module WarningShot
       #       resolved [Boolean] Was teh dependency resolved
       #
       # @api semi-public
-      def initialize(config,*deps)
-        @config = config
-        @dependencies = Set.new
+      def initialize(config,branch_name,*deps)
+        @config           = config
+        @current_branch   = branch_name
+        @dependencies     = Set.new
         
         deps.each do |dep|
           # Cast YAML data as described in resolver.</diff>
      <filename>lib/warningshot/resolver.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,13 +14,13 @@ describe WarningShot::SshResolver do
     describe 'with heal instructions' do
       it 'should install the public key on the local user' do
         pending &quot;rm your own pubkey from ~/.ssh/authorized_keys2 to run&quot;
-        fd = WarningShot::SshResolver.new(WarningShot::Config.create,{:hostname =&gt; 'localhost', :username =&gt; ENV['USER']})
+        fd = WarningShot::SshResolver.new(WarningShot::Config.create,:ssh,{:hostname =&gt; 'localhost', :username =&gt; ENV['USER']})
         fd.test!
         fd.failed.length.should be(1)
         fd.resolve!
         fd.resolved.length.should be(1)
 
-        fd = WarningShot::SshResolver.new(WarningShot::Config.create,{:hostname =&gt; 'localhost', :username =&gt; ENV['USER']})
+        fd = WarningShot::SshResolver.new(WarningShot::Config.create,:ssh,{:hostname =&gt; 'localhost', :username =&gt; ENV['USER']})
         fd.test!
         fd.failed.length.should be(0)
       end
@@ -29,7 +29,7 @@ describe WarningShot::SshResolver do
     describe 'without heal instructions' do
 
       it 'should fail if you have a bogus username' do
-        fd = WarningShot::SshResolver.new(WarningShot::Config.create,{:hostname =&gt; 'localhost', :username =&gt; &quot;128nisd89hg&quot;})
+        fd = WarningShot::SshResolver.new(WarningShot::Config.create,:ssh,{:hostname =&gt; 'localhost', :username =&gt; &quot;128nisd89hg&quot;})
         fd.test!
         fd.failed.length.should be(1)
       end</diff>
      <filename>more/ssh_resolver_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,7 @@ class WarningShot::RESOLVER_NAME
     
   end
   
-  def initialize(config,*params)
+  def initialize(config,branch_name,*params)
     super
     
   end</diff>
      <filename>resolver_template.txt</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@ class FauxTestResolver
   branch :faux_test
   description &quot;A resolver for testing DependencyResolver's test functionality&quot;
 
-  def initialize(c,*d)
+  def initialize(c,b,*d)
     super
   end
   </diff>
      <filename>test/data/faux_test_resolver.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ class MockResolver
   branch :mock
   description 'A mock resolver for testing'
 
-  def initialize(c,*d)
+  def initialize(c,b,*d)
     super
     MockResolver.logger.debug 'A mock resolver was initialized'
   end</diff>
      <filename>test/data/mock_resolver.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@ describe WarningShot::CoreLibResolver do
   end
   
   it 'should increment #errors for unloadable core libs' do
-    cld = WarningShot::CoreLibResolver.new WarningShot::Config.create,'bogus_core_lib_name'
+    cld = WarningShot::CoreLibResolver.new WarningShot::Config.create,:core_lib,'bogus_core_lib_name'
     cld.test!
     
     cld.failed.length.should be(1)</diff>
      <filename>test/spec/unit/resolvers/core_lib_resolver_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -25,7 +25,7 @@ describe WarningShot::DirectoryResolver do
       control_dir = File.expand_path('.')
       test_dir1 = @@base_path / 'test1'
       test_dir2 = @@base_path / 'test2'
-      resolver = WarningShot::DirectoryResolver.new WarningShot::Config.create, control_dir,test_dir1, test_dir2
+      resolver = WarningShot::DirectoryResolver.new WarningShot::Config.create,:directory, control_dir,test_dir1, test_dir2
       resolver.test!
       resolver.passed.length.should be(1)
       resolver.failed.length.should be(2)</diff>
      <filename>test/spec/unit/resolvers/directory_resolver_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -33,7 +33,7 @@ describe WarningShot::FileResolver do
           that_file = @@source_path / 'that.txt'
           this_file = @@dest_path / 'this.txt'
           
-          fd = WarningShot::FileResolver.new(WarningShot::Config.create,{:source  =&gt; &quot;file://#{that_file}&quot;,:target =&gt; this_file})
+          fd = WarningShot::FileResolver.new(WarningShot::Config.create,:file,{:source  =&gt; &quot;file://#{that_file}&quot;,:target =&gt; this_file})
           fd.test!
           
           fd.failed.length.should be(1)
@@ -43,7 +43,7 @@ describe WarningShot::FileResolver do
           that_file = @@source_path / 'that.txt'
           this_file = @@dest_path / 'this.txt'
           
-          fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:source  =&gt; &quot;file://#{that_file}&quot;,:target =&gt; this_file})
+          fd = WarningShot::FileResolver.new( WarningShot::Config.create,:file,{:source  =&gt; &quot;file://#{that_file}&quot;,:target =&gt; this_file})
           fd.test!
           fd.failed.length.should be(1)
           fd.resolve!
@@ -51,7 +51,7 @@ describe WarningShot::FileResolver do
         end
         
         it 'should heal a file from http://' do
-          fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:source  =&gt; &quot;http://www.example.com/&quot;,:target =&gt; (@@dest_path / 'internetz.html')})
+          fd = WarningShot::FileResolver.new( WarningShot::Config.create,:file,{:source  =&gt; &quot;http://www.example.com/&quot;,:target =&gt; (@@dest_path / 'internetz.html')})
           fd.test!
           fd.failed.length.should be(1)
           fd.resolve!
@@ -63,7 +63,7 @@ describe WarningShot::FileResolver do
         end
                 
         it 'should not increment #resolved if the resolution fails' do
-          fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:source  =&gt; &quot;http://www.example.com/DOESNT.EXIST&quot;,:target =&gt; (@@dest_path / 'doesnt_exist.html')})
+          fd = WarningShot::FileResolver.new( WarningShot::Config.create,:file,{:source  =&gt; &quot;http://www.example.com/DOESNT.EXIST&quot;,:target =&gt; (@@dest_path / 'doesnt_exist.html')})
           fd.test!
           fd.failed.length.should be(1)
           fd.resolve!
@@ -76,12 +76,12 @@ describe WarningShot::FileResolver do
       it 'should be able to return unresolved dependencies' do
         this_file = @@dest_path / 'this.txt'
         
-        fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:target =&gt; this_file})
+        fd = WarningShot::FileResolver.new( WarningShot::Config.create,:file,{:target =&gt; this_file})
         fd.test!
         fd.resolve!
         fd.unresolved.length.should be(1)
 
-        fd = WarningShot::FileResolver.new WarningShot::Config.create, this_file
+        fd = WarningShot::FileResolver.new WarningShot::Config.create,:file, this_file
         fd.test!
         fd.resolve!
         fd.unresolved.length.should be(1)
@@ -91,7 +91,7 @@ describe WarningShot::FileResolver do
         it 'should add dependency to #failed' do
           this_file = @@dest_path / 'this.txt'
 
-          fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:target =&gt; this_file})
+          fd = WarningShot::FileResolver.new( WarningShot::Config.create,:file,{:target =&gt; this_file})
           fd.test!
           fd.failed.length.should be(1)
           fd.resolve!
@@ -108,7 +108,7 @@ describe WarningShot::FileResolver do
           that_file = @@source_path / 'that.txt'
           this_file = @@dest_path / 'this.txt'
 
-          fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:target =&gt; this_file,:source =&gt; that_file})
+          fd = WarningShot::FileResolver.new( WarningShot::Config.create,:file,{:target =&gt; this_file,:source =&gt; that_file})
           fd.test!
           fd.failed.length.should be(1)
         end
@@ -120,7 +120,7 @@ describe WarningShot::FileResolver do
         it 'should add dependency to #failed' do
           this_file = @@dest_path / 'this.txt'
 
-          fd = WarningShot::FileResolver.new( WarningShot::Config.create,{:target =&gt; this_file})
+          fd = WarningShot::FileResolver.new( WarningShot::Config.create,:file,{:target =&gt; this_file})
           fd.test!
           fd.failed.length.should be(1)
         end</diff>
      <filename>test/spec/unit/resolvers/file_resolver_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -36,7 +36,7 @@ describe WarningShot::GemResolver do
       
   it 'should override Gem.path if gempath is given' do
     config = WarningShot::Config.create({:gem_path =&gt; &quot;./test/output/gems:./test/outputs/gems2&quot;})
-    WarningShot::GemResolver.new config
+    WarningShot::GemResolver.new config, :gem
     
     Gem.path[0].should == File.expand_path(&quot;./test/output/gems&quot;)
     Gem.path[1].should == File.expand_path(&quot;./test/outputs/gems2&quot;)
@@ -52,7 +52,7 @@ describe WarningShot::GemResolver do
   # The gem name is the healing instructions, so if its provide it is the instructions 
   it 'should install the gems when healing is enabled' do
     config = WarningShot::Config.create({:gem_path =&gt; &quot;./test/output/gems:./test/outputs/gems2&quot;})
-    resolver = WarningShot::GemResolver.new(config,{:name =&gt; &quot;ws-dummy&quot;})
+    resolver = WarningShot::GemResolver.new(config,:gem,{:name =&gt; &quot;ws-dummy&quot;})
     resolver.test!
     
     resolver.failed.size.should be(1)
@@ -64,12 +64,12 @@ describe WarningShot::GemResolver do
   it 'should be able to determine if a gem is installed' do
     config = WarningShot::Config.create({:gem_path =&gt; &quot;./test/output/gems:./test/outputs/gems2&quot;})
 
-    resolver = WarningShot::GemResolver.new(config, {:name =&gt; &quot;ws-dummy&quot;})
+    resolver = WarningShot::GemResolver.new(config,:gem, {:name =&gt; &quot;ws-dummy&quot;})
     resolver.test!
     resolver.failed.size.should be(1)
     resolver.resolve!
     
-    resolver = WarningShot::GemResolver.new( config,{:name =&gt; &quot;ws-dummy&quot;})
+    resolver = WarningShot::GemResolver.new( config,:gem,{:name =&gt; &quot;ws-dummy&quot;})
     resolver.test!
     resolver.passed.size.should be(1)
   end
@@ -78,7 +78,7 @@ describe WarningShot::GemResolver do
     config = WarningShot::Config.create({:gem_path =&gt; &quot;./test/output/gems:./test/outputs/gems2&quot;})
     dummy_gem = {:name =&gt; &quot;ws-dummy&quot;, :version=&gt;&quot;= 0.2.0&quot;}
     
-    resolver = WarningShot::GemResolver.new(config,dummy_gem)
+    resolver = WarningShot::GemResolver.new(config,:gem,dummy_gem)
     resolver.test!
     resolver.failed.size.should be(1)
     resolver.resolve!
@@ -92,19 +92,19 @@ describe WarningShot::GemResolver do
     config = WarningShot::Config.create
     dummy_gem = {:name =&gt; &quot;ws-dummy&quot;, :version=&gt;&quot;= 0.2.0&quot;}
     
-    resolver = WarningShot::GemResolver.new(config,dummy_gem)
+    resolver = WarningShot::GemResolver.new(config,:gem,dummy_gem)
     resolver.test!
     resolver.failed.size.should be(1)
     resolver.resolve!
     resolver.resolved.size.should be(1)
     resolver.resolved.first.version.to_s.should == dummy_gem[:version]
     
-    WarningShot::GemResolver::GemResource.new(dummy_gem[:name],dummy_gem[:version]).uninstall!
+    WarningShot::GemResolver::GemResource.new(dummy_gem[:name],:gem,dummy_gem[:version]).uninstall!
   end
   
   it 'should be able to determine if a gem is installed in a different path (--gempath)' do
     config = WarningShot::Config.create({:gem_path =&gt; &quot;./test/output/gems:./test/outputs/gems2&quot;})
-    resolver = WarningShot::GemResolver.new(config,{:name =&gt; &quot;ws-dummy&quot;})
+    resolver = WarningShot::GemResolver.new(config,:gem,{:name =&gt; &quot;ws-dummy&quot;})
     resolver.test!
     
     resolver.failed.size.should be(1)
@@ -113,7 +113,7 @@ describe WarningShot::GemResolver do
     resolver.resolved.size.should be(1)
     
     config = WarningShot::Config.create({:gem_path =&gt; &quot;./test/output/gems:./test/outputs/gems2&quot;})
-    resolver = WarningShot::GemResolver.new(config,{:name =&gt; &quot;ws-dummy&quot;})
+    resolver = WarningShot::GemResolver.new(config,:gem,{:name =&gt; &quot;ws-dummy&quot;})
     resolver.test!
     resolver.passed.size.should be(1)
 
@@ -124,12 +124,12 @@ describe WarningShot::GemResolver do
     config = WarningShot::Config.create({:gem_path =&gt; &quot;./test/output/gems:./test/outputs/gems2&quot;})
     dummy_gem = {:name =&gt; &quot;ws-dummy&quot;, :version=&gt;&quot;= 0.2.0&quot;}
     
-    resolver = WarningShot::GemResolver.new(config,dummy_gem)
+    resolver = WarningShot::GemResolver.new(config,:gem,dummy_gem)
     resolver.test!
     resolver.failed.size.should be(1)
     resolver.resolve!
     
-    resolver = WarningShot::GemResolver.new(config,dummy_gem)
+    resolver = WarningShot::GemResolver.new(config,:gem,dummy_gem)
     resolver.test!
     resolver.passed.size.should be(1)
   end
@@ -138,7 +138,7 @@ describe WarningShot::GemResolver do
     config = WarningShot::Config.create({:gem_path =&gt; &quot;./test/output/gems:./test/outputs/gems2&quot;})
     dummy_gem = {:name =&gt; &quot;coryodaniel-ws-dummy&quot;, :version=&gt;&quot;= 1.5.0&quot;, :source =&gt; &quot;http://gems.github.com&quot;}
 
-    resolver = WarningShot::GemResolver.new(config,dummy_gem)
+    resolver = WarningShot::GemResolver.new(config,:gem,dummy_gem)
     resolver.test!
     resolver.failed.size.should be(1)
     resolver.resolve!</diff>
      <filename>test/spec/unit/resolvers/gem_resolver_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -21,7 +21,7 @@ describe WarningShot::IntegrityResolver do
     that_file = @@source_path / 'that.txt'
     #These values are flipped from FileResolverRspec so that we dont
     # have to resolve the file dependency to check the integrity
-    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
+    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,:file,{
       :target =&gt; &quot;file://#{that_file}&quot;,
       :source =&gt; &quot;&quot;,
       :sha1 =&gt; &quot;e87c9091b6f6d30d1a05d66de1acbac6e1998121&quot;
@@ -35,7 +35,7 @@ describe WarningShot::IntegrityResolver do
     that_file = @@source_path / 'that.txt'
     #These values are flipped from FileResolverRspec so that we dont
     # have to resolve the file dependency to check the integrity
-    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
+    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,:file,{
       :target =&gt; &quot;file://#{that_file}&quot;,
       :source =&gt; &quot;&quot;,
       :sha1 =&gt; &quot;WRONG&quot;
@@ -49,7 +49,7 @@ describe WarningShot::IntegrityResolver do
     that_file = @@source_path / 'that.txt'
     #These values are flipped from FileResolverRspec so that we dont
     # have to resolve the file dependency to check the integrity
-    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
+    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,:file,{
       :target =&gt; &quot;file://#{that_file}&quot;,
       :source =&gt; &quot;&quot;,
       :md5 =&gt; &quot;WRONG&quot;
@@ -63,7 +63,7 @@ describe WarningShot::IntegrityResolver do
     that_file = @@source_path / 'that.txt'
     #These values are flipped from FileResolverRspec so that we dont
     # have to resolve the file dependency to check the integrity
-    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
+    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,:file,{
       :target =&gt; &quot;file://#{that_file}&quot;,
       :source =&gt; &quot;&quot;,
       :md5 =&gt; &quot;db59da6066bab8885569c012b1f6b173&quot;
@@ -77,7 +77,7 @@ describe WarningShot::IntegrityResolver do
     that_file = @@source_path / 'that.txt'
     #These values are flipped from FileResolverRspec so that we dont
     # have to resolve the file dependency to check the integrity
-    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
+    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,:file,{
       :target =&gt; &quot;file://#{that_file}&quot;,
       :source =&gt; &quot;&quot;,
       :md5 =&gt; &quot;WRONG&quot;,
@@ -92,7 +92,7 @@ describe WarningShot::IntegrityResolver do
     that_file = @@source_path / 'that.txt'
     #These values are flipped from FileResolverRspec so that we dont
     # have to resolve the file dependency to check the integrity
-    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,{
+    resolver = WarningShot::IntegrityResolver.new(WarningShot::Config.create,:file,{
       :target =&gt; &quot;file://#{that_file}&quot;,
       :source =&gt; &quot;&quot;
     })</diff>
      <filename>test/spec/unit/resolvers/integrity_resolver_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,13 +17,13 @@ describe WarningShot::PermissionResolver do
     _file   = $test_data / 'permission_test.txt'
     _file2  = $test_data / 'permission_test.fake'
     
-    resolver = WarningShot::PermissionResolver.new(WarningShot::Config.create,{
+    resolver = WarningShot::PermissionResolver.new(WarningShot::Config.create,:file,{
       :path =&gt; _file,       :mode   =&gt; '0755', 
       :user =&gt; 'www-data',  :group  =&gt; 'www-data', 
       :recursive =&gt; &quot;none&quot;
     })
     
-    resolver2 = WarningShot::PermissionResolver.new(WarningShot::Config.create,{
+    resolver2 = WarningShot::PermissionResolver.new(WarningShot::Config.create,:file,{
       :path =&gt; _file2,      :mode   =&gt; '0755', 
       :user =&gt; 'www-data',  :group  =&gt; 'www-data', 
       :recursive =&gt; &quot;none&quot;</diff>
      <filename>test/spec/unit/resolvers/permission_resolver_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -32,7 +32,7 @@ describe WarningShot::SymlinkResolver do
         :source =&gt; @@data_path / 'mock_resolver.rb',
         :target =&gt; @@base_path / 'linked_mock_resolver.rb'
       }
-      resolver = WarningShot::SymlinkResolver.new WarningShot::Config.create,symlink_dep
+      resolver = WarningShot::SymlinkResolver.new WarningShot::Config.create,:symlink,symlink_dep
       
       resolver.test!
       resolver.failed.length.should be(1)</diff>
      <filename>test/spec/unit/resolvers/symlink_resolver_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -20,27 +20,27 @@ describe WarningShot::UrlResolver do
   end
 
   it 'should be able to determine if an http address is reachable' do
-    resolver = WarningShot::UrlResolver.new WarningShot::Config.create,&quot;http://example.com&quot;
+    resolver = WarningShot::UrlResolver.new WarningShot::Config.create,:url,&quot;http://example.com&quot;
     resolver.test!
     resolver.failed.length.should be(0)
   end
   
   it 'should be able to determine if an https address is reachable' do
     #Yeah, what https page to use, huh?
-    resolver = WarningShot::UrlResolver.new WarningShot::Config.create,&quot;https://www.google.com/analytics/home/&quot;
+    resolver = WarningShot::UrlResolver.new WarningShot::Config.create,:url,&quot;https://www.google.com/analytics/home/&quot;
     resolver.test!
     resolver.failed.length.should be(0)
   end
   
   it 'should be able to determine if an http address is unreachable' do
-    resolver = WarningShot::UrlResolver.new WarningShot::Config.create, &quot;http://example.com&quot;, &quot;http://127.0.0.1:31337&quot;
+    resolver = WarningShot::UrlResolver.new WarningShot::Config.create, :url,&quot;http://example.com&quot;, &quot;http://127.0.0.1:31337&quot;
     resolver.test!
     resolver.failed.length.should be(1)
     resolver.passed.length.should be(1)
   end
   
   it 'should be able to determine if an https address is unreachable' do
-    resolver = WarningShot::UrlResolver.new WarningShot::Config.create,&quot;https://www.google.com/analytics/home/&quot;, &quot;https://127.0.0.1:31337&quot;
+    resolver = WarningShot::UrlResolver.new WarningShot::Config.create,:url,&quot;https://www.google.com/analytics/home/&quot;, &quot;https://127.0.0.1:31337&quot;
     resolver.test!
     resolver.failed.length.should be(1)
     resolver.passed.length.should be(1)
@@ -51,7 +51,7 @@ describe WarningShot::UrlResolver do
     config[:url_strict].should be(true)
     
     #google redirects, ever heard of no-www.org?
-    resolver = WarningShot::UrlResolver.new config, &quot;http://example.com&quot;,&quot;http://google.com&quot;
+    resolver = WarningShot::UrlResolver.new config, :url,&quot;http://example.com&quot;,&quot;http://google.com&quot;
 
     resolver.test!
     resolver.failed.length.should be(1)</diff>
      <filename>test/spec/unit/resolvers/url_resolver_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -18,9 +18,15 @@ describe WarningShot::Resolver do
     MockResolver.instance_variable_set('@disabled',false)
   end
 
-  it 'should allow a resolution branch to be set' do
+  it 'should take a single branch' do
     MockResolver.branch :a_test_branch
-    MockResolver.branch.should == :a_test_branch
+    MockResolver.branch.member?(:a_test_branch).should be(true)
+  end
+  
+  it 'should take multiple branches' do
+    MockResolver.branch :a_test_branch, :another_test_branch
+    MockResolver.branch.member?(:a_test_branch).should be(true)
+    MockResolver.branch.member?(:another_test_branch).should be(true)
   end
 
   it 'should allow a description to be set' do
@@ -274,7 +280,7 @@ describe WarningShot::Resolver do
     MockResolver.flush!
     MockResolver.register(:test,:name=&gt;:fav_color_test) {|dep| dep.value == 'blue'}
 
-    mock_resolver = MockResolver.new(WarningShot::Config.create,'blue')
+    mock_resolver = MockResolver.new(WarningShot::Config.create,:mock_branch,'blue')
     mock_resolver.test!
     mock_resolver.passed.length.should be(1)
   end
@@ -283,7 +289,7 @@ describe WarningShot::Resolver do
     MockResolver.flush!
     MockResolver.register(:test,:name=&gt;:fav_color_test) {|dep| dep.value == 'blue'}
 
-    mock_resolver = MockResolver.new(WarningShot::Config.create,'red')
+    mock_resolver = MockResolver.new(WarningShot::Config.create,:mock_branch,'red')
     mock_resolver.test!
     mock_resolver.failed.length.should be(1)
   end
@@ -296,7 +302,7 @@ describe WarningShot::Resolver do
       dep.value == :blue
     }
     
-    mock_resolver = MockResolver.new(WarningShot::Config.create,'red')
+    mock_resolver = MockResolver.new(WarningShot::Config.create,:mock_branch,'red')
     mock_resolver.test!
     mock_resolver.resolve!
     mock_resolver.resolved.length.should be(1)
@@ -310,7 +316,7 @@ describe WarningShot::Resolver do
       dep.value == :blue
     }
     
-    mock_resolver = MockResolver.new(WarningShot::Config.create,'red')
+    mock_resolver = MockResolver.new(WarningShot::Config.create,:mock_branch,'red')
     mock_resolver.test!
     mock_resolver.resolve!
     mock_resolver.unresolved.length.should be(1)</diff>
      <filename>test/spec/unit/warningshot/resolver_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>2c6ec5ef5ca2683d89d3d676e6938cab44b33f4e</id>
    </parent>
  </parents>
  <author>
    <name>Cory ODaniel</name>
    <email>contact@coryodaniel.com</email>
  </author>
  <url>http://github.com/coryodaniel/warningshot/commit/f95810417d2109d8e0a086e33e25acd779c390a7</url>
  <id>f95810417d2109d8e0a086e33e25acd779c390a7</id>
  <committed-date>2009-01-26T16:50:08-08:00</committed-date>
  <authored-date>2009-01-26T16:50:08-08:00</authored-date>
  <message>	* Resolver.branch takes a *params now
	* Added specs for Resolver.branch single &amp; multiple branches
	* DependencyResolver loops over branches
	* SymlinkResolver checks symlink with File.readlink
	* rbconfig is only loaded if Config::CONFIG is not defined (stops tons of warnings that show up in log)
	* !IMPORTANT -&gt; Changed public API for Writing resolvers.  YourResolver#initialize should take (config,branch_name,*deps)</message>
  <tree>817766b99f77776808ae37f4511c60c27ed3cdbc</tree>
  <committer>
    <name>Cory ODaniel</name>
    <email>contact@coryodaniel.com</email>
  </committer>
</commit>
