nkryptic-sandbox 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +10 -0
- data/README.rdoc +117 -0
- data/Rakefile +41 -0
- data/TODO +14 -0
- data/bin/sandbox +6 -0
- data/features/development.feature +13 -0
- data/features/steps/common.rb +174 -0
- data/features/steps/env.rb +15 -0
- data/lib/sandbox/cli.rb +185 -0
- data/lib/sandbox/errors.rb +43 -0
- data/lib/sandbox/installer.rb +156 -0
- data/lib/sandbox/templates/activate_sandbox.erb +91 -0
- data/lib/sandbox/version.rb +15 -0
- data/lib/sandbox.rb +33 -0
- data/sandbox.gemspec +43 -0
- data/spec/sandbox/cli_spec.rb +199 -0
- data/spec/sandbox/installer_spec.rb +219 -0
- data/spec/sandbox_spec.rb +25 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +63 -0
- data/tasks/cucumber.rake +25 -0
- data/tasks/dcov.rake +37 -0
- data/tasks/gem.rake +5 -0
- data/tasks/rspec.rake +51 -0
- metadata +130 -0
| @@ -0,0 +1,219 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            require File.dirname( __FILE__ ) + '/../spec_helper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Sandbox::Installer, "(mocked)" do
         | 
| 5 | 
            +
              
         | 
| 6 | 
            +
              before( :each ) do
         | 
| 7 | 
            +
                Sandbox.instance_eval { instance_variables.each { |v| remove_instance_variable v } }
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
              
         | 
| 10 | 
            +
              describe "creating an instance" do
         | 
| 11 | 
            +
                # initialize( options={} )
         | 
| 12 | 
            +
                it "should set it's options" do
         | 
| 13 | 
            +
                  opts = { :somewhere => true, :nowhere => false }
         | 
| 14 | 
            +
                  installer = Sandbox::Installer.new( opts )
         | 
| 15 | 
            +
                  installer.options[ :somewhere ].should be_true
         | 
| 16 | 
            +
                  installer.options[ :nowhere ].should be_false
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
              
         | 
| 20 | 
            +
              describe "instance" do
         | 
| 21 | 
            +
                # target
         | 
| 22 | 
            +
                describe "when target called" do
         | 
| 23 | 
            +
                  it "should validate target directory once" do
         | 
| 24 | 
            +
                    path = '/some/new/target'
         | 
| 25 | 
            +
                    opts = { :target => path }
         | 
| 26 | 
            +
                    @installer = Sandbox::Installer.new( opts )
         | 
| 27 | 
            +
                    @installer.expects( :resolve_target ).with( path ).once.then.returns( path )
         | 
| 28 | 
            +
                    @installer.target.should == path
         | 
| 29 | 
            +
                    @installer.target.should == path
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                # populate
         | 
| 34 | 
            +
                describe "when populate called" do
         | 
| 35 | 
            +
                  it "should call all steps of populate process" do
         | 
| 36 | 
            +
                    @installer = Sandbox::Installer.new
         | 
| 37 | 
            +
                    @installer.expects( :create_directories )
         | 
| 38 | 
            +
                    @installer.expects( :install_scripts )
         | 
| 39 | 
            +
                    @installer.expects( :install_gems )
         | 
| 40 | 
            +
                    @installer.populate
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                # create_directories
         | 
| 45 | 
            +
                describe "when create_directories called" do
         | 
| 46 | 
            +
                  before( :each ) do
         | 
| 47 | 
            +
                    @path = '/some/new/target'
         | 
| 48 | 
            +
                    @installer = Sandbox::Installer.new
         | 
| 49 | 
            +
                    @installer.stubs( :target ).returns( @path )
         | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
                  it "should create sandbox directory structure" do
         | 
| 52 | 
            +
                    FileUtils.expects( :mkdir_p ).with( @path + '/rubygems/bin' )
         | 
| 53 | 
            +
                    FileUtils.stubs( :ln_s )
         | 
| 54 | 
            +
                    @installer.create_directories
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
                  
         | 
| 57 | 
            +
                  it "should symlink gem bin directory" do
         | 
