tmuxinator 0.6.11 → 0.7.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.
- checksums.yaml +4 -4
- data/bin/mux +6 -9
- data/bin/tmuxinator +6 -9
- data/lib/tmuxinator/assets/template.erb +6 -6
- data/lib/tmuxinator/assets/wemux_template.erb +1 -1
- data/lib/tmuxinator/cli.rb +111 -33
- data/lib/tmuxinator/config.rb +47 -35
- data/lib/tmuxinator/pane.rb +21 -5
- data/lib/tmuxinator/project.rb +94 -29
- data/lib/tmuxinator/version.rb +1 -1
- data/lib/tmuxinator/wemux_support.rb +4 -4
- data/lib/tmuxinator/window.rb +15 -5
- data/spec/factories/projects.rb +53 -11
- data/spec/fixtures/detach.yml +41 -0
- data/spec/fixtures/nameless_window.yml +5 -0
- data/spec/fixtures/nowindows.yml +3 -0
- data/spec/fixtures/sample.yml +1 -0
- data/spec/fixtures/sample_number_as_name.yml +5 -0
- data/spec/lib/tmuxinator/cli_spec.rb +191 -30
- data/spec/lib/tmuxinator/config_spec.rb +105 -8
- data/spec/lib/tmuxinator/project_spec.rb +172 -28
- data/spec/lib/tmuxinator/util_spec.rb +0 -1
- data/spec/lib/tmuxinator/wemux_support_spec.rb +47 -0
- data/spec/lib/tmuxinator/window_spec.rb +82 -21
- data/spec/spec_helper.rb +16 -15
- metadata +13 -3
@@ -2,10 +2,27 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Tmuxinator::Project do
|
4
4
|
let(:project) { FactoryGirl.build(:project) }
|
5
|
-
let(:project_with_custom_name)
|
6
|
-
|
5
|
+
let(:project_with_custom_name) do
|
6
|
+
FactoryGirl.build(:project_with_custom_name)
|
7
|
+
end
|
8
|
+
let(:project_with_number_as_name) do
|
9
|
+
FactoryGirl.build(:project_with_number_as_name)
|
10
|
+
end
|
11
|
+
let(:project_with_deprecations) do
|
12
|
+
FactoryGirl.build(:project_with_deprecations)
|
13
|
+
end
|
14
|
+
let(:project_with_force_attach) do
|
15
|
+
FactoryGirl.build(:project_with_force_attach)
|
16
|
+
end
|
17
|
+
let(:project_with_force_detach) do
|
18
|
+
FactoryGirl.build(:project_with_force_detach)
|
19
|
+
end
|
20
|
+
|
7
21
|
let(:wemux_project) { FactoryGirl.build(:wemux_project) }
|
8
22
|
let(:noname_project) { FactoryGirl.build(:noname_project) }
|
23
|
+
let(:nameless_window_project) do
|
24
|
+
FactoryGirl.build(:nameless_window_project)
|
25
|
+
end
|
9
26
|
|
10
27
|
describe "#initialize" do
|
11
28
|
context "valid yaml" do
|
@@ -65,7 +82,7 @@ describe Tmuxinator::Project do
|
|
65
82
|
|
66
83
|
context "without root" do
|
67
84
|
it "doesn't throw an error" do
|
68
|
-
expect{noname_project.root}.to_not raise_error
|
85
|
+
expect { noname_project.root }.to_not raise_error
|
69
86
|
end
|
70
87
|
end
|
71
88
|
end
|
@@ -91,7 +108,14 @@ describe Tmuxinator::Project do
|
|
91
108
|
|
92
109
|
context "without name" do
|
93
110
|
it "displays error message" do
|
94
|
-
expect{noname_project.name}.to_not raise_error
|
111
|
+
expect { noname_project.name }.to_not raise_error
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context "as number" do
|
116
|
+
it "will gracefully handle a name given as a number" do
|
117
|
+
rendered = project_with_number_as_name
|
118
|
+
expect(rendered.name.to_i).to_not equal 0
|
95
119
|
end
|
96
120
|
end
|
97
121
|
end
|
@@ -104,8 +128,9 @@ describe Tmuxinator::Project do
|
|
104
128
|
context "with deprecations" do
|
105
129
|
context "rbenv option is present" do
|
106
130
|
before do
|
107
|
-
allow(project).to receive_messages(
|
108
|
-
allow(project).to
|
131
|
+
allow(project).to receive_messages(rbenv?: true)
|
132
|
+
allow(project).to \
|
133
|
+
receive_message_chain(:yaml, :[]).and_return("2.0.0-p247")
|
109
134
|
end
|
110
135
|
|
111
136
|
it "still gets the correct pre_window command" do
|
@@ -115,8 +140,9 @@ describe Tmuxinator::Project do
|
|
115
140
|
|
116
141
|
context "rvm option is present" do
|
117
142
|
before do
|
118
|
-
allow(project).to receive_messages(
|
119
|
-
allow(project).to
|
143
|
+
allow(project).to receive_messages(rbenv?: false)
|
144
|
+
allow(project).to \
|
145
|
+
receive_message_chain(:yaml, :[]).and_return("ruby-2.0.0-p247")
|
120
146
|
end
|
121
147
|
|
122
148
|
it "still gets the correct pre_window command" do
|
@@ -126,8 +152,8 @@ describe Tmuxinator::Project do
|
|
126
152
|
|
127
153
|
context "pre_tab is present" do
|
128
154
|
before do
|
129
|
-
allow(project).to receive_messages(
|
130
|
-
allow(project).to receive_messages(
|
155
|
+
allow(project).to receive_messages(rbenv?: false)
|
156
|
+
allow(project).to receive_messages(pre_tab?: true)
|
131
157
|
end
|
132
158
|
|
133
159
|
it "still gets the correct pre_window command" do
|
@@ -140,7 +166,7 @@ describe Tmuxinator::Project do
|
|
140
166
|
describe "#socket" do
|
141
167
|
context "socket path is present" do
|
142
168
|
before do
|
143
|
-
allow(project).to receive_messages(:
|
169
|
+
allow(project).to receive_messages(socket_path: "/tmp")
|
144
170
|
end
|
145
171
|
|
146
172
|
it "gets the socket path" do
|
@@ -170,7 +196,7 @@ describe Tmuxinator::Project do
|
|
170
196
|
describe "#tmux_options" do
|
171
197
|
context "no tmux options" do
|
172
198
|
before do
|
173
|
-
allow(project).to receive_messages(
|
199
|
+
allow(project).to receive_messages(tmux_options?: false)
|
174
200
|
end
|
175
201
|
|
176
202
|
it "returns nothing" do
|
@@ -180,18 +206,20 @@ describe Tmuxinator::Project do
|
|
180
206
|
|
181
207
|
context "with deprecations" do
|
182
208
|
before do
|
183
|
-
allow(project_with_deprecations).to receive_messages(
|
209
|
+
allow(project_with_deprecations).to receive_messages(cli_args?: true)
|
184
210
|
end
|
185
211
|
|
186
212
|
it "still gets the tmux options" do
|
187
|
-
expect(project_with_deprecations.tmux_options).to
|
213
|
+
expect(project_with_deprecations.tmux_options).to \
|
214
|
+
eq " -f ~/.tmux.mac.conf"
|
188
215
|
end
|
189
216
|
end
|
190
217
|
end
|
191
218
|
|
192
219
|
describe "#get_pane_base_index" do
|
193
220
|
it "extracts the pane_base_index from tmux_options" do
|
194
|
-
allow(project).to
|
221
|
+
allow(project).to \
|
222
|
+
receive_messages(show_tmux_options: tmux_config(pane_base_index: 3))
|
195
223
|
|
196
224
|
expect(project.get_pane_base_index).to eq("3")
|
197
225
|
end
|
@@ -199,7 +227,8 @@ describe Tmuxinator::Project do
|
|
199
227
|
|
200
228
|
describe "#get_base_index" do
|
201
229
|
it "extracts the base index from options" do
|
202
|
-
allow(project).to
|
230
|
+
allow(project).to \
|
231
|
+
receive_messages(show_tmux_options: tmux_config(base_index: 1))
|
203
232
|
|
204
233
|
expect(project.get_base_index).to eq("1")
|
205
234
|
end
|
@@ -208,8 +237,8 @@ describe Tmuxinator::Project do
|
|
208
237
|
describe "#base_index" do
|
209
238
|
context "pane base index present" do
|
210
239
|
before do
|
211
|
-
allow(project).to receive_messages(:
|
212
|
-
allow(project).to receive_messages(:
|
240
|
+
allow(project).to receive_messages(get_pane_base_index: "1")
|
241
|
+
allow(project).to receive_messages(get_base_index: "1")
|
213
242
|
end
|
214
243
|
|
215
244
|
it "gets the pane base index" do
|
@@ -219,8 +248,8 @@ describe Tmuxinator::Project do
|
|
219
248
|
|
220
249
|
context "pane base index no present" do
|
221
250
|
before do
|
222
|
-
allow(project).to receive_messages(:
|
223
|
-
allow(project).to receive_messages(:
|
251
|
+
allow(project).to receive_messages(get_pane_base_index: nil)
|
252
|
+
allow(project).to receive_messages(get_base_index: "0")
|
224
253
|
end
|
225
254
|
|
226
255
|
it "gets the base index" do
|
@@ -234,15 +263,15 @@ describe Tmuxinator::Project do
|
|
234
263
|
it "gets the startup window from project config" do
|
235
264
|
project.yaml["startup_window"] = "logs"
|
236
265
|
|
237
|
-
|
266
|
+
expect(project.startup_window).to eq("logs")
|
238
267
|
end
|
239
268
|
end
|
240
269
|
|
241
270
|
context "startup window not specified" do
|
242
271
|
it "returns base index instead" do
|
243
|
-
allow(project).to receive_messages(:
|
272
|
+
allow(project).to receive_messages(base_index: 8)
|
244
273
|
|
245
|
-
|
274
|
+
expect(project.startup_window).to eq 8
|
246
275
|
end
|
247
276
|
end
|
248
277
|
end
|
@@ -286,7 +315,8 @@ describe Tmuxinator::Project do
|
|
286
315
|
|
287
316
|
context "command for window is not empty" do
|
288
317
|
it "returns the tmux command" do
|
289
|
-
expect(project.send_keys("vim", 1)).to
|
318
|
+
expect(project.send_keys("vim", 1)).to \
|
319
|
+
eq "tmux -f ~/.tmux.mac.conf -L foo send-keys -t sample:1 vim C-m"
|
290
320
|
end
|
291
321
|
end
|
292
322
|
end
|
@@ -300,7 +330,8 @@ describe Tmuxinator::Project do
|
|
300
330
|
|
301
331
|
context "command for pane is not empty" do
|
302
332
|
it "returns the tmux command" do
|
303
|
-
expect(project.send_pane_command("vim", 1, 0)).to
|
333
|
+
expect(project.send_pane_command("vim", 1, 0)).to \
|
334
|
+
eq "tmux -f ~/.tmux.mac.conf -L foo send-keys -t sample:1 vim C-m"
|
304
335
|
end
|
305
336
|
end
|
306
337
|
end
|
@@ -323,7 +354,11 @@ describe Tmuxinator::Project do
|
|
323
354
|
let(:window) { project.windows.keep_if { |w| w.name == "shell" }.first }
|
324
355
|
|
325
356
|
it "splits commands into an array" do
|
326
|
-
|
357
|
+
commands = [
|
358
|
+
"tmux -f ~/.tmux.mac.conf -L foo send-keys -t sample:1 git\\ pull C-m",
|
359
|
+
"tmux -f ~/.tmux.mac.conf -L foo send-keys -t sample:1 git\\ merge C-m"
|
360
|
+
]
|
361
|
+
expect(window.commands).to eq(commands)
|
327
362
|
end
|
328
363
|
end
|
329
364
|
|
@@ -339,16 +374,125 @@ describe Tmuxinator::Project do
|
|
339
374
|
end
|
340
375
|
|
341
376
|
context "pre in yaml is Array" do
|
342
|
-
before
|
377
|
+
before do
|
343
378
|
project.yaml["pre"] = [
|
344
379
|
"mysql.server start",
|
345
380
|
"memcached -d"
|
346
381
|
]
|
347
|
-
|
382
|
+
end
|
348
383
|
|
349
384
|
it "joins array using ;" do
|
350
385
|
expect(pre).to eq("mysql.server start; memcached -d")
|
351
386
|
end
|
352
387
|
end
|
353
388
|
end
|
389
|
+
|
390
|
+
describe "#attach?" do
|
391
|
+
context "attach is true in yaml" do
|
392
|
+
before { project.yaml["attach"] = true }
|
393
|
+
|
394
|
+
it "returns true" do
|
395
|
+
expect(project.attach?).to be_truthy
|
396
|
+
end
|
397
|
+
end
|
398
|
+
|
399
|
+
context "attach is not defined in yaml" do
|
400
|
+
it "returns true" do
|
401
|
+
expect(project.attach?).to be_truthy
|
402
|
+
end
|
403
|
+
end
|
404
|
+
|
405
|
+
context "attach is false in yaml" do
|
406
|
+
before { project.yaml["attach"] = false }
|
407
|
+
it "returns false" do
|
408
|
+
expect(project.attach?).to be_falsey
|
409
|
+
end
|
410
|
+
end
|
411
|
+
|
412
|
+
context "attach is true in yaml, but command line forces detach" do
|
413
|
+
before { project_with_force_attach.yaml["attach"] = true }
|
414
|
+
|
415
|
+
it "returns false" do
|
416
|
+
expect(project_with_force_detach.attach?).to be_falsey
|
417
|
+
end
|
418
|
+
end
|
419
|
+
|
420
|
+
context "attach is false in yaml, but command line forces attach" do
|
421
|
+
before { project_with_force_detach.yaml["attach"] = false }
|
422
|
+
|
423
|
+
it "returns true" do
|
424
|
+
expect(project_with_force_attach.attach?).to be_truthy
|
425
|
+
end
|
426
|
+
end
|
427
|
+
end
|
428
|
+
|
429
|
+
describe "tmux_new_session_command" do
|
430
|
+
let(:command) { "#{executable} new-session -d -s #{session} -n #{window}" }
|
431
|
+
let(:executable) { project.tmux }
|
432
|
+
let(:session) { project.name }
|
433
|
+
let(:window) { project.windows.first.name }
|
434
|
+
|
435
|
+
context "when first window has a name" do
|
436
|
+
it "returns command to start a new detatched session" do
|
437
|
+
expect(project.tmux_new_session_command).to eq command
|
438
|
+
end
|
439
|
+
end
|
440
|
+
|
441
|
+
context "when first window is nameless" do
|
442
|
+
let(:project) { nameless_window_project }
|
443
|
+
let(:command) { "#{project.tmux} new-session -d -s #{project.name} " }
|
444
|
+
|
445
|
+
it "returns command to for new detatched session without a window name" do
|
446
|
+
expect(project.tmux_new_session_command).to eq command
|
447
|
+
end
|
448
|
+
end
|
449
|
+
end
|
450
|
+
|
451
|
+
describe "::load" do
|
452
|
+
let(:path) { File.expand_path("../../../fixtures/sample.yml", __FILE__) }
|
453
|
+
let(:options) { {} }
|
454
|
+
|
455
|
+
it "should raise if the project file doesn't parse" do
|
456
|
+
bad_yaml = <<-Y
|
457
|
+
name: "foo"
|
458
|
+
subkey:
|
459
|
+
Y
|
460
|
+
expect(File).to receive(:read).with(path) { bad_yaml }
|
461
|
+
expect do
|
462
|
+
described_class.load(path, options)
|
463
|
+
end.to raise_error RuntimeError, %r{Failed.to.parse.config.file}
|
464
|
+
end
|
465
|
+
|
466
|
+
it "should return an instance of the class if the file loads" do
|
467
|
+
expect(described_class.load(path, options)).to be_a Tmuxinator::Project
|
468
|
+
end
|
469
|
+
end
|
470
|
+
|
471
|
+
describe "::parse_settings" do
|
472
|
+
let(:args) { ["one", "two=three"] }
|
473
|
+
|
474
|
+
it "returns settings in a hash" do
|
475
|
+
expect(described_class.parse_settings(args)["two"]).to eq("three")
|
476
|
+
end
|
477
|
+
|
478
|
+
it "removes settings from args" do
|
479
|
+
described_class.parse_settings(args)
|
480
|
+
expect(args).to eq(["one"])
|
481
|
+
end
|
482
|
+
end
|
483
|
+
|
484
|
+
describe "#validate!" do
|
485
|
+
it "should raise if there are no windows defined" do
|
486
|
+
nowindows_project = FactoryGirl.build(:nowindows_project)
|
487
|
+
expect do
|
488
|
+
nowindows_project.validate!
|
489
|
+
end.to raise_error RuntimeError, %r{should.include.some.windows}
|
490
|
+
end
|
491
|
+
|
492
|
+
it "should raise if there is not a project name" do
|
493
|
+
expect do
|
494
|
+
noname_project.validate!
|
495
|
+
end.to raise_error RuntimeError, %r{didn't.specify.a.'project_name'}
|
496
|
+
end
|
497
|
+
end
|
354
498
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Tmuxinator::WemuxSupport do
|
4
|
+
let(:klass) { Class.new { include Tmuxinator::WemuxSupport } }
|
5
|
+
let(:instance) { klass.new }
|
6
|
+
|
7
|
+
it { expect(instance).to respond_to :wemux? }
|
8
|
+
it { expect(instance).to respond_to :load_wemux_overrides }
|
9
|
+
|
10
|
+
describe "#load_wemux_overrides" do
|
11
|
+
before { instance.load_wemux_overrides }
|
12
|
+
|
13
|
+
it "adds a render method" do
|
14
|
+
expect(instance).to respond_to :render
|
15
|
+
end
|
16
|
+
|
17
|
+
it "adds a name method" do
|
18
|
+
expect(instance).to respond_to :name
|
19
|
+
end
|
20
|
+
|
21
|
+
it "adds a tmux method" do
|
22
|
+
expect(instance).to respond_to :tmux
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "#render" do
|
27
|
+
before { instance.load_wemux_overrides }
|
28
|
+
|
29
|
+
it "renders the template" do
|
30
|
+
expect(File).to receive(:read).at_least(:once) { "wemux ls 2>/dev/null" }
|
31
|
+
|
32
|
+
expect(instance.render).to match %r{wemux.ls.2>\/dev\/null}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#name" do
|
37
|
+
before { instance.load_wemux_overrides }
|
38
|
+
|
39
|
+
it { expect(instance.name).to eq "wemux" }
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#tmux" do
|
43
|
+
before { instance.load_wemux_overrides }
|
44
|
+
|
45
|
+
it { expect(instance.tmux).to eq "wemux" }
|
46
|
+
end
|
47
|
+
end
|
@@ -3,10 +3,14 @@ require "spec_helper"
|
|
3
3
|
describe Tmuxinator::Window do
|
4
4
|
let(:project) { double }
|
5
5
|
let(:panes) { ["vim", nil, "top"] }
|
6
|
+
let(:window_name) { "editor" }
|
6
7
|
let(:yaml) do
|
7
8
|
{
|
8
|
-
|
9
|
-
"pre" => [
|
9
|
+
window_name => {
|
10
|
+
"pre" => [
|
11
|
+
"echo 'I get run in each pane. Before each pane command!'",
|
12
|
+
nil
|
13
|
+
],
|
10
14
|
"layout" => "main-vertical",
|
11
15
|
"panes" => panes
|
12
16
|
}
|
@@ -17,7 +21,10 @@ describe Tmuxinator::Window do
|
|
17
21
|
"editor" => {
|
18
22
|
"root" => "/project/override",
|
19
23
|
"root?" => true,
|
20
|
-
"pre" => [
|
24
|
+
"pre" => [
|
25
|
+
"echo 'I get run in each pane. Before each pane command!'",
|
26
|
+
nil
|
27
|
+
],
|
21
28
|
"layout" => "main-vertical",
|
22
29
|
"panes" => panes
|
23
30
|
}
|
@@ -29,12 +36,12 @@ describe Tmuxinator::Window do
|
|
29
36
|
|
30
37
|
before do
|
31
38
|
allow(project).to receive_messages(
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
39
|
+
tmux: "tmux",
|
40
|
+
name: "test",
|
41
|
+
base_index: 1,
|
42
|
+
root: "/project/tmuxinator",
|
43
|
+
root?: true
|
44
|
+
)
|
38
45
|
end
|
39
46
|
|
40
47
|
describe "#initialize" do
|
@@ -61,7 +68,7 @@ describe Tmuxinator::Window do
|
|
61
68
|
let(:pane) { double(:pane) }
|
62
69
|
|
63
70
|
before do
|
64
|
-
allow(Tmuxinator::Pane).to receive_messages :
|
71
|
+
allow(Tmuxinator::Pane).to receive_messages new: pane
|
65
72
|
end
|
66
73
|
|
67
74
|
context "with a three element Array" do
|
@@ -133,7 +140,10 @@ describe Tmuxinator::Window do
|
|
133
140
|
end
|
134
141
|
|
135
142
|
it "returns the flattened command" do
|
136
|
-
expect(window.commands).to eq [
|
143
|
+
expect(window.commands).to eq [
|
144
|
+
"tmux send-keys -t test:1 git\\ fetch C-m",
|
145
|
+
"tmux send-keys -t test:1 git\\ status C-m"
|
146
|
+
]
|
137
147
|
end
|
138
148
|
end
|
139
149
|
|
@@ -158,27 +168,78 @@ describe Tmuxinator::Window do
|
|
158
168
|
end
|
159
169
|
end
|
160
170
|
|
171
|
+
describe "#name_options" do
|
172
|
+
context "with a name" do
|
173
|
+
let(:window_name) { "editor" }
|
174
|
+
|
175
|
+
it "specifies name with tmux name option" do
|
176
|
+
expect(window.tmux_window_name_option).to eq "-n #{window_name}"
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
context "without a name" do
|
181
|
+
let(:window_name) { nil }
|
182
|
+
|
183
|
+
it "specifies no tmux name option" do
|
184
|
+
expect(window.tmux_window_name_option).to be_empty
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
161
189
|
describe "#tmux_new_window_command" do
|
162
190
|
let(:project) { double(:project) }
|
163
191
|
let(:window) { Tmuxinator::Window.new(yaml, 0, project) }
|
192
|
+
let(:root?) { true }
|
193
|
+
let(:root) { "/project/tmuxinator" }
|
164
194
|
|
165
195
|
before do
|
166
196
|
allow(project).to receive_messages(
|
167
|
-
:
|
168
|
-
:
|
169
|
-
:root
|
170
|
-
|
171
|
-
:
|
197
|
+
name: "test",
|
198
|
+
tmux: "tmux",
|
199
|
+
root: root,
|
200
|
+
root?: root?,
|
201
|
+
base_index: 1
|
172
202
|
)
|
173
203
|
end
|
174
204
|
|
175
|
-
|
176
|
-
|
177
|
-
|
205
|
+
let(:tmux_part) { project.tmux }
|
206
|
+
let(:window_part) { "new-window" }
|
207
|
+
let(:name_part) { window.tmux_window_name_option }
|
208
|
+
let(:target_part) { "-t #{window.tmux_window_target}" }
|
209
|
+
let(:path_part) { "#{path_option} #{project.root}" }
|
210
|
+
|
211
|
+
let(:path_option) { "-c" }
|
212
|
+
let(:full_command) do
|
213
|
+
"#{tmux_part} #{window_part} #{path_part} #{target_part} #{name_part}"
|
214
|
+
end
|
215
|
+
|
216
|
+
before do
|
217
|
+
allow(Tmuxinator::Config).to receive(:default_path_option) { path_option }
|
218
|
+
end
|
219
|
+
|
220
|
+
it "contstructs window command with path, target, and name options" do
|
221
|
+
expect(window.tmux_new_window_command).to eq full_command
|
222
|
+
end
|
223
|
+
|
224
|
+
context "root not set" do
|
225
|
+
let(:root?) { false }
|
226
|
+
let(:root) { nil }
|
227
|
+
|
228
|
+
let(:path_part) { nil }
|
229
|
+
|
230
|
+
it "has an extra space instead of path_part" do
|
231
|
+
expect(window.tmux_new_window_command).to eq full_command
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
context "name not set" do
|
236
|
+
let(:window_name) { nil }
|
237
|
+
let(:full_command) do
|
238
|
+
"#{tmux_part} #{window_part} #{path_part} #{target_part} "
|
178
239
|
end
|
179
240
|
|
180
|
-
it "
|
181
|
-
expect(window.tmux_new_window_command).to
|
241
|
+
it "does not set name option" do
|
242
|
+
expect(window.tmux_new_window_command).to eq full_command
|
182
243
|
end
|
183
244
|
end
|
184
245
|
end
|