nkryptic-sandbox 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +8 -11
- data/Rakefile +1 -1
- data/TODO +0 -4
- data/lib/sandbox.rb +2 -1
- data/lib/sandbox/cli.rb +14 -12
- data/lib/sandbox/installer.rb +28 -5
- data/lib/sandbox/output.rb +26 -0
- data/lib/sandbox/templates/gemrc.erb +10 -0
- data/lib/sandbox/version.rb +1 -1
- data/sandbox.gemspec +4 -4
- data/spec/sandbox/cli_spec.rb +10 -10
- data/spec/sandbox/installer_spec.rb +37 -4
- data/spec/sandbox/output_spec.rb +146 -0
- data/tasks/cucumber.rake +9 -16
- data/tasks/dcov.rake +26 -29
- data/tasks/rspec.rake +35 -40
- metadata +7 -2
data/README.rdoc
CHANGED
@@ -44,31 +44,28 @@ should be reset when you deactivate the sandbox.
|
|
44
44
|
|
45
45
|
== USAGE:
|
46
46
|
|
47
|
-
Create a new sandbox (
|
47
|
+
Create a new sandbox (verbose output by default):
|
48
48
|
$ cd ~/ruby-projects
|
49
49
|
$ sandbox my-new-sandbox
|
50
|
-
|
51
|
-
Create a new sandbox with output (rake gem installed by default):
|
52
|
-
$ cd ~/ruby-projects
|
53
|
-
$ sandbox my-new-sandbox -v
|
54
50
|
creating new sandbox in /home/nkryptic/ruby-projects/my-new-sandbox
|
51
|
+
installing activation script
|
52
|
+
installing .gemrc
|
55
53
|
installing gems:
|
56
|
-
|
54
|
+
nothing to do
|
57
55
|
|
58
|
-
Create a new sandbox with no
|
56
|
+
Create a new sandbox with no output:
|
59
57
|
$ cd ~/ruby-projects
|
60
|
-
$ sandbox my-new-sandbox -
|
61
|
-
creating new sandbox in /home/nkryptic/ruby-projects/my-new-sandbox
|
62
|
-
installing gems:
|
58
|
+
$ sandbox my-new-sandbox -q
|
63
59
|
|
64
60
|
Create a new sandbox with specific gems:
|
65
61
|
$ cd ~/ruby-projects
|
66
62
|
$ sandbox my-new-sandbox -g rake,rails
|
67
63
|
creating new sandbox in /home/nkryptic/ruby-projects/my-new-sandbox
|
64
|
+
installing activation script
|
65
|
+
installing .gemrc
|
68
66
|
installing gems:
|
69
67
|
gem: rake
|
70
68
|
gem: rails
|
71
|
-
gem: rspec
|
72
69
|
|
73
70
|
== FUTURE PLANS:
|
74
71
|
|
data/Rakefile
CHANGED
data/TODO
CHANGED
@@ -1,7 +1,4 @@
|
|
1
1
|
TODO: fix dependencies in rake files
|
2
|
-
TODO: add 'gem: --no-ri --no-rdoc' to .gemrc in new sandbox
|
3
|
-
TODO: do 'gem sources -a http://gems.github.com'
|
4
|
-
TODO: 0 gems initially to be installed
|
5
2
|
TODO: put in timeout when installing gems
|
6
3
|
TODO: check for network connection
|
7
4
|
TODO: perhaps look in installed rubygems cache first
|
@@ -28,7 +25,6 @@ TODO: better documentation
|
|
28
25
|
TODO: improve ui output
|
29
26
|
* use verbosity level
|
30
27
|
* include more messages about status
|
31
|
-
* move to ui class?
|
32
28
|
TODO: user config
|
33
29
|
* set list of ruby variants to query?
|
34
30
|
* list of gems to install
|
data/lib/sandbox.rb
CHANGED
@@ -19,7 +19,7 @@ module Sandbox
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def quiet?() verbosity < 0 end
|
22
|
-
def really_quiet?() verbosity < 1 end
|
22
|
+
def really_quiet?() verbosity < -1 end
|
23
23
|
def verbose?() verbosity > 0 end
|
24
24
|
def really_verbose?() verbosity > 1 end
|
25
25
|
|
@@ -29,5 +29,6 @@ end
|
|
29
29
|
|
30
30
|
require 'sandbox/version'
|
31
31
|
require 'sandbox/errors'
|
32
|
+
require 'sandbox/output'
|
32
33
|
require 'sandbox/installer'
|
33
34
|
|
data/lib/sandbox/cli.rb
CHANGED
@@ -4,9 +4,12 @@ require 'sandbox'
|
|
4
4
|
|
5
5
|
module Sandbox
|
6
6
|
class CLI
|
7
|
+
include Sandbox::Output
|
8
|
+
extend Sandbox::Output
|
7
9
|
|
8
10
|
DEFAULTS = {
|
9
|
-
:gems => [ 'rake', ]
|
11
|
+
# :gems => [ 'rake', ]
|
12
|
+
:gems => []
|
10
13
|
}
|
11
14
|
|
12
15
|
## CLASS METHODS
|
@@ -37,13 +40,12 @@ module Sandbox
|
|
37
40
|
def handle_error( error )
|
38
41
|
case error
|
39
42
|
when Sandbox::Error
|
40
|
-
|
43
|
+
tell_unless_really_quiet( error.message )
|
41
44
|
when StandardError #, Timeout::Error
|
42
|
-
|
43
|
-
|
44
|
-
puts message.join( "\n" )
|
45
|
+
tell_unless_really_quiet( "Error: #{error.message}" )
|
46
|
+
tell_when_really_verbose( error.backtrace.collect { |bt| " #{bt}" }.join( "\n" ) ) if error.backtrace
|
45
47
|
when Interrupt
|
46
|
-
|
48
|
+
tell_unless_really_quiet( "Interrupted" )
|
47
49
|
else
|
48
50
|
raise error
|
49
51
|
end
|
@@ -111,19 +113,19 @@ module Sandbox
|
|
111
113
|
o.separator ""
|
112
114
|
|
113
115
|
o.separator "OPTIONS"
|
114
|
-
o.on( '-g', '--gems gem1,gem2', Array, 'Gems to install after sandbox is created.
|
115
|
-
o.on( '-n', '--no-gems', 'Do not install any gems after sandbox is created.
|
116
|
+
o.on( '-g', '--gems gem1,gem2', Array, 'Gems to install after sandbox is created.' ) { |gems| @options[ :gems ] = gems }
|
117
|
+
o.on( '-n', '--no-gems', 'Do not install any gems after sandbox is created.' ) { @options[ :gems ] = [] }
|
116
118
|
o.on( '-q', '--quiet', 'Show less output. (multiple allowed)' ) { |f| Sandbox.decrease_verbosity }
|
117
119
|
o.on( '-v', '--verbose', 'Show more output. (multiple allowed)' ) { |f| Sandbox.increase_verbosity }
|
118
|
-
o.on_tail( '-h', '--help', 'Show this help message and exit.' ) {
|
119
|
-
o.on_tail( '-H', '--long-help', 'Show the full description about the program' ) {
|
120
|
-
o.on_tail( '-V', '--version', 'Display the program version and exit.' ) {
|
120
|
+
o.on_tail( '-h', '--help', 'Show this help message and exit.' ) { tell_unless_really_quiet( o ); exit }
|
121
|
+
o.on_tail( '-H', '--long-help', 'Show the full description about the program' ) { tell_unless_really_quiet( long_help ); exit }
|
122
|
+
o.on_tail( '-V', '--version', 'Display the program version and exit.' ) { tell_unless_really_quiet( Sandbox::Version::STRING ); exit }
|
121
123
|
o.separator ""
|
122
124
|
end
|
123
125
|
end
|
124
126
|
|
125
127
|
# def show_help
|
126
|
-
#
|
128
|
+
# tell( parser )
|
127
129
|
# end
|
128
130
|
|
129
131
|
def long_help
|
data/lib/sandbox/installer.rb
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
|
2
2
|
require 'fileutils'
|
3
|
+
# require 'ping'
|
4
|
+
# require 'timeout'
|
3
5
|
require 'erb'
|
4
6
|
|
5
7
|
module Sandbox
|
6
8
|
|
7
9
|
class Installer
|
10
|
+
include Sandbox::Output
|
11
|
+
extend Sandbox::Output
|
8
12
|
|
9
13
|
## CLASS METHODS
|
10
14
|
class << self
|
@@ -27,9 +31,13 @@ module Sandbox
|
|
27
31
|
end
|
28
32
|
|
29
33
|
def populate
|
30
|
-
|
34
|
+
tell( "creating sandbox at: #{target}" )
|
31
35
|
create_directories
|
36
|
+
tell( "installing activation script" )
|
32
37
|
install_scripts
|
38
|
+
tell( "installing .gemrc" )
|
39
|
+
install_gemrc
|
40
|
+
tell( "installing gems" )
|
33
41
|
install_gems
|
34
42
|
end
|
35
43
|
|
@@ -48,6 +56,16 @@ module Sandbox
|
|
48
56
|
FileUtils.ln_s( gembin, bin )
|
49
57
|
end
|
50
58
|
|
59
|
+
def install_gemrc
|
60
|
+
filename = File.join( target, '.gemrc' )
|
61
|
+
template = File.read( File.dirname( __FILE__ ) + '/templates/gemrc.erb' )
|
62
|
+
script = ERB.new( template )
|
63
|
+
output = script.result( binding )
|
64
|
+
File.open( filename, 'w' ) do |f|
|
65
|
+
f.write output
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
51
69
|
def install_scripts
|
52
70
|
filename = File.join( target, 'bin', 'activate_sandbox' )
|
53
71
|
template = File.read( File.dirname( __FILE__ ) + '/templates/activate_sandbox.erb' )
|
@@ -61,16 +79,21 @@ module Sandbox
|
|
61
79
|
def install_gems
|
62
80
|
# gem = `which gem`.chomp
|
63
81
|
# return if gem.empty?
|
64
|
-
|
82
|
+
gems = options[ :gems ] || []
|
83
|
+
if gems.size == 0
|
84
|
+
tell( " nothing to install" )
|
85
|
+
return
|
86
|
+
end
|
87
|
+
|
65
88
|
begin
|
66
89
|
setup_sandbox_env
|
67
|
-
|
68
|
-
|
90
|
+
gems.each do |gem|
|
91
|
+
tell_unless_really_quiet( " gem: #{gem}" )
|
69
92
|
cmd = "gem install #{gem}"
|
70
93
|
# cmd = cmd + ' -V' if Sandbox.really_verbose?
|
71
94
|
status, output = shell_out( cmd )
|
72
95
|
unless status
|
73
|
-
|
96
|
+
tell_unless_really_quiet( " failed to install gem: #{gem}" )
|
74
97
|
end
|
75
98
|
end
|
76
99
|
ensure
|
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
module Sandbox
|
3
|
+
module Output
|
4
|
+
|
5
|
+
def tell( msg )
|
6
|
+
tell_unless_quiet( msg )
|
7
|
+
end
|
8
|
+
|
9
|
+
def tell_when_verbose( msg )
|
10
|
+
puts msg if Sandbox.verbose?
|
11
|
+
end
|
12
|
+
|
13
|
+
def tell_when_really_verbose( msg )
|
14
|
+
puts msg if Sandbox.really_verbose?
|
15
|
+
end
|
16
|
+
|
17
|
+
def tell_unless_quiet( msg )
|
18
|
+
puts msg unless Sandbox.quiet?
|
19
|
+
end
|
20
|
+
|
21
|
+
def tell_unless_really_quiet( msg )
|
22
|
+
puts msg unless Sandbox.really_quiet?
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
data/lib/sandbox/version.rb
CHANGED
data/sandbox.gemspec
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{sandbox}
|
5
|
-
s.version = "0.2.
|
5
|
+
s.version = "0.2.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Jacob Radford"]
|
9
|
-
s.date = %q{2008-12-
|
9
|
+
s.date = %q{2008-12-07}
|
10
10
|
s.default_executable = %q{sandbox}
|
11
11
|
s.description = %q{Create virtual ruby/rubygems sandboxes.}
|
12
12
|
s.email = %q{nkryptic@gmail.com}
|
13
13
|
s.executables = ["sandbox"]
|
14
|
-
s.extra_rdoc_files = ["CHANGELOG", "TODO", "README.rdoc", "tasks/rspec.rake", "tasks/cucumber.rake", "tasks/gem.rake", "tasks/dcov.rake", "lib/sandbox.rb", "lib/sandbox/installer.rb", "lib/sandbox/cli.rb", "lib/sandbox/templates/activate_sandbox.erb", "lib/sandbox/version.rb", "lib/sandbox/errors.rb", "bin/sandbox"]
|
15
|
-
s.files = ["sandbox.gemspec", "CHANGELOG", "TODO", "spec/sandbox/errors_spec.rb", "spec/sandbox/cli_spec.rb", "spec/sandbox/installer_spec.rb", "spec/sandbox_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "Manifest", "features/steps/common.rb", "features/steps/env.rb", "features/development.feature", "README.rdoc", "tasks/rspec.rake", "tasks/cucumber.rake", "tasks/gem.rake", "tasks/dcov.rake", "Rakefile", "lib/sandbox.rb", "lib/sandbox/installer.rb", "lib/sandbox/cli.rb", "lib/sandbox/templates/activate_sandbox.erb", "lib/sandbox/version.rb", "lib/sandbox/errors.rb", "bin/sandbox"]
|
14
|
+
s.extra_rdoc_files = ["CHANGELOG", "TODO", "README.rdoc", "tasks/rspec.rake", "tasks/cucumber.rake", "tasks/gem.rake", "tasks/dcov.rake", "lib/sandbox.rb", "lib/sandbox/installer.rb", "lib/sandbox/cli.rb", "lib/sandbox/templates/gemrc.erb", "lib/sandbox/templates/activate_sandbox.erb", "lib/sandbox/version.rb", "lib/sandbox/errors.rb", "lib/sandbox/output.rb", "bin/sandbox"]
|
15
|
+
s.files = ["sandbox.gemspec", "CHANGELOG", "TODO", "spec/sandbox/errors_spec.rb", "spec/sandbox/cli_spec.rb", "spec/sandbox/output_spec.rb", "spec/sandbox/installer_spec.rb", "spec/sandbox_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "Manifest", "features/steps/common.rb", "features/steps/env.rb", "features/development.feature", "README.rdoc", "tasks/rspec.rake", "tasks/cucumber.rake", "tasks/gem.rake", "tasks/dcov.rake", "Rakefile", "lib/sandbox.rb", "lib/sandbox/installer.rb", "lib/sandbox/cli.rb", "lib/sandbox/templates/gemrc.erb", "lib/sandbox/templates/activate_sandbox.erb", "lib/sandbox/version.rb", "lib/sandbox/errors.rb", "lib/sandbox/output.rb", "bin/sandbox"]
|
16
16
|
s.has_rdoc = true
|
17
17
|
s.homepage = %q{http://github.com/nkryptic/sandbox}
|
18
18
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Sandbox", "--main", "README.rdoc"]
|
data/spec/sandbox/cli_spec.rb
CHANGED
@@ -50,19 +50,19 @@ describe Sandbox::CLI do
|
|
50
50
|
describe "handling errors" do
|
51
51
|
it "should just print Sandbox::Error message" do
|
52
52
|
err = Sandbox::Error.new( "spec test msg" )
|
53
|
-
Sandbox::CLI.expects( :
|
53
|
+
Sandbox::CLI.expects( :tell_unless_really_quiet ).once.with( regexp_matches( /^Sandbox error: spec test msg/ ) )
|
54
54
|
Sandbox::CLI.handle_error( err )
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should just print wrapped StandardError message" do
|
58
58
|
err = StandardError.new( "spec test msg" )
|
59
|
-
Sandbox::CLI.expects( :
|
59
|
+
Sandbox::CLI.expects( :tell_unless_really_quiet ).once.with( regexp_matches( /^Error: spec test msg/ ) )
|
60
60
|
Sandbox::CLI.handle_error( err )
|
61
61
|
end
|
62
62
|
|
63
63
|
it "should have simple message for Interrupt" do
|
64
64
|
err = Interrupt.new( "spec test msg" )
|
65
|
-
Sandbox::CLI.expects( :
|
65
|
+
Sandbox::CLI.expects( :tell_unless_really_quiet ).once.with( 'Interrupted' )
|
66
66
|
Sandbox::CLI.handle_error( err )
|
67
67
|
end
|
68
68
|
|
@@ -79,8 +79,8 @@ describe Sandbox::CLI do
|
|
79
79
|
@cli = Sandbox::CLI.new
|
80
80
|
end
|
81
81
|
|
82
|
-
it "should have default 'gems to install'" do
|
83
|
-
@cli.options[ :gems ]
|
82
|
+
it "should have no default 'gems to install'" do
|
83
|
+
@cli.options[ :gems ].should == []
|
84
84
|
end
|
85
85
|
|
86
86
|
describe "instance calling parse_args!" do
|
@@ -98,7 +98,7 @@ describe Sandbox::CLI do
|
|
98
98
|
describe "using VALID arguments" do
|
99
99
|
[ '-V', '--version' ].each do |arg|
|
100
100
|
it "should print the version for switch '#{arg}'" do
|
101
|
-
@cli.expects( :
|
101
|
+
@cli.expects( :tell_unless_really_quiet ).with( Sandbox::Version::STRING )
|
102
102
|
processor( arg ).should raise_error( SystemExit ) { |error| error.status.should == 0 }
|
103
103
|
end
|
104
104
|
end
|
@@ -106,7 +106,7 @@ describe Sandbox::CLI do
|
|
106
106
|
[ '-V', '--version' ].each do |arg|
|
107
107
|
it "should ignore additional arguments after '#{arg}'" do
|
108
108
|
# @cli.stubs(:puts)
|
109
|
-
@cli.expects( :
|
109
|
+
@cli.expects( :tell_unless_really_quiet ).with( Sandbox::Version::STRING ).times(2)
|
110
110
|
processor( arg, '-x' ).should raise_error( SystemExit ) { |error| error.status.should == 0 }
|
111
111
|
processor( arg, 'unknown' ).should raise_error( SystemExit ) { |error| error.status.should == 0 }
|
112
112
|
end
|
@@ -114,14 +114,14 @@ describe Sandbox::CLI do
|
|
114
114
|
|
115
115
|
[ '-h', '--help' ].each do |arg|
|
116
116
|
it "should show help for '#{arg}'" do
|
117
|
-
@cli.expects( :
|
117
|
+
@cli.expects( :tell_unless_really_quiet ).with( instance_of( OptionParser ) )
|
118
118
|
processor( arg ).should raise_error( SystemExit ) { |error| error.status.should == 0 }
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
122
122
|
[ '-h', '--help' ].each do |arg|
|
123
123
|
it "should ignore additional arguments after '#{arg}'" do
|
124
|
-
@cli.expects( :
|
124
|
+
@cli.expects( :tell_unless_really_quiet ).with( instance_of( OptionParser ) ).times(2)
|
125
125
|
processor( arg, '-x' ).should raise_error( SystemExit ) { |error| error.status.should == 0 }
|
126
126
|
processor( arg, 'unknown' ).should raise_error( SystemExit ) { |error| error.status.should == 0 }
|
127
127
|
end
|
@@ -129,7 +129,7 @@ describe Sandbox::CLI do
|
|
129
129
|
|
130
130
|
[ '-H', '--long-help' ].each do |arg|
|
131
131
|
it "should show long help for '#{arg}'" do
|
132
|
-
@cli.expects( :
|
132
|
+
@cli.expects( :tell_unless_really_quiet )
|
133
133
|
@cli.expects( :long_help )
|
134
134
|
processor( arg ).should raise_error( SystemExit ) { |error| error.status.should == 0 }
|
135
135
|
end
|
@@ -34,8 +34,11 @@ describe Sandbox::Installer, "(mocked)" do
|
|
34
34
|
describe "when populate called" do
|
35
35
|
it "should call all steps of populate process" do
|
36
36
|
@installer = Sandbox::Installer.new
|
37
|
+
@installer.stubs( :tell )
|
38
|
+
@installer.stubs( :target ).returns( '/tmp/sandbox' )
|
37
39
|
@installer.expects( :create_directories )
|
38
40
|
@installer.expects( :install_scripts )
|
41
|
+
@installer.expects( :install_gemrc )
|
39
42
|
@installer.expects( :install_gems )
|
40
43
|
@installer.populate
|
41
44
|
end
|
@@ -83,6 +86,29 @@ describe Sandbox::Installer, "(mocked)" do
|
|
83
86
|
file.string.should == @path
|
84
87
|
end
|
85
88
|
end
|
89
|
+
|
90
|
+
# install_gemrc
|
91
|
+
describe "when install_gemrc called" do
|
92
|
+
before( :each ) do
|
93
|
+
@path = '/some/new/target'
|
94
|
+
@installer = Sandbox::Installer.new
|
95
|
+
@installer.stubs( :target ).returns( @path )
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should read template file" do
|
99
|
+
File.expects( :read ).with( regexp_matches( /templates\/gemrc\.erb/ ) ).returns( '' )
|
100
|
+
File.stubs( :open )
|
101
|
+
@installer.install_gemrc
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should write out gemrc to SANDBOX/.gemrc" do
|
105
|
+
file = StringIO.new
|
106
|
+
File.stubs( :read ).returns( 'gemrc' )
|
107
|
+
File.expects( :open ).with( @path + '/.gemrc', 'w' ).yields( file )
|
108
|
+
@installer.install_gemrc
|
109
|
+
file.string.should == 'gemrc'
|
110
|
+
end
|
111
|
+
end
|
86
112
|
|
87
113
|
# install_gems
|
88
114
|
describe "when install_gems called" do
|
@@ -90,8 +116,15 @@ describe Sandbox::Installer, "(mocked)" do
|
|
90
116
|
@installer = Sandbox::Installer.new( :gems => [ 'mygem' ] )
|
91
117
|
@installer.stubs( :setup_sandbox_env )
|
92
118
|
@installer.stubs( :restore_sandbox_env )
|
119
|
+
@installer.stubs( :tell )
|
120
|
+
@installer.stubs( :tell_unless_really_quiet )
|
93
121
|
end
|
94
122
|
|
123
|
+
# it "should skip install when network is not available" do
|
124
|
+
# Ping.expects( :pingecho ).with( 'gems.rubyforge.org' ).returns( false )
|
125
|
+
# @installer.install_gems.should be_false
|
126
|
+
# end
|
127
|
+
|
95
128
|
it "should install a good gem" do
|
96
129
|
@installer.expects( :shell_out ).with( 'gem install mygem' ).returns( [ true, 'blah' ] )
|
97
130
|
@installer.install_gems
|
@@ -99,7 +132,7 @@ describe Sandbox::Installer, "(mocked)" do
|
|
99
132
|
|
100
133
|
it "should gracefully handle a bad gem" do
|
101
134
|
@installer.expects( :shell_out ).with( 'gem install mygem' ).returns( [ false, 'blah' ] )
|
102
|
-
@installer.expects( :
|
135
|
+
@installer.expects( :tell_unless_really_quiet ).with( regexp_matches( /failed/ ) )
|
103
136
|
@installer.install_gems
|
104
137
|
end
|
105
138
|
end
|
@@ -191,13 +224,13 @@ describe Sandbox::Installer, "(mocked)" do
|
|
191
224
|
describe "when shell_out called" do
|
192
225
|
it "should record true when successful" do
|
193
226
|
@installer = Sandbox::Installer.new
|
194
|
-
result = @installer.shell_out( '
|
227
|
+
result = @installer.shell_out( 'true' )
|
195
228
|
result.first.should be_true
|
196
229
|
end
|
197
230
|
|
198
231
|
it "should record false when unsuccessful" do
|
199
232
|
@installer = Sandbox::Installer.new
|
200
|
-
result = @installer.shell_out( '
|
233
|
+
result = @installer.shell_out( 'false' )
|
201
234
|
result.first.should_not be_true
|
202
235
|
end
|
203
236
|
|
@@ -209,7 +242,7 @@ describe Sandbox::Installer, "(mocked)" do
|
|
209
242
|
|
210
243
|
it "should ignore std error" do
|
211
244
|
@installer = Sandbox::Installer.new
|
212
|
-
result = @installer.shell_out( 'ls -d / 1
|
245
|
+
result = @installer.shell_out( 'ls -d / 1>/dev/null' )
|
213
246
|
result.last.chomp.should == ''
|
214
247
|
end
|
215
248
|
end
|
@@ -0,0 +1,146 @@
|
|
1
|
+
|
2
|
+
require File.dirname( __FILE__ ) + '/../spec_helper.rb'
|
3
|
+
|
4
|
+
describe 'including', Sandbox::Output do
|
5
|
+
class Tester
|
6
|
+
include Sandbox::Output
|
7
|
+
end
|
8
|
+
|
9
|
+
before( :each ) do
|
10
|
+
Sandbox.instance_eval { instance_variables.each { |v| remove_instance_variable v } }
|
11
|
+
@tester = Tester.new
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have tell method" do
|
15
|
+
@tester.should respond_to( :tell )
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have tell_when_verbose method" do
|
19
|
+
@tester.should respond_to( :tell_when_verbose )
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should have tell_when_really_verbose method" do
|
23
|
+
@tester.should respond_to( :tell_when_really_verbose )
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should have tell_unless_quiet method" do
|
27
|
+
@tester.should respond_to( :tell_unless_quiet )
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should have tell_unless_really_quiet method" do
|
31
|
+
@tester.should respond_to( :tell_unless_really_quiet )
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "calling tell" do
|
35
|
+
it "should require message" do
|
36
|
+
lambda { @tester.tell }.should raise_error( ArgumentError )
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should call puts when normal" do
|
40
|
+
@tester.expects( :puts )
|
41
|
+
@tester.tell( "message" )
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should not call puts when below normal verbosity" do
|
45
|
+
Sandbox.decrease_verbosity
|
46
|
+
@tester.expects( :puts ).never
|
47
|
+
@tester.tell( "message" )
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should call puts when above normal verbosity" do
|
51
|
+
Sandbox.increase_verbosity
|
52
|
+
@tester.expects( :puts )
|
53
|
+
@tester.tell( "message" )
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "calling tell_when_verbose" do
|
58
|
+
it "should require message" do
|
59
|
+
lambda { @tester.tell_when_verbose }.should raise_error( ArgumentError )
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should not call puts when normal verbosity" do
|
63
|
+
@tester.expects( :puts ).never
|
64
|
+
@tester.tell_when_verbose( "message" )
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should call puts when above normal verbosity" do
|
68
|
+
Sandbox.increase_verbosity
|
69
|
+
@tester.expects( :puts )
|
70
|
+
@tester.tell_when_verbose( "message" )
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "calling tell_when_really_verbose" do
|
75
|
+
it "should require message" do
|
76
|
+
lambda { @tester.tell_when_really_verbose }.should raise_error( ArgumentError )
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should not call puts when normal verbosity" do
|
80
|
+
@tester.expects( :puts ).never
|
81
|
+
@tester.tell_when_really_verbose( "message" )
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should call puts when above normal verbosity" do
|
85
|
+
Sandbox.increase_verbosity
|
86
|
+
@tester.expects( :puts ).never
|
87
|
+
@tester.tell_when_really_verbose( "message" )
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should call puts when really above normal verbosity" do
|
91
|
+
Sandbox.increase_verbosity
|
92
|
+
Sandbox.increase_verbosity
|
93
|
+
@tester.expects( :puts )
|
94
|
+
@tester.tell_when_really_verbose( "message" )
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe "calling tell_unless_quiet" do
|
99
|
+
it "should require message" do
|
100
|
+
lambda { @tester.tell_unless_quiet }.should raise_error( ArgumentError )
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should call puts when normal" do
|
104
|
+
@tester.expects( :puts )
|
105
|
+
@tester.tell_unless_quiet( "message" )
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should not call puts when below normal verbosity" do
|
109
|
+
Sandbox.decrease_verbosity
|
110
|
+
@tester.expects( :puts ).never
|
111
|
+
@tester.tell_unless_quiet( "message" )
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should call puts when above normal verbosity" do
|
115
|
+
Sandbox.increase_verbosity
|
116
|
+
@tester.expects( :puts )
|
117
|
+
@tester.tell_unless_quiet( "message" )
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
describe "calling tell_unless_really_quiet" do
|
122
|
+
it "should require message" do
|
123
|
+
lambda { @tester.tell_unless_really_quiet }.should raise_error( ArgumentError )
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should call puts when normal" do
|
127
|
+
@tester.expects( :puts )
|
128
|
+
@tester.tell_unless_really_quiet( "message" )
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should call puts when below normal verbosity" do
|
132
|
+
Sandbox.decrease_verbosity
|
133
|
+
@tester.expects( :puts )
|
134
|
+
@tester.tell_unless_really_quiet( "message" )
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should not call puts when really below normal verbosity" do
|
138
|
+
Sandbox.decrease_verbosity
|
139
|
+
Sandbox.decrease_verbosity
|
140
|
+
@tester.expects( :puts ).never
|
141
|
+
@tester.tell_unless_really_quiet( "message" )
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
146
|
+
|
data/tasks/cucumber.rake
CHANGED
@@ -1,25 +1,18 @@
|
|
1
1
|
begin
|
2
2
|
require 'cucumber'
|
3
|
-
rescue LoadError
|
4
|
-
require 'rubygems'
|
5
|
-
require 'cucumber'
|
6
|
-
end
|
7
|
-
begin
|
8
3
|
require 'cucumber/rake/task'
|
4
|
+
# Try these:
|
5
|
+
#
|
6
|
+
# rake features
|
7
|
+
# rake features PROFILE=html
|
8
|
+
Cucumber::Rake::Task.new do |t|
|
9
|
+
# profile = ENV[ 'PROFILE' ] || 'default'
|
10
|
+
# t.cucumber_opts = "--profile #{profile}"
|
11
|
+
t.cucumber_opts = "--format pretty"
|
12
|
+
end
|
9
13
|
rescue LoadError
|
10
14
|
puts <<-EOS
|
11
15
|
To use cucumber for testing you must install cucumber gem:
|
12
16
|
gem install cucumber
|
13
17
|
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
18
|
end
|
data/tasks/dcov.rake
CHANGED
@@ -1,37 +1,34 @@
|
|
1
|
+
|
1
2
|
begin
|
2
3
|
require 'dcov'
|
4
|
+
|
5
|
+
desc "Generate coverage report for lib directory"
|
6
|
+
task :dcov do
|
7
|
+
root = Dir.pwd
|
8
|
+
dcov_dir = File.join( root, 'coverage' )
|
9
|
+
lib_dir = File.join( root, 'lib' )
|
10
|
+
|
11
|
+
unless File.directory?( lib_dir )
|
12
|
+
puts "Aborting: please run from the root of the project"
|
13
|
+
exit( 0 )
|
14
|
+
end
|
15
|
+
|
16
|
+
# files = Dir[ File.join( lib_dir, '**', '*.rb' ) ]
|
17
|
+
options = {
|
18
|
+
:path => dcov_dir,
|
19
|
+
:output_format => 'html',
|
20
|
+
:files => lib_dir
|
21
|
+
# :files => files
|
22
|
+
}
|
23
|
+
|
24
|
+
Dir.mkdir( dcov_dir ) unless File.directory?( dcov_dir )
|
25
|
+
Dcov::Analyzer.new( options )
|
26
|
+
end
|
27
|
+
|
3
28
|
rescue LoadError
|
4
|
-
|
5
|
-
begin
|
6
|
-
require 'dcov'
|
7
|
-
rescue LoadError
|
8
|
-
puts <<-EOS
|
29
|
+
puts <<-EOS
|
9
30
|
To generate documentation coverage with dcov you must install dcov gem:
|
10
31
|
gem install dcov
|
11
32
|
EOS
|
12
|
-
exit( 0 )
|
13
|
-
end
|
14
33
|
end
|
15
34
|
|
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/rspec.rake
CHANGED
@@ -1,51 +1,46 @@
|
|
1
1
|
begin
|
2
2
|
require 'spec'
|
3
|
-
rescue LoadError
|
4
|
-
require 'rubygems'
|
5
|
-
require 'spec'
|
6
|
-
end
|
7
|
-
begin
|
8
3
|
require 'spec/rake/spectask'
|
9
|
-
|
10
|
-
|
11
|
-
|
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|
|
4
|
+
|
5
|
+
desc "Run all the specs in spec directory"
|
6
|
+
Spec::Rake::SpecTask.new( :spec ) do |t|
|
26
7
|
t.spec_opts = [ '--options', "spec/spec.opts" ]
|
27
8
|
t.spec_files = FileList[ 'spec/**/*_spec.rb' ]
|
28
|
-
t.rcov = true
|
29
|
-
# t.rcov_opts = [ '--exclude', "spec/*" ]
|
30
|
-
t.rcov_opts = [ '--exclude', "spec" ]
|
31
9
|
end
|
32
10
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
11
|
+
namespace :spec do
|
12
|
+
desc "Run all specs in spec directory with RCov"
|
13
|
+
Spec::Rake::SpecTask.new( :rcov ) do |t|
|
14
|
+
t.spec_opts = [ '--options', "spec/spec.opts" ]
|
15
|
+
t.spec_files = FileList[ 'spec/**/*_spec.rb' ]
|
16
|
+
t.rcov = true
|
17
|
+
# t.rcov_opts = [ '--exclude', "spec/*" ]
|
18
|
+
t.rcov_opts = [ '--exclude', "spec" ]
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "Print Specdoc for all specs in spec directory"
|
22
|
+
Spec::Rake::SpecTask.new( :doc ) do |t|
|
23
|
+
t.spec_opts = [ "--format", "specdoc", "--dry-run" ]
|
24
|
+
# t.spec_opts = [ "--format", "specdoc" ]
|
25
|
+
t.spec_files = FileList[ 'spec/**/*_spec.rb' ]
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "Run all the specs in spec directory individually"
|
29
|
+
task :deps do
|
30
|
+
individual_specs = Dir["spec/**/*_spec.rb"]
|
31
|
+
individual_specs.each do |single_spec|
|
32
|
+
if not system "spec #{single_spec} --options spec/spec.opts &> /dev/null"
|
33
|
+
puts "Dependency Issues: #{single_spec}"
|
34
|
+
else
|
35
|
+
puts "OK: #{single_spec}"
|
36
|
+
end
|
48
37
|
end
|
49
38
|
end
|
50
39
|
end
|
40
|
+
|
41
|
+
rescue LoadError
|
42
|
+
puts <<-EOS
|
43
|
+
To use rspec for testing you must install rspec gem:
|
44
|
+
gem install rspec
|
45
|
+
EOS
|
51
46
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nkryptic-sandbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacob Radford
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-12-
|
12
|
+
date: 2008-12-07 00:00:00 -08:00
|
13
13
|
default_executable: sandbox
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -30,9 +30,11 @@ extra_rdoc_files:
|
|
30
30
|
- lib/sandbox.rb
|
31
31
|
- lib/sandbox/installer.rb
|
32
32
|
- lib/sandbox/cli.rb
|
33
|
+
- lib/sandbox/templates/gemrc.erb
|
33
34
|
- lib/sandbox/templates/activate_sandbox.erb
|
34
35
|
- lib/sandbox/version.rb
|
35
36
|
- lib/sandbox/errors.rb
|
37
|
+
- lib/sandbox/output.rb
|
36
38
|
- bin/sandbox
|
37
39
|
files:
|
38
40
|
- sandbox.gemspec
|
@@ -40,6 +42,7 @@ files:
|
|
40
42
|
- TODO
|
41
43
|
- spec/sandbox/errors_spec.rb
|
42
44
|
- spec/sandbox/cli_spec.rb
|
45
|
+
- spec/sandbox/output_spec.rb
|
43
46
|
- spec/sandbox/installer_spec.rb
|
44
47
|
- spec/sandbox_spec.rb
|
45
48
|
- spec/spec.opts
|
@@ -57,9 +60,11 @@ files:
|
|
57
60
|
- lib/sandbox.rb
|
58
61
|
- lib/sandbox/installer.rb
|
59
62
|
- lib/sandbox/cli.rb
|
63
|
+
- lib/sandbox/templates/gemrc.erb
|
60
64
|
- lib/sandbox/templates/activate_sandbox.erb
|
61
65
|
- lib/sandbox/version.rb
|
62
66
|
- lib/sandbox/errors.rb
|
67
|
+
- lib/sandbox/output.rb
|
63
68
|
- bin/sandbox
|
64
69
|
has_rdoc: true
|
65
70
|
homepage: http://github.com/nkryptic/sandbox
|