| 58 | 
            +
                    FileUtils.stubs( :mkdir_p )
         | 
| 59 | 
            +
                    FileUtils.expects( :ln_s ).with( @path + '/rubygems/bin', @path + '/bin' )
         | 
| 60 | 
            +
                    @installer.create_directories
         | 
| 61 | 
            +
                  end
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                # install_scripts
         | 
| 65 | 
            +
                describe "when install_scripts called" do
         | 
| 66 | 
            +
                  before( :each ) do
         | 
| 67 | 
            +
                    @path = '/some/new/target'
         | 
| 68 | 
            +
                    @installer = Sandbox::Installer.new
         | 
| 69 | 
            +
                    @installer.stubs( :target ).returns( @path )
         | 
| 70 | 
            +
                  end
         | 
| 71 | 
            +
                  
         | 
| 72 | 
            +
                  it "should read template file" do
         | 
| 73 | 
            +
                    File.expects( :read ).with( regexp_matches( /templates\/activate_sandbox\.erb/ ) ).returns( '<%= target %>' )
         | 
| 74 | 
            +
                    File.stubs( :open )
         | 
| 75 | 
            +
                    @installer.install_scripts
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
                  
         | 
| 78 | 
            +
                  it "should write out activate script to SANDBOX/bin/activate_sandbox" do
         | 
| 79 | 
            +
                    file = StringIO.new
         | 
| 80 | 
            +
                    File.stubs( :read ).returns( '<%= target %>' )
         | 
| 81 | 
            +
                    File.expects( :open ).with( @path + '/bin/activate_sandbox', 'w' ).yields( file )
         | 
| 82 | 
            +
                    @installer.install_scripts
         | 
| 83 | 
            +
                    file.string.should == @path
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                # install_gems
         | 
| 88 | 
            +
                describe "when install_gems called" do
         | 
| 89 | 
            +
                  before( :each ) do
         | 
| 90 | 
            +
                    @installer = Sandbox::Installer.new( :gems => [ 'mygem' ] )
         | 
| 91 | 
            +
                    @installer.stubs( :setup_sandbox_env )
         | 
| 92 | 
            +
                    @installer.stubs( :restore_sandbox_env )
         | 
| 93 | 
            +
                  end
         | 
| 94 | 
            +
                  
         | 
| 95 | 
            +
                  it "should install a good gem" do
         | 
| 96 | 
            +
                    @installer.expects( :shell_out ).with( 'gem install mygem' ).returns( [ true, 'blah' ] )
         | 
| 97 | 
            +
                    @installer.install_gems
         | 
| 98 | 
            +
                  end
         | 
| 99 | 
            +
                  
         | 
| 100 | 
            +
                  it "should gracefully handle a bad gem" do
         | 
| 101 | 
            +
                    @installer.expects( :shell_out ).with( 'gem install mygem' ).returns( [ false, 'blah' ] )
         | 
| 102 | 
            +
                    @installer.expects( :warn )
         | 
| 103 | 
            +
                    @installer.install_gems
         | 
| 104 | 
            +
                  end
         | 
| 105 | 
            +
                end
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                # resolve_target( path )
         | 
| 108 | 
            +
                describe "when resolve_target called" do
         | 
| 109 | 
            +
                  before( :each ) do
         | 
| 110 | 
            +
                    @path = '/absolute/path/to/parent'
         | 
| 111 | 
            +
                    @installer = Sandbox::Installer.new
         | 
| 112 | 
            +
                    @installer.stubs( :fix_path ).returns( @path )
         | 
| 113 | 
            +
                  end
         | 
| 114 | 
            +
                  
         | 
| 115 | 
            +
                  it "should raise error when it path exists" do
         | 
| 116 | 
            +
                    File.expects( :exists? ).with( @path ).returns( true )
         | 
| 117 | 
            +
                    lambda { @installer.resolve_target( @path ) }.should raise_error( Sandbox::Error )
         | 
| 118 | 
            +
                  end
         | 
| 119 | 
            +
                  
         | 
| 120 | 
            +
                  it "should return path when parent directory passes check_path!" do
         | 
| 121 | 
            +
                    File.expects( :exists? ).with( @path ).returns( false )
         | 
