scide 0.0.12 → 0.1.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/.rspec +0 -1
- data/.ruby-version +1 -0
- data/.screenrc +8 -0
- data/.travis.yml +1 -1
- data/Gemfile +10 -11
- data/Gemfile.lock +46 -39
- data/LICENSE.txt +1 -1
- data/README.md +36 -144
- data/Rakefile +19 -26
- data/VERSION +1 -1
- data/bin/scide +1 -2
- data/lib/scide/auto.rb +33 -0
- data/lib/scide/list.rb +33 -0
- data/lib/scide/open.rb +57 -0
- data/lib/scide/program.rb +109 -0
- data/lib/scide/setup.rb +16 -0
- data/lib/scide.rb +25 -57
- data/scide.gemspec +51 -59
- data/spec/auto_spec.rb +72 -0
- data/spec/cli/list_spec.rb +81 -0
- data/spec/cli/open_spec.rb +131 -0
- data/spec/cli/setup_spec.rb +82 -0
- data/spec/helper.rb +12 -24
- data/spec/list_spec.rb +113 -0
- data/spec/open_spec.rb +228 -0
- data/spec/setup_spec.rb +106 -0
- data/spec/version_spec.rb +3 -5
- metadata +150 -72
- data/.document +0 -5
- data/.rvmrc +0 -41
- data/TODO.md +0 -21
- data/lib/scide/command.rb +0 -124
- data/lib/scide/commands/edit.rb +0 -37
- data/lib/scide/commands/run.rb +0 -25
- data/lib/scide/commands/show.rb +0 -29
- data/lib/scide/commands/tail.rb +0 -37
- data/lib/scide/config.rb +0 -105
- data/lib/scide/global.rb +0 -30
- data/lib/scide/opts.rb +0 -35
- data/lib/scide/overmind.rb +0 -70
- data/lib/scide/project.rb +0 -93
- data/lib/scide/screen.rb +0 -77
- data/lib/scide/window.rb +0 -88
- data/spec/command_spec.rb +0 -86
- data/spec/commands/edit_spec.rb +0 -19
- data/spec/commands/run_spec.rb +0 -9
- data/spec/commands/show_spec.rb +0 -15
- data/spec/commands/tail_spec.rb +0 -14
- data/spec/config_spec.rb +0 -113
- data/spec/global_spec.rb +0 -38
- data/spec/opts_spec.rb +0 -42
- data/spec/project_spec.rb +0 -171
- data/spec/results/config1.yml +0 -14
- data/spec/results/malformed_config.yml +0 -2
- data/spec/results/project1.screen +0 -10
- data/spec/results/screen1.screen +0 -14
- data/spec/scide_spec.rb +0 -38
- data/spec/screen_spec.rb +0 -90
- data/spec/window_spec.rb +0 -122
data/spec/config_spec.rb
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
require 'fileutils'
|
3
|
-
|
4
|
-
describe Scide::Config do
|
5
|
-
|
6
|
-
it "should use the default config file if not given" do
|
7
|
-
conf = Scide::Config.new
|
8
|
-
conf.file.should == Scide::Config::DEFAULT_CONFIG_FILE
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should use the given config file" do
|
12
|
-
conf = Scide::Config.new '/tmp/fubar'
|
13
|
-
conf.file.should == '/tmp/fubar'
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should be empty when not loaded" do
|
17
|
-
conf = Scide::Config.new
|
18
|
-
conf.screen.should be_nil
|
19
|
-
conf.global.should be_nil
|
20
|
-
conf.projects.should be_nil
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should be filled when loaded" do
|
24
|
-
file = File.join File.dirname(__FILE__), 'results', 'config1.yml'
|
25
|
-
conf = Scide::Config.new file
|
26
|
-
make_load conf
|
27
|
-
conf.screen.should be_a(HashWithIndifferentAccess)
|
28
|
-
conf.global.should be_a(Scide::Global)
|
29
|
-
conf.projects.should be_a(HashWithIndifferentAccess)
|
30
|
-
conf.projects[:project1].should be_a(Scide::Project)
|
31
|
-
end
|
32
|
-
|
33
|
-
[ true, false ].each do |exit_on_fail|
|
34
|
-
describe "Errors with exit on fail #{exit_on_fail}" do
|
35
|
-
before :each do
|
36
|
-
Scide.exit_on_fail = exit_on_fail
|
37
|
-
end
|
38
|
-
|
39
|
-
after :each do
|
40
|
-
Scide.exit_on_fail = true
|
41
|
-
end
|
42
|
-
|
43
|
-
it SpecHelper.should_fail(exit_on_fail, :config_not_found, "when the config file does not exist") do
|
44
|
-
bad_file = "/tmp/IHateYouIfYouAddedThisFileJustToMakeMyTestFail"
|
45
|
-
conf = Scide::Config.new bad_file
|
46
|
-
load_should_fail(conf, :config_not_found)
|
47
|
-
end
|
48
|
-
|
49
|
-
it SpecHelper.should_fail(exit_on_fail, :config_not_readable, "if the config file is not readable") do
|
50
|
-
unreadable_file = Tempfile.new 'scide-unreadable'
|
51
|
-
FileUtils.chmod 0200, unreadable_file.path
|
52
|
-
conf = Scide::Config.new unreadable_file.path
|
53
|
-
load_should_fail(conf, :config_not_readable)
|
54
|
-
unreadable_file.unlink
|
55
|
-
end
|
56
|
-
|
57
|
-
it SpecHelper.should_fail(exit_on_fail, :unexpected, "if the config file cannot be read") do
|
58
|
-
file = File.join File.dirname(__FILE__), 'results', 'config1.yml'
|
59
|
-
conf = Scide::Config.new file
|
60
|
-
conf.stub!(:load_config){ raise 'bug' }
|
61
|
-
load_should_fail(conf, :unexpected)
|
62
|
-
end
|
63
|
-
|
64
|
-
it SpecHelper.should_fail(exit_on_fail, :malformed_config, "if the config file is not valid YAML") do
|
65
|
-
file = File.join File.dirname(__FILE__), 'results', 'malformed_config.yml'
|
66
|
-
conf = Scide::Config.new file
|
67
|
-
load_should_fail(conf, :malformed_config)
|
68
|
-
end
|
69
|
-
|
70
|
-
it SpecHelper.should_fail(exit_on_fail, :invalid_config, "if the configuration is not a hash") do
|
71
|
-
conf = Scide::Config.new
|
72
|
-
conf.stub!(:check_config){}
|
73
|
-
conf.stub!(:load_config){ "- 'a'\n- 'b'" }
|
74
|
-
load_should_fail(conf, :invalid_config)
|
75
|
-
end
|
76
|
-
|
77
|
-
it SpecHelper.should_fail(exit_on_fail, :invalid_config, "if the screen configuration is not a hash") do
|
78
|
-
conf = Scide::Config.new
|
79
|
-
conf.stub!(:check_config){}
|
80
|
-
conf.stub!(:load_config){ "screen:\n- 'a'\n- 'b'" }
|
81
|
-
load_should_fail(conf, :invalid_config)
|
82
|
-
end
|
83
|
-
|
84
|
-
it SpecHelper.should_fail(exit_on_fail, :invalid_config, "if the projects configuration is not a hash") do
|
85
|
-
conf = Scide::Config.new
|
86
|
-
conf.stub!(:check_config){}
|
87
|
-
conf.stub!(:load_config){ "projects:\n- 'a'\n- 'b'" }
|
88
|
-
load_should_fail(conf, :invalid_config)
|
89
|
-
end
|
90
|
-
|
91
|
-
it SpecHelper.should_fail(exit_on_fail, :invalid_config, "if the configuration is otherwise invalid") do
|
92
|
-
conf = Scide::Config.new
|
93
|
-
conf.stub!(:check_config){}
|
94
|
-
conf.stub!(:load_config){ "global:\n a: true\nprojects:\n a:\n - 'a'\n - 'b'" }
|
95
|
-
load_should_fail(conf, :invalid_config)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
private
|
101
|
-
|
102
|
-
def make_load conf
|
103
|
-
SpecHelper.silence{ conf.load! }
|
104
|
-
end
|
105
|
-
|
106
|
-
def load_should_fail conf, condition
|
107
|
-
if Scide.exit_on_fail
|
108
|
-
lambda{ make_load conf }.should raise_error(SystemExit){ |err| err.status.should == Scide::EXIT[condition] }
|
109
|
-
else
|
110
|
-
lambda{ make_load conf }.should raise_error(Scide::Error){ |err| err.condition.should == condition }
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
data/spec/global_spec.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
describe Scide::Global do
|
4
|
-
|
5
|
-
it "should take the given path if absolute" do
|
6
|
-
global = Scide::Global.new :path => '/tmp'
|
7
|
-
global.path.should == '/tmp'
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should expand the given path from the home directory if relative" do
|
11
|
-
global = Scide::Global.new :path => 'fubar'
|
12
|
-
global.path.should == File.join(File.expand_path('~'), 'fubar')
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should use the home directory if no path is given" do
|
16
|
-
global = Scide::Global.new({})
|
17
|
-
global.path.should == File.expand_path('~')
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should duplicate the given options" do
|
21
|
-
options = { :a => 1, :b => true }
|
22
|
-
global = Scide::Global.new :options => options
|
23
|
-
global.options.should == options
|
24
|
-
global.options.should_not equal(options)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should raise an error if the contents are not a hash" do
|
28
|
-
[ nil, ' ', [] ].each do |not_hash|
|
29
|
-
lambda{ Scide::Global.new not_hash }.should raise_error(ArgumentError)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should raise an error if its options are not nil and not a hash" do
|
34
|
-
[ ' ', [] ].each do |not_hash|
|
35
|
-
lambda{ Scide::Global.new :options => not_hash }.should raise_error(ArgumentError)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
data/spec/opts_spec.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
describe Scide::Opts do
|
4
|
-
|
5
|
-
before :each do
|
6
|
-
@opts = Scide::Opts.new
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should add the help flag" do
|
10
|
-
[ '-h', '--help' ].each do |flag|
|
11
|
-
lambda{ parse!([flag]) }.should raise_error(SystemExit){ |err| err.status.should == 0 }
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should add the usage flag" do
|
16
|
-
[ '-u', '--usage' ].each do |flag|
|
17
|
-
lambda{ parse!([flag]) }.should raise_error(SystemExit){ |err| err.status.should == 0 }
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should add the version flag" do
|
22
|
-
expected_version = File.open(File.join(File.dirname(__FILE__), '..', 'VERSION'), 'r').read
|
23
|
-
lambda{ parse!([ '--version' ]) }.should raise_error(SystemExit){ |err| err.status.should == 0 }
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should add the dry run flag" do
|
27
|
-
parse!([ '--dry-run' ])
|
28
|
-
@opts.funnel[:'dry-run'].should == true
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should exit with status 2 for unknown arguments" do
|
32
|
-
[ '-x', '--fubar', '-4' ].each do |unknown|
|
33
|
-
lambda{ parse!([unknown]) }.should raise_error(SystemExit){ |err| err.status.should == 2 }
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def parse! args
|
40
|
-
silence_stream(STDOUT){ silence_stream(STDERR){ @opts.parse! args } }
|
41
|
-
end
|
42
|
-
end
|
data/spec/project_spec.rb
DELETED
@@ -1,171 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
describe Scide::Project do
|
4
|
-
|
5
|
-
before :each do
|
6
|
-
@path = '/tmp'
|
7
|
-
@options = { :a => 1, :b => true }
|
8
|
-
@global = double('global')
|
9
|
-
@global.stub(:path){ @path }
|
10
|
-
@global.stub(:options){ @options }
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should add the project key to the global path by default" do
|
14
|
-
pro = Scide::Project.new @global, 'fubar', :windows => []
|
15
|
-
pro.path.should == File.join(@path, pro.key)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should add its path to the global path if relative" do
|
19
|
-
pro = Scide::Project.new @global, 'fubar', :windows => [], :path => 'foo'
|
20
|
-
pro.path.should == File.join(@path, 'foo')
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should use its path if absolute" do
|
24
|
-
pro = Scide::Project.new @global, 'fubar', :windows => [], :path => '/foo'
|
25
|
-
pro.path.should == '/foo'
|
26
|
-
end
|
27
|
-
|
28
|
-
it "should use its path if there is no global path" do
|
29
|
-
global_no_path = double('global')
|
30
|
-
global_no_path.stub(:path){ nil }
|
31
|
-
global_no_path.stub(:options){ { :a => 1, :b => true } }
|
32
|
-
pro = Scide::Project.new global_no_path, 'fubar', :windows => [], :path => '/foo'
|
33
|
-
pro.path.should == '/foo'
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should expand its path if relative" do
|
37
|
-
global_relative = double('global')
|
38
|
-
global_relative.stub(:path){ nil }
|
39
|
-
global_relative.stub(:options){ { :a => 1, :b => true } }
|
40
|
-
pro = Scide::Project.new global_relative, 'fubar', :windows => []
|
41
|
-
pro.path.should == File.join(File.expand_path('~'), 'fubar')
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should duplicate global options" do
|
45
|
-
@global.should_receive :path
|
46
|
-
@global.should_receive :options
|
47
|
-
pro = Scide::Project.new @global, 'fubar', :windows => []
|
48
|
-
pro.options.should_not equal(@options)
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should add name and path to options" do
|
52
|
-
additional_options = { :name => 'fubar', :path => File.join(@path, 'fubar') }
|
53
|
-
pro = Scide::Project.new @global, 'fubar', :windows => []
|
54
|
-
pro.options.should == @options.merge(additional_options)
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should override global name and path" do
|
58
|
-
global_with_name_and_path = double('global')
|
59
|
-
global_with_name_and_path.stub(:path){ @path }
|
60
|
-
global_with_name_and_path.stub(:options){ { :name => 'global', :path => '/global' } }
|
61
|
-
pro = Scide::Project.new global_with_name_and_path, 'fubar', :windows => []
|
62
|
-
pro.options[:name].should_not == 'global'
|
63
|
-
pro.options[:path].should_not == '/global'
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should merge given options" do
|
67
|
-
additional_options = { :name => 'fubar', :path => File.join(@path, 'fubar') }
|
68
|
-
new_options = { :name => 'fubar2', :path => '/tmp2', :b => false, :c => 'foo' }
|
69
|
-
pro = Scide::Project.new @global, 'fubar', :windows => [], :options => new_options
|
70
|
-
pro.options.should == @options.merge(additional_options).merge(new_options)
|
71
|
-
end
|
72
|
-
|
73
|
-
describe 'Sample Configuration' do
|
74
|
-
before :each do
|
75
|
-
@contents = {
|
76
|
-
:windows => [
|
77
|
-
'window1 EDIT',
|
78
|
-
{ :name => 'window2', :command => 'SHOW', :contents => 'ssh example.com' },
|
79
|
-
'window3 TAIL file.txt',
|
80
|
-
{ :string => 'window4 RUN ls -la' },
|
81
|
-
'window5'
|
82
|
-
],
|
83
|
-
:default_window => :window4
|
84
|
-
}
|
85
|
-
@project = Scide::Project.new @global, 'fubar', @contents
|
86
|
-
end
|
87
|
-
|
88
|
-
it "should create five windows" do
|
89
|
-
@project.windows.length.should == 5
|
90
|
-
@project.windows.each{ |w| w.should be_a(Scide::Window) }
|
91
|
-
end
|
92
|
-
|
93
|
-
it "should create the correct commands" do
|
94
|
-
@project.windows[0].command.should be_a(Scide::Commands::Edit)
|
95
|
-
@project.windows[1].command.should be_a(Scide::Commands::Show)
|
96
|
-
@project.windows[2].command.should be_a(Scide::Commands::Tail)
|
97
|
-
@project.windows[3].command.should be_a(Scide::Commands::Run)
|
98
|
-
@project.windows[4].command.should be_nil
|
99
|
-
end
|
100
|
-
|
101
|
-
it "should find the correct default window" do
|
102
|
-
@project.default_window.should == @project.windows[3]
|
103
|
-
end
|
104
|
-
|
105
|
-
it "should create the correct GNU Screen configuration" do
|
106
|
-
@project.to_screen.should == SpecHelper.result(:project1)
|
107
|
-
end
|
108
|
-
|
109
|
-
describe 'Default Window' do
|
110
|
-
before :each do
|
111
|
-
@default_window_contents = @contents.dup
|
112
|
-
end
|
113
|
-
|
114
|
-
it "should find the default window with a fixnum" do
|
115
|
-
@default_window_contents[:default_window] = 0
|
116
|
-
project = Scide::Project.new(@global, 'fubar', @default_window_contents)
|
117
|
-
project.default_window.should == project.windows[0]
|
118
|
-
end
|
119
|
-
|
120
|
-
it "should find the default window with a negative fixnum" do
|
121
|
-
@default_window_contents[:default_window] = -4
|
122
|
-
project = Scide::Project.new(@global, 'fubar', @default_window_contents)
|
123
|
-
project.default_window.should == project.windows[1]
|
124
|
-
end
|
125
|
-
|
126
|
-
it "should find the default window with a string" do
|
127
|
-
@default_window_contents[:default_window] = 'window3'
|
128
|
-
project = Scide::Project.new(@global, 'fubar', @default_window_contents)
|
129
|
-
project.default_window.should == project.windows[2]
|
130
|
-
end
|
131
|
-
|
132
|
-
it "should find the default window with a symbol" do
|
133
|
-
@default_window_contents[:default_window] = :window5
|
134
|
-
project = Scide::Project.new(@global, 'fubar', @default_window_contents)
|
135
|
-
project.default_window.should == project.windows[4]
|
136
|
-
end
|
137
|
-
|
138
|
-
it "should raise an error if the default window is not a fixnum, string or symbol" do
|
139
|
-
[ [], {}, 0.4 ].each do |invalid|
|
140
|
-
@default_window_contents[:default_window] = invalid
|
141
|
-
lambda{ Scide::Project.new @global, 'fubar', @default_window_contents }.should raise_error(ArgumentError)
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
it "should raise an error if the default window is unknown" do
|
146
|
-
[ 'unknown', :unknown, -10, -6, 5, 10 ].each do |invalid|
|
147
|
-
@default_window_contents[:default_window] = invalid
|
148
|
-
lambda{ Scide::Project.new @global, 'fubar', @default_window_contents }.should raise_error(ArgumentError)
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
it "should raise an error if the contents are not a hash" do
|
155
|
-
[ nil, ' ', [] ].each do |not_hash|
|
156
|
-
lambda{ Scide::Project.new @global, 'fubar', not_hash }.should raise_error(ArgumentError)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
it "should raise an error if its windows are nil or not an array" do
|
161
|
-
[ nil, ' ', {} ].each do |not_array|
|
162
|
-
lambda{ Scide::Project.new @global, 'fubar', :windows => not_array }.should raise_error(ArgumentError)
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
it "should raise an error if its options are not nil and not a hash" do
|
167
|
-
[ ' ', [] ].each do |not_hash|
|
168
|
-
lambda{ Scide::Project.new @global, 'fubar', :windows => [], :options => not_hash }.should raise_error(ArgumentError)
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
data/spec/results/config1.yml
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
screen:
|
2
|
-
hardstatus: 'dummy'
|
3
|
-
global:
|
4
|
-
path: '/tmp'
|
5
|
-
projects:
|
6
|
-
project1:
|
7
|
-
windows:
|
8
|
-
- 'window1 EDIT'
|
9
|
-
- name: 'window2'
|
10
|
-
command: 'SHOW'
|
11
|
-
contents: 'ssh example.com'
|
12
|
-
- 'window3 TAIL file.txt'
|
13
|
-
- string: 'window4 RUN ls -la'
|
14
|
-
- 'window5'
|
data/spec/results/screen1.screen
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
startup_message off
|
2
|
-
hardstatus on
|
3
|
-
hardstatus alwayslastline
|
4
|
-
hardstatus string 'dummy'
|
5
|
-
|
6
|
-
screen -t window1 0
|
7
|
-
stuff "$EDITOR\012"
|
8
|
-
screen -t window2 1
|
9
|
-
stuff "ssh example.com"
|
10
|
-
screen -t window3 2
|
11
|
-
stuff "tail -f file.txt\012"
|
12
|
-
screen -t window4 3
|
13
|
-
stuff "ls -la\012"
|
14
|
-
screen -t window5 4
|
data/spec/scide_spec.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
describe Scide do
|
4
|
-
|
5
|
-
before :each do
|
6
|
-
Scide.exit_on_fail = true
|
7
|
-
end
|
8
|
-
|
9
|
-
after :each do
|
10
|
-
Scide.exit_on_fail = true
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should have the correct version" do
|
14
|
-
Scide::VERSION.should == File.open(File.join(File.dirname(__FILE__), '..', 'VERSION'), 'r').read
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should exit on fail by default" do
|
18
|
-
lambda{ SpecHelper.silence{ Scide.fail nil, 'fubar' } }.should raise_error(SystemExit)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should exit with the correct status code" do
|
22
|
-
Scide::EXIT.each_pair do |condition,code|
|
23
|
-
lambda{ SpecHelper.silence{ Scide.fail condition, 'fubar' } }.should raise_error(SystemExit){ |err| err.status.should == code }
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should raise an error on fail if configured to do so" do
|
28
|
-
Scide.exit_on_fail = false
|
29
|
-
lambda{ Scide.fail nil, 'fubar' }.should raise_error(Scide::Error)
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should raise an error with the correct condition" do
|
33
|
-
Scide.exit_on_fail = false
|
34
|
-
Scide::EXIT.each_pair do |condition,code|
|
35
|
-
lambda{ Scide.fail condition, 'fubar' }.should raise_error(Scide::Error){ |err| err.condition.should == condition }
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
data/spec/screen_spec.rb
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
describe Scide::Screen do
|
4
|
-
|
5
|
-
before :each do
|
6
|
-
@project = double('project')
|
7
|
-
@project.stub(:path){ '/tmp' }
|
8
|
-
@project.stub(:to_screen){ 'fubar' }
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should generate a command to run screen at the given project's path" do
|
12
|
-
screen = Scide::Screen.new(@project, {})
|
13
|
-
@project.should_receive :path
|
14
|
-
screen.to_command('fubar').should == 'cd /tmp && screen -c fubar'
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should generate a command to run screen with the given options" do
|
18
|
-
screen = Scide::Screen.new @project, :binary => '/usr/bin/screen', :args => '-U'
|
19
|
-
@project.should_receive :path
|
20
|
-
screen.to_command('fubar').should == 'cd /tmp && /usr/bin/screen -U -c fubar'
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should generate a screen configuration file" do
|
24
|
-
global = double('global')
|
25
|
-
global.stub(:path){ nil }
|
26
|
-
global.stub(:options){ {} }
|
27
|
-
contents = {
|
28
|
-
:windows => [
|
29
|
-
'window1 EDIT',
|
30
|
-
{ :name => 'window2', :command => 'SHOW', :contents => 'ssh example.com' },
|
31
|
-
'window3 TAIL file.txt',
|
32
|
-
{ :string => 'window4 RUN ls -la' },
|
33
|
-
'window5'
|
34
|
-
]
|
35
|
-
}
|
36
|
-
project = Scide::Project.new(global, 'fubar', contents)
|
37
|
-
screen = Scide::Screen.new project, :hardstatus => 'dummy'
|
38
|
-
screen.to_s.should == SpecHelper.result(:screen1)
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should use the default hardstatus line if not given" do
|
42
|
-
screen = Scide::Screen.new(@project, {})
|
43
|
-
screen.hardstatus.should == Scide::Screen::DEFAULT_HARDSTATUS
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should use the given hardstatus line" do
|
47
|
-
screen = Scide::Screen.new @project, :hardstatus => 'fubar'
|
48
|
-
screen.hardstatus.should == 'fubar'
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should use the default binary if not given" do
|
52
|
-
screen = Scide::Screen.new(@project, {})
|
53
|
-
screen.binary.should == 'screen'
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should use the given binary" do
|
57
|
-
screen = Scide::Screen.new @project, :binary => '/usr/bin/screen'
|
58
|
-
screen.binary.should == '/usr/bin/screen'
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should use the given args" do
|
62
|
-
screen = Scide::Screen.new @project, :args => '-U'
|
63
|
-
screen.args.should == '-U'
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should duplicate the given options" do
|
67
|
-
options = { :a => 1, :b => true }
|
68
|
-
screen = Scide::Screen.new @project, options
|
69
|
-
screen.options.should == options
|
70
|
-
screen.options.should_not equal(options)
|
71
|
-
end
|
72
|
-
|
73
|
-
it "should not raise any error if the screen binary is found" do
|
74
|
-
screen = '/usr/bin/screen'
|
75
|
-
Which.stub!(:which){ |name| screen } unless File.executable?(screen)
|
76
|
-
lambda{ SpecHelper.silence{ Scide::Screen.new(@project, :binary => screen).check_binary } }.should_not raise_error
|
77
|
-
end
|
78
|
-
|
79
|
-
it "should exit with status 4 if the screen binary is not found" do
|
80
|
-
bad_binary = "unknown"
|
81
|
-
Which.stub!(:which){ |name| nil }
|
82
|
-
lambda{ SpecHelper.silence{ Scide::Screen.new(@project, :binary => bad_binary).check_binary } }.should raise_error(SystemExit){ |err| err.status.should == 4 }
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should raise an error if the options are not nil and not a hash" do
|
86
|
-
[ ' ', [] ].each do |not_hash|
|
87
|
-
lambda{ Scide::Screen.new @project, not_hash }.should raise_error(ArgumentError)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
data/spec/window_spec.rb
DELETED
@@ -1,122 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
describe Scide::Window do
|
4
|
-
|
5
|
-
before :each do
|
6
|
-
@options = { :a => 1, :b => true }
|
7
|
-
@project = double('project')
|
8
|
-
@project.stub(:options){ @options }
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "String Initialization" do
|
12
|
-
it "should take the given name" do
|
13
|
-
win = Scide::Window.new @project, 'fubar'
|
14
|
-
win.name.should == 'fubar'
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should create the correct command" do
|
18
|
-
win = Scide::Window.new @project, 'fubar EDIT'
|
19
|
-
win.command.should be_a(Scide::Commands::Edit)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should be initializable with a name and a command with no contents" do
|
23
|
-
lambda{ Scide::Window.new @project, 'fubar EDIT' }.should_not raise_error(ArgumentError)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should be initializable with a name and a command with contents" do
|
27
|
-
lambda{ Scide::Window.new @project, 'fubar TAIL file.txt' }.should_not raise_error(ArgumentError)
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should raise an error when initialized without a name" do
|
31
|
-
lambda{ Scide::Window.new @project, ' ' }.should raise_error(ArgumentError)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should raise an error for unknown commands" do
|
35
|
-
lambda{ Scide::Window.new @project, 'fubar EDT' }.should raise_error(ArgumentError)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "Hash Initialization" do
|
40
|
-
it "should take the given name" do
|
41
|
-
win = Scide::Window.new @project, :name => 'fubar'
|
42
|
-
win.name.should == 'fubar'
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should create the correct command" do
|
46
|
-
win = Scide::Window.new @project, :name => 'fubar', :command => 'EDIT'
|
47
|
-
win.command.should be_a(Scide::Commands::Edit)
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should be initializable with a name and a command with no contents" do
|
51
|
-
lambda{ Scide::Window.new @project, :name => 'fubar', :command => 'EDIT' }.should_not raise_error(ArgumentError)
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should be initializable with a name and a command with contents" do
|
55
|
-
lambda{ Scide::Window.new @project, :name => 'fubar', :command => 'EDIT', :contents => 'file.txt' }.should_not raise_error(ArgumentError)
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should raise an error when initialized without a name" do
|
59
|
-
lambda{ Scide::Window.new @project, :fubar => true }.should raise_error(ArgumentError)
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should raise an error for unknown commands" do
|
63
|
-
lambda{ Scide::Window.new @project, :name => 'fubar', :command => 'EDT' }.should raise_error(ArgumentError)
|
64
|
-
end
|
65
|
-
|
66
|
-
describe "String Option" do
|
67
|
-
|
68
|
-
it "should take the given name" do
|
69
|
-
win = Scide::Window.new @project, :string => 'fubar'
|
70
|
-
win.name.should == 'fubar'
|
71
|
-
end
|
72
|
-
|
73
|
-
it "should create the correct command" do
|
74
|
-
win = Scide::Window.new @project, :string => 'fubar EDIT'
|
75
|
-
win.command.should be_a(Scide::Commands::Edit)
|
76
|
-
end
|
77
|
-
|
78
|
-
it "should be initializable with a name and a command with no contents" do
|
79
|
-
lambda{ Scide::Window.new @project, :string => 'fubar EDIT' }.should_not raise_error(ArgumentError)
|
80
|
-
end
|
81
|
-
|
82
|
-
it "should be initializable with a name and a command with contents" do
|
83
|
-
lambda{ Scide::Window.new @project, :string => 'fubar EDIT file.txt' }.should_not raise_error(ArgumentError)
|
84
|
-
end
|
85
|
-
|
86
|
-
it "should raise an error when initialized without a name" do
|
87
|
-
lambda{ Scide::Window.new @project, :string => ' ' }.should raise_error(ArgumentError)
|
88
|
-
end
|
89
|
-
|
90
|
-
it "should raise an error for unknown commands" do
|
91
|
-
lambda{ Scide::Window.new @project, :string => 'fubar EDT' }.should raise_error(ArgumentError)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should raise an error when type of contents is unknown" do
|
97
|
-
lambda{ Scide::Window.new(@project, []) }.should raise_error(ArgumentError)
|
98
|
-
end
|
99
|
-
|
100
|
-
it "should duplicate project options" do
|
101
|
-
@project.should_receive :options
|
102
|
-
win = Scide::Window.new @project, 'fubar'
|
103
|
-
win.options.should == @options
|
104
|
-
win.options.should_not equal(@options)
|
105
|
-
end
|
106
|
-
|
107
|
-
it "should merge its options to project options" do
|
108
|
-
window_options = { :b => false, :c => 'foo' }
|
109
|
-
@project.should_receive :options
|
110
|
-
win = Scide::Window.new @project, :name => 'fubar', :options => window_options
|
111
|
-
win.options.should == @options.merge(window_options)
|
112
|
-
end
|
113
|
-
|
114
|
-
it "should generate a GNU Screen window" do
|
115
|
-
# without a command, hash initialization
|
116
|
-
win = Scide::Window.new @project, :name => 'fubar'
|
117
|
-
win.to_screen(0).should == 'screen -t fubar 0'
|
118
|
-
# with a command, string initialization
|
119
|
-
win = Scide::Window.new @project, 'fubar EDIT file.txt'
|
120
|
-
win.to_screen(0).should == %|screen -t fubar 0\n#{win.command.to_screen}|
|
121
|
-
end
|
122
|
-
end
|