| 122 | 
            +
                    @installer.expects( :check_path! ).with( '/absolute/path/to' ).returns( true )
         | 
| 123 | 
            +
                    @installer.resolve_target( @path ).should == @path
         | 
| 124 | 
            +
                  end
         | 
| 125 | 
            +
                  
         | 
| 126 | 
            +
                  it "should return path when any parent directory passes check_path!" do
         | 
| 127 | 
            +
                    File.expects( :exists? ).with( @path ).returns( false )
         | 
| 128 | 
            +
                    @installer.expects( :check_path! ).with( '/absolute/path/to' ).returns( false )
         | 
| 129 | 
            +
                    @installer.expects( :check_path! ).with( '/absolute/path' ).returns( false )
         | 
| 130 | 
            +
                    @installer.expects( :check_path! ).with( '/absolute' ).returns( true )
         | 
| 131 | 
            +
                    @installer.resolve_target( @path ).should == @path
         | 
| 132 | 
            +
                  end
         | 
| 133 | 
            +
                end
         | 
| 134 | 
            +
             | 
| 135 | 
            +
                # check_path!( path )
         | 
| 136 | 
            +
                describe "when check_path! called" do
         | 
| 137 | 
            +
                  before( :each ) do
         | 
| 138 | 
            +
                    @path = '/absolute/path/to/parent'
         | 
| 139 | 
            +
                    @installer = Sandbox::Installer.new
         | 
| 140 | 
            +
                  end
         | 
| 141 | 
            +
                  
         | 
| 142 | 
            +
                  it "should raise error when it is not writable" do
         | 
| 143 | 
            +
                    File.expects( :directory? ).with( @path ).returns( true )
         | 
| 144 | 
            +
                    File.expects( :writable? ).with( @path ).returns( false )
         | 
| 145 | 
            +
                    lambda { @installer.check_path!( @path ) }.should raise_error( Sandbox::Error )
         | 
| 146 | 
            +
                  end
         | 
| 147 | 
            +
                  
         | 
| 148 | 
            +
                  it "should raise error when it is not a directory" do
         | 
| 149 | 
            +
                    File.expects( :directory? ).with( @path ).returns( false )
         | 
| 150 | 
            +
                    File.expects( :exists? ).with( @path ).returns( true )
         | 
| 151 | 
            +
                    lambda { @installer.check_path!( @path ) }.should raise_error( Sandbox::Error )
         | 
| 152 | 
            +
                  end
         | 
| 153 | 
            +
                  
         | 
| 154 | 
            +
                  it "should return false when it doesn't exist" do
         | 
| 155 | 
            +
                    File.expects( :directory? ).with( @path ).returns( false )
         | 
| 156 | 
            +
                    File.expects( :exists? ).with( @path ).returns( false )
         | 
| 157 | 
            +
                    @installer.check_path!( @path ).should be_false
         | 
| 158 | 
            +
                  end
         | 
| 159 | 
            +
                  
         | 
| 160 | 
            +
                  it "should return true when it can be created" do
         | 
| 161 | 
            +
                    File.expects( :directory? ).with( @path ).returns( true )
         | 
| 162 | 
            +
                    File.expects( :writable? ).with( @path ).returns( true )
         | 
| 163 | 
            +
                    @installer.check_path!( @path ).should == true
         | 
| 164 | 
            +
                  end
         | 
| 165 | 
            +
                end
         | 
| 166 | 
            +
             | 
| 167 | 
            +
                # fix_path( path )
         | 
| 168 | 
            +
                describe "when fix_path called" do
         | 
| 169 | 
            +
                  it "should not change absolute path" do
         | 
| 170 | 
            +
                    path = '/absolute/path/to/target'
         | 
| 171 | 
            +
                    @installer = Sandbox::Installer.new
         | 
| 172 | 
            +
                    @installer.fix_path( path ).should == path
         | 
| 173 | 
            +
                  end
         | 
| 174 | 
            +
                  
         | 
| 175 | 
            +
                  it "should make relative into absolute path" do
         | 
| 176 | 
            +
                    abs_path = '/absolute/working/directory'
         | 
| 177 | 
            +
                    path = 'relative/path/to/target'
         | 
| 178 | 
            +
                    FileUtils.expects( :pwd ).returns( abs_path )
         | 
| 179 | 
            +
                    @installer = Sandbox::Installer.new
         | 
| 180 | 
            +
                    @installer.fix_path( path ).should == abs_path + '/' + path
         | 
| 181 | 
            +
                  end
         | 
| 182 | 
            +
                end
         | 
| 183 | 
            +
              end
         | 
| 184 | 
            +
            end
         | 
| 185 | 
            +
             | 
| 186 | 
            +
            describe Sandbox::Installer, "(using tmpdir)" do
         | 
| 187 | 
            +
              def tmppath() File.join( Dir.tmpdir, "sandbox_testing" ) end
         | 
| 188 | 
            +
              def rmtmppath() FileUtils.rm_rf( tmppath ) end
         | 
| 189 | 
            +
              def mktmppath() FileUtils.mkdir_p( tmppath ) end
         | 
| 190 | 
            +
             | 
| 191 | 
            +
              def in_dir( dir = tmppath )
         | 
| 192 | 
            +
                old_pwd = Dir.pwd
         | 
| 193 | 
            +
                begin
         | 
| 194 | 
            +
                  Dir.chdir( dir )
         | 
| 195 | 
            +
                  yield
         | 
| 196 | 
            +
                ensure
         | 
| 197 | 
            +
                  Dir.chdir( old_pwd )
         | 
| 198 | 
            +
                end
         | 
| 199 | 
            +
              end
         | 
| 200 | 
            +
              
         | 
| 201 | 
            +
              before( :each ) do
         | 
| 202 | 
            +
                mktmppath
         | 
| 203 | 
            +
              end
         | 
| 204 | 
            +
              
         | 
| 205 | 
            +
              after( :each ) do
         | 
| 206 | 
            +
                rmtmppath
         | 
| 207 | 
            +
              end
         | 
| 208 | 
            +
              
         | 
| 209 | 
            +
              it "should create target directory structure" do
         | 
| 210 | 
            +
                target = tmppath + '/target'
         | 
| 211 | 
            +
                @installer = Sandbox::Installer.new( :target => target )
         | 
| 212 | 
            +
                @installer.create_directories
         | 
| 213 | 
            +
                File.directory?( target + '/rubygems/bin' ).should be_true
         | 
| 214 | 
            +
                File.symlink?( target + '/bin' ).should be_true
         | 
| 215 | 
            +
              end
         | 
| 216 | 
            +
            end
         | 
| 217 | 
            +
             | 
| 218 | 
            +
             | 
| 219 | 
            +
              
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            require File.dirname( __FILE__ ) + '/spec_helper.rb'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Sandbox do
         | 
| 5 | 
            +
              before( :each ) do
         | 
| 6 | 
            +
                Sandbox.instance_eval { instance_variables.each { |v| remove_instance_variable v } }
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
              
         | 
| 9 | 
            +
              it "should have verbosity level" do
         | 
| 10 | 
            +
                Sandbox.verbosity.should == 0
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
              
         | 
| 13 | 
            +
              it "should increase verbosity level" do
         | 
| 14 | 
            +
                Sandbox.verbosity.should == 0
         | 
| 15 | 
            +
                Sandbox.increase_verbosity
         | 
| 16 | 
            +
                Sandbox.verbosity.should == 1
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
              
         | 
| 19 | 
            +
              it "should decrease verbosity level" do
         | 
| 20 | 
            +
                Sandbox.verbosity.should == 0
         | 
| 21 | 
            +
                Sandbox.decrease_verbosity
         | 
| 22 | 
            +
                Sandbox.verbosity.should == -1
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| 25 | 
            +
             | 
    
        data/spec/spec.opts
    ADDED
    
    
    
        data/spec/spec_helper.rb
    ADDED
    
    | @@ -0,0 +1,63 @@ | |
| 1 | 
            +
            # begin
         | 
| 2 | 
            +
            #   require 'spec'
         | 
| 3 | 
            +
            # rescue LoadError
         | 
| 4 | 
            +
            #   require 'rubygems'
         | 
| 5 | 
            +
            #   # gem 'rspec'
         | 
| 6 | 
            +
            #   require 'spec'
         | 
| 7 | 
            +
            # end
         | 
| 8 | 
            +
            # 
         | 
| 9 | 
            +
            # $:.unshift( File.dirname( __FILE__ ) + '/../lib' )
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            $:.unshift( File.dirname( __FILE__ ) + '/../lib' )
         | 
| 12 | 
            +
            require 'rubygems'
         | 
| 13 | 
            +
            require 'mocha'
         | 
| 14 | 
            +
            require 'spec'
         | 
| 15 | 
            +
            require 'stringio'
         | 
| 16 | 
            +
            require 'ostruct'
         | 
| 17 | 
            +
            require 'tempfile'
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            require 'sandbox'
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            Spec::Runner.configure do |config|
         | 
| 22 | 
            +
              # == Mock Framework
         | 
| 23 | 
            +
              # RSpec uses it's own mocking framework by default. If you prefer to
         | 
| 24 | 
            +
              # use mocha, flexmock or RR, uncomment the appropriate line:
         | 
| 25 | 
            +
              config.mock_with :mocha
         | 
| 26 | 
            +
              # config.mock_with :flexmock
         | 
| 27 | 
            +
              # config.mock_with :rr
         | 
| 28 | 
            +
              
         | 
| 29 | 
            +
              def capture
         | 
| 30 | 
            +
                results = OpenStruct.new
         | 
| 31 | 
            +
                
         | 
| 32 | 
            +
                begin
         | 
| 33 | 
            +
                  $stdout = StringIO.new
         | 
| 34 | 
            +
                  $stderr = StringIO.new
         | 
| 35 | 
            +
                  yield
         | 
| 36 | 
            +
                  results.stdout = $stdout.string
         | 
| 37 | 
            +
                  results.stderr = $stderr.string
         | 
| 38 | 
            +
                ensure
         | 
| 39 | 
            +
                  $stdout = STDOUT
         | 
| 40 | 
            +
                  $stderr = STDERR
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
             
         | 
| 43 | 
            +
                return results
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
              
         | 
| 46 | 
            +
              alias silence capture
         | 
| 47 | 
            +
              
         | 
| 48 | 
            +
            end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
             | 
| 51 | 
            +
            ## thanks to Jay Fields (http://blog.jayfields.com/2007/11/ruby-testing-private-methods.html)
         | 
| 52 | 
            +
            class Class
         | 
| 53 | 
            +
              def publicize_methods
         | 
| 54 | 
            +
                saved_private_instance_methods = self.private_instance_methods
         | 
| 55 | 
            +
                begin
         | 
| 56 | 
            +
                  self.class_eval { public *saved_private_instance_methods }
         | 
| 57 | 
            +
                  yield
         | 
| 58 | 
            +
                ensure
         | 
| 59 | 
            +
                  self.class_eval { private *saved_private_instance_methods }
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
            end
         | 
| 63 | 
            +
             | 
    
        data/tasks/cucumber.rake
    ADDED
    
    | @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            begin
         | 
| 2 | 
            +
              require 'cucumber'
         | 
| 3 | 
            +
            rescue LoadError
         | 
| 4 | 
            +
              require 'rubygems'
         | 
| 5 | 
            +
              require 'cucumber'
         | 
| 6 | 
            +
            end
         | 
| 7 | 
            +
            begin
         | 
| 8 | 
            +
              require 'cucumber/rake/task'
         | 
| 9 | 
            +
            rescue LoadError
         | 
| 10 | 
            +
              puts <<-EOS
         | 
| 11 | 
            +
            To use cucumber for testing you must install cucumber gem:
         | 
| 12 | 
            +
                gem install cucumber
         | 
| 13 | 
            +
            EOS
         | 
| 14 | 
            +
              exit( 0 )
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             
         | 
| 17 | 
            +
            # Try these:
         | 
| 18 | 
            +
            #
         | 
| 19 | 
            +
            # rake features
         | 
| 20 | 
            +
            # rake features PROFILE=html
         | 
| 21 | 
            +
            Cucumber::Rake::Task.new do |t|
         | 
| 22 | 
            +
              # profile         = ENV[ 'PROFILE' ] || 'default'
         | 
| 23 | 
            +
              # t.cucumber_opts = "--profile #{profile}"
         | 
| 24 | 
            +
              t.cucumber_opts = "--format pretty"
         | 
| 25 | 
            +
            end
         | 
    
        data/tasks/dcov.rake
    ADDED
    
    | @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            begin
         | 
| 2 | 
            +
              require 'dcov'
         | 
| 3 | 
            +
            rescue LoadError
         | 
| 4 | 
            +
              require 'rubygems'
         | 
| 5 | 
            +
              begin
         | 
| 6 | 
            +
                require 'dcov'
         | 
| 7 | 
            +
              rescue LoadError
         | 
| 8 | 
            +
                puts <<-EOS
         | 
| 9 | 
            +
            To generate documentation coverage with dcov you must install dcov gem:
         | 
| 10 | 
            +
                gem install dcov
         | 
| 11 | 
            +
            EOS
         | 
| 12 | 
            +
                exit( 0 )
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            desc "Generate coverage report for lib directory"
         | 
| 17 | 
            +
            task :dcov do
         | 
| 18 | 
            +
              root      = Dir.pwd
         | 
| 19 | 
            +
              dcov_dir  = File.join( root, 'coverage' )
         | 
| 20 | 
            +
              lib_dir   = File.join( root, 'lib' )
         | 
| 21 | 
            +
              
         | 
| 22 | 
            +
              unless File.directory?( lib_dir )
         | 
| 23 | 
            +
                puts "Aborting: please run from the root of the project"
         | 
| 24 | 
            +
                exit( 0 )
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
              
         | 
| 27 | 
            +
              # files     = Dir[ File.join( lib_dir, '**', '*.rb' ) ]
         | 
| 28 | 
            +
              options   = {
         | 
| 29 | 
            +
                :path => dcov_dir,
         | 
| 30 | 
            +
                :output_format => 'html',
         | 
| 31 | 
            +
                :files => lib_dir
         | 
| 32 | 
            +
                # :files => files
         | 
| 33 | 
            +
              }
         | 
| 34 | 
            +
              
         | 
| 35 | 
            +
              Dir.mkdir( dcov_dir ) unless File.directory?( dcov_dir )
         | 
| 36 | 
            +
              Dcov::Analyzer.new( options )
         | 
| 37 | 
            +
            end
         | 
    
        data/tasks/gem.rake
    ADDED
    
    
    
        data/tasks/rspec.rake
    ADDED
    
    | @@ -0,0 +1,51 @@ | |
| 1 | 
            +
            begin
         | 
| 2 | 
            +
              require 'spec'
         | 
| 3 | 
            +
            rescue LoadError
         | 
| 4 | 
            +
              require 'rubygems'
         | 
| 5 | 
            +
              require 'spec'
         | 
| 6 | 
            +
            end
         | 
| 7 | 
            +
            begin
         | 
| 8 | 
            +
              require 'spec/rake/spectask'
         | 
| 9 | 
            +
            rescue LoadError
         | 
| 10 | 
            +
              puts <<-EOS
         | 
| 11 | 
            +
            To use rspec for testing you must install rspec gem:
         | 
| 12 | 
            +
                gem install rspec
         | 
| 13 | 
            +
            EOS
         | 
| 14 | 
            +
              exit(0)
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            desc "Run all the specs in spec directory"
         | 
| 18 | 
            +
            Spec::Rake::SpecTask.new( :spec ) do |t|
         | 
| 19 | 
            +
              t.spec_opts = [ '--options', "spec/spec.opts" ]
         | 
| 20 | 
            +
              t.spec_files = FileList[ 'spec/**/*_spec.rb' ]
         | 
| 21 | 
            +
            end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            namespace :spec do
         | 
| 24 | 
            +
              desc "Run all specs in spec directory with RCov"
         | 
| 25 | 
            +
              Spec::Rake::SpecTask.new( :rcov ) do |t|
         | 
| 26 | 
            +
                t.spec_opts = [ '--options', "spec/spec.opts" ]
         | 
| 27 | 
            +
                t.spec_files = FileList[ 'spec/**/*_spec.rb' ]
         | 
| 28 | 
            +
                t.rcov = true
         | 
| 29 | 
            +
                # t.rcov_opts = [ '--exclude', "spec/*" ]
         | 
| 30 | 
            +
                t.rcov_opts = [ '--exclude', "spec" ]
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              desc "Print Specdoc for all specs in spec directory"
         | 
| 34 | 
            +
              Spec::Rake::SpecTask.new( :doc ) do |t|
         | 
| 35 | 
            +
                t.spec_opts = [ "--format", "specdoc", "--dry-run" ]
         | 
| 36 | 
            +
                # t.spec_opts = [ "--format", "specdoc" ]
         | 
| 37 | 
            +
                t.spec_files = FileList[ 'spec/**/*_spec.rb' ]
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
              
         | 
| 40 | 
            +
              desc "Run all the specs in spec directory individually"
         | 
| 41 | 
            +
              task :deps do
         | 
| 42 | 
            +
                individual_specs = Dir["spec/**/*_spec.rb"]
         | 
| 43 | 
            +
                individual_specs.each do |single_spec|
         | 
| 44 | 
            +
                  if not system "spec #{single_spec} --options spec/spec.opts &> /dev/null"
         | 
| 45 | 
            +
                    puts "Dependency Issues: #{single_spec}"
         | 
| 46 | 
            +
                  else
         | 
| 47 | 
            +
                    puts "OK: #{single_spec}"
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
              end
         | 
| 51 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,130 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification 
         | 
| 2 | 
            +
            name: nkryptic-sandbox
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors: 
         | 
| 7 | 
            +
            - Jacob Radford
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            date: 2008-12-01 00:00:00 -08:00
         | 
| 13 | 
            +
            default_executable: sandbox
         | 
| 14 | 
            +
            dependencies: 
         | 
| 15 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 16 | 
            +
              name: echoe
         | 
| 17 | 
            +
              version_requirement: 
         | 
| 18 | 
            +
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 19 | 
            +
                requirements: 
         | 
| 20 | 
            +
                - - ~>
         | 
| 21 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 22 | 
            +
                    version: "0"
         | 
| 23 | 
            +
                - - "="
         | 
| 24 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 25 | 
            +
                    version: "3.0"
         | 
| 26 | 
            +
                version: 
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 28 | 
            +
              name: rspec
         | 
| 29 | 
            +
              version_requirement: 
         | 
| 30 | 
            +
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 31 | 
            +
                requirements: 
         | 
| 32 | 
            +
                - - ~>
         | 
| 33 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 34 | 
            +
                    version: "0"
         | 
| 35 | 
            +
                - - "="
         | 
| 36 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 37 | 
            +
                    version: 1.1.0
         | 
| 38 | 
            +
                version: 
         | 
| 39 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 40 | 
            +
              name: mocha
         | 
| 41 | 
            +
              version_requirement: 
         | 
| 42 | 
            +
              version_requirements: !ruby/object:Gem::Requirement 
         | 
| 43 | 
            +
                requirements: 
         | 
| 44 | 
            +
                - - ~>
         | 
| 45 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 46 | 
            +
                    version: "0"
         | 
| 47 | 
            +
                - - "="
         | 
| 48 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 49 | 
            +
                    version: "0.9"
         | 
| 50 | 
            +
                version: 
         | 
| 51 | 
            +
            description: Create virtual ruby/rubygems sandboxes.
         | 
| 52 | 
            +
            email: nkryptic@gmail.com
         | 
| 53 | 
            +
            executables: 
         | 
| 54 | 
            +
            - sandbox
         | 
| 55 | 
            +
            extensions: []
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            extra_rdoc_files: 
         | 
| 58 | 
            +
            - CHANGELOG
         | 
| 59 | 
            +
            - TODO
         | 
| 60 | 
            +
            - README.rdoc
         | 
| 61 | 
            +
            - tasks/rspec.rake
         | 
| 62 | 
            +
            - tasks/cucumber.rake
         | 
| 63 | 
            +
            - tasks/gem.rake
         | 
| 64 | 
            +
            - tasks/dcov.rake
         | 
| 65 | 
            +
            - lib/sandbox.rb
         | 
| 66 | 
            +
            - lib/sandbox/installer.rb
         | 
| 67 | 
            +
            - lib/sandbox/cli.rb
         | 
| 68 | 
            +
            - lib/sandbox/templates/activate_sandbox.erb
         | 
| 69 | 
            +
            - lib/sandbox/version.rb
         | 
| 70 | 
            +
            - lib/sandbox/errors.rb
         | 
| 71 | 
            +
            - bin/sandbox
         | 
| 72 | 
            +
            files: 
         | 
| 73 | 
            +
            - sandbox.gemspec
         | 
| 74 | 
            +
            - CHANGELOG
         | 
| 75 | 
            +
            - TODO
         | 
| 76 | 
            +
            - spec/sandbox/cli_spec.rb
         | 
| 77 | 
            +
            - spec/sandbox/installer_spec.rb
         | 
| 78 | 
            +
            - spec/sandbox_spec.rb
         | 
| 79 | 
            +
            - spec/spec.opts
         | 
| 80 | 
            +
            - spec/spec_helper.rb
         | 
| 81 | 
            +
            - Manifest
         | 
| 82 | 
            +
            - features/steps/common.rb
         | 
| 83 | 
            +
            - features/steps/env.rb
         | 
| 84 | 
            +
            - features/development.feature
         | 
| 85 | 
            +
            - README.rdoc
         | 
| 86 | 
            +
            - tasks/rspec.rake
         | 
| 87 | 
            +
            - tasks/cucumber.rake
         | 
| 88 | 
            +
            - tasks/gem.rake
         | 
| 89 | 
            +
            - tasks/dcov.rake
         | 
| 90 | 
            +
            - Rakefile
         | 
| 91 | 
            +
            - lib/sandbox.rb
         | 
| 92 | 
            +
            - lib/sandbox/installer.rb
         | 
| 93 | 
            +
            - lib/sandbox/cli.rb
         | 
| 94 | 
            +
            - lib/sandbox/templates/activate_sandbox.erb
         | 
| 95 | 
            +
            - lib/sandbox/version.rb
         | 
| 96 | 
            +
            - lib/sandbox/errors.rb
         | 
| 97 | 
            +
            - bin/sandbox
         | 
| 98 | 
            +
            has_rdoc: true
         | 
| 99 | 
            +
            homepage: http://github.com/nkryptic/sandbox
         | 
| 100 | 
            +
            post_install_message: 
         | 
| 101 | 
            +
            rdoc_options: 
         | 
| 102 | 
            +
            - --line-numbers
         | 
| 103 | 
            +
            - --inline-source
         | 
| 104 | 
            +
            - --title
         | 
| 105 | 
            +
            - Sandbox
         | 
| 106 | 
            +
            - --main
         | 
| 107 | 
            +
            - README.rdoc
         | 
| 108 | 
            +
            require_paths: 
         | 
| 109 | 
            +
            - lib
         | 
| 110 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 111 | 
            +
              requirements: 
         | 
| 112 | 
            +
              - - ">="
         | 
| 113 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 114 | 
            +
                  version: "0"
         | 
| 115 | 
            +
              version: 
         | 
| 116 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 117 | 
            +
              requirements: 
         | 
| 118 | 
            +
              - - ">="
         | 
| 119 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 120 | 
            +
                  version: "1.2"
         | 
| 121 | 
            +
              version: 
         | 
| 122 | 
            +
            requirements: []
         | 
| 123 | 
            +
             | 
| 124 | 
            +
            rubyforge_project: sandbox
         | 
| 125 | 
            +
            rubygems_version: 1.2.0
         | 
| 126 | 
            +
            signing_key: 
         | 
| 127 | 
            +
            specification_version: 2
         | 
| 128 | 
            +
            summary: Create virtual ruby/rubygems sandboxes.
         | 
| 129 | 
            +
            test_files: []
         | 
| 130 | 
            +
             |