tmuxinator 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc5773ff4f15a7fe8845c86254fd30a2955fc2b27696868e011c3bd7270b5338
4
- data.tar.gz: 3af29bcfbcb61b3cf0fc25ef750f5abe027ab227d87b7cdc232f43f3ed497097
3
+ metadata.gz: 2a42092fba4aebfc0a51747b734727ae7593aaeae59ebfd315b037035acf1f0d
4
+ data.tar.gz: a9056816cf163274485aefa281c524661f38023435b358bb31fb7a3bc76c58a4
5
5
  SHA512:
6
- metadata.gz: c47cf13e6a6bf16dca8c92ed7c75717c15bb6c10e012ebb30b6ebe629fd93466f96c0add8d230bb4d42d0e37f7c4324aa76c7c39e63a15b4abda5124ae5dec42
7
- data.tar.gz: f3f676e33b049051b264eaec47eaaca6ce4b3d3ce67e96a8857599216e60269ec3fe28c34bee490151fdfdc94269477904fa256fd9ff6ba58e53299a2ef82ebc
6
+ metadata.gz: 14f58f568d7f1dee72b344a5ac82f88ce913471da6efa86fa13e966cbe79a304823ff3843cf0a0c16f36c190bce08e0a7f3a6322cf4af57aeb3c486fedce42d9
7
+ data.tar.gz: 28a231359aabc6b1fae54d8add528e4dfcf0f7a49bb33e8a134750b389cbeb0eaa89d1733f82b54e409353a0ddfa2e953c50d1a426708eeb093112dc47349db9
@@ -9,9 +9,9 @@ module Tmuxinator
9
9
  class << self
10
10
  # The directory (created if needed) in which to store new projects
11
11
  def directory
12
- return environment if File.directory?(environment)
13
- return xdg if File.directory?(xdg)
14
- return home if File.directory?(home)
12
+ return environment if environment?
13
+ return xdg if xdg?
14
+ return home if home?
15
15
  # No project directory specified or existant, default to XDG:
16
16
  FileUtils::mkdir_p(xdg)
17
17
  xdg
@@ -21,6 +21,10 @@ module Tmuxinator
21
21
  ENV["HOME"] + "/.tmuxinator"
22
22
  end
23
23
 
24
+ def home?
25
+ File.directory?(home)
26
+ end
27
+
24
28
  # ~/.config/tmuxinator unless $XDG_CONFIG_HOME has been configured to use
25
29
  # a custom value. (e.g. if $XDG_CONFIG_HOME is set to ~/my-config, the
26
30
  # return value will be ~/my-config/tmuxinator)
@@ -28,6 +32,10 @@ module Tmuxinator
28
32
  XDG["CONFIG"].to_s + "/tmuxinator"
29
33
  end
30
34
 
35
+ def xdg?
36
+ File.directory?(xdg)
37
+ end
38
+
31
39
  # $TMUXINATOR_CONFIG (and create directory) or "".
32
40
  def environment
33
41
  environment = ENV["TMUXINATOR_CONFIG"]
@@ -36,6 +44,10 @@ module Tmuxinator
36
44
  environment
37
45
  end
38
46
 
47
+ def environment?
48
+ File.directory?(environment)
49
+ end
50
+
39
51
  def sample
40
52
  asset_path "sample.yml"
41
53
  end
@@ -119,7 +131,7 @@ module Tmuxinator
119
131
  # Listed in search order
120
132
  # Used by `implode` and `list` commands
121
133
  def directories
122
- if !environment.nil? && !environment.empty?
134
+ if environment?
123
135
  [environment]
124
136
  else
125
137
  [xdg, home].select { |d| File.directory? d }
@@ -181,8 +193,8 @@ module Tmuxinator
181
193
  # recursively searching 'directory'
182
194
  def project_in(directory, name)
183
195
  return nil if String(directory).empty?
184
- projects = Dir.glob("#{directory}/**/*.yml").sort
185
- projects.detect { |project| File.basename(project, ".yml") == name }
196
+ projects = Dir.glob("#{directory}/**/*.{yml,yaml}").sort
197
+ projects.detect { |project| File.basename(project, ".*") == name }
186
198
  end
187
199
  end
188
200
  end
@@ -1,3 +1,3 @@
1
1
  module Tmuxinator
2
- VERSION = "0.14.0".freeze
2
+ VERSION = "0.15.0".freeze
3
3
  end
@@ -0,0 +1,40 @@
1
+ # ~/.tmuxinator/sample.yml
2
+ # you can make as many tabs as you wish...
3
+
4
+ name: sample
5
+ root: ~/test
6
+ socket_name: foo # Remove to use default socket
7
+ pre_window: rbenv shell 2.0.0-p247 # Runs in each tab and pane
8
+ tmux_options: -f ~/.tmux.mac.conf # Pass arguments to tmux
9
+ tmux_detached: false
10
+ windows:
11
+ - editor:
12
+ pre:
13
+ - echo "I get run in each pane, before each pane command!"
14
+ -
15
+ layout: main-vertical
16
+ panes:
17
+ - vim
18
+ - #empty, will just run plain bash
19
+ - top
20
+ - pane_with_multiple_commands:
21
+ - ssh server
22
+ - echo "Hello"
23
+ - shell:
24
+ - git pull
25
+ - git merge
26
+ - guard:
27
+ layout: tiled
28
+ pre:
29
+ - echo "I get run in each pane."
30
+ - echo "Before each pane command!"
31
+ panes:
32
+ -
33
+ - #empty, will just run plain bash
34
+ -
35
+ - database: bundle exec rails db
36
+ - server: bundle exec rails s
37
+ - logs: tail -f log/development.log
38
+ - console: bundle exec rails c
39
+ - capistrano:
40
+ - server: ssh user@example.com
@@ -24,7 +24,8 @@ describe Tmuxinator::Cli do
24
24
  end
25
25
  end
26
26
 
27
- let(:cli) { Tmuxinator::Cli }
27
+ subject(:cli) { described_class }
28
+
28
29
  let(:fixtures_dir) { File.expand_path("../../../fixtures/", __FILE__) }
29
30
  let(:project) { FactoryBot.build(:project) }
30
31
  let(:project_config) do
@@ -421,7 +422,7 @@ describe Tmuxinator::Cli do
421
422
  expect(File).not_to exist(path)
422
423
 
423
424
  # now generate a project file
424
- expect(Tmuxinator::Cli.new.generate_project_file(name, path)).to eq path
425
+ expect(described_class.new.generate_project_file(name, path)).to eq path
425
426
  expect(File).to exist path
426
427
 
427
428
  # add some content to the project file
@@ -829,7 +830,7 @@ describe Tmuxinator::Cli do
829
830
  end
830
831
 
831
832
  it "should generate a project file" do
832
- new_path = Tmuxinator::Cli.new.find_project_file(name, false)
833
+ new_path = described_class.new.find_project_file(name, false)
833
834
  expect(new_path).to eq path
834
835
  expect(File).to exist new_path
835
836
  end
@@ -840,7 +841,7 @@ describe Tmuxinator::Cli do
840
841
 
841
842
  before do
842
843
  expect(File).not_to exist(path), "expected file at #{path} not to exist"
843
- expect(Tmuxinator::Cli.new.generate_project_file(name, path)).to eq path
844
+ expect(described_class.new.generate_project_file(name, path)).to eq path
844
845
  expect(File).to exist path
845
846
 
846
847
  File.open(path, "w") do |f|
@@ -851,7 +852,7 @@ describe Tmuxinator::Cli do
851
852
  end
852
853
 
853
854
  it "should _not_ generate a new project file" do
854
- new_path = Tmuxinator::Cli.new.find_project_file(name, false)
855
+ new_path = described_class.new.find_project_file(name, false)
855
856
  expect(new_path).to eq path
856
857
  expect(File).to exist new_path
857
858
  expect(File.read(new_path)).to match %r{#{extra}}
@@ -866,7 +867,7 @@ describe Tmuxinator::Cli do
866
867
  Dir.mktmpdir do |dir|
867
868
  path = "#{dir}/#{name}.yml"
868
869
  expect(File).not_to exist(path), "expected file at #{path} not to exist"
869
- new_path = Tmuxinator::Cli.new.generate_project_file(name, path)
870
+ new_path = described_class.new.generate_project_file(name, path)
870
871
  expect(new_path).to eq path
871
872
  expect(File).to exist new_path
872
873
  end
@@ -877,7 +878,7 @@ describe Tmuxinator::Cli do
877
878
  allow(File).to receive(:open) { |&block| block.yield file }
878
879
  Dir.mktmpdir do |dir|
879
880
  path = "#{dir}/#{name}.yml"
880
- _ = Tmuxinator::Cli.new.generate_project_file(name, path)
881
+ _ = described_class.new.generate_project_file(name, path)
881
882
  expect(file.string).to match %r{\A# #{path}$}
882
883
  end
883
884
  end
@@ -915,18 +916,18 @@ describe Tmuxinator::Cli do
915
916
  context "attach option" do
916
917
  describe "detach" do
917
918
  it "sets force_detach to false when no attach argument is provided" do
918
- project = Tmuxinator::Cli.new.create_project(name: name)
919
+ project = described_class.new.create_project(name: name)
919
920
  expect(project.force_detach).to eq(false)
920
921
  end
921
922
 
922
923
  it "sets force_detach to true when 'attach: false' is provided" do
923
- project = Tmuxinator::Cli.new.create_project(attach: false,
924
+ project = described_class.new.create_project(attach: false,
924
925
  name: name)
925
926
  expect(project.force_detach).to eq(true)
926
927
  end
927
928
 
928
929
  it "sets force_detach to false when 'attach: true' is provided" do
929
- project = Tmuxinator::Cli.new.create_project(attach: true,
930
+ project = described_class.new.create_project(attach: true,
930
931
  name: name)
931
932
  expect(project.force_detach).to eq(false)
932
933
  end
@@ -934,18 +935,18 @@ describe Tmuxinator::Cli do
934
935
 
935
936
  describe "attach" do
936
937
  it "sets force_attach to false when no attach argument is provided" do
937
- project = Tmuxinator::Cli.new.create_project(name: name)
938
+ project = described_class.new.create_project(name: name)
938
939
  expect(project.force_attach).to eq(false)
939
940
  end
940
941
 
941
942
  it "sets force_attach to true when 'attach: true' is provided" do
942
- project = Tmuxinator::Cli.new.create_project(attach: true,
943
+ project = described_class.new.create_project(attach: true,
943
944
  name: name)
944
945
  expect(project.force_attach).to eq(true)
945
946
  end
946
947
 
947
948
  it "sets force_attach to false when 'attach: false' is provided" do
948
- project = Tmuxinator::Cli.new.create_project(attach: false,
949
+ project = described_class.new.create_project(attach: false,
949
950
  name: name)
950
951
  expect(project.force_attach).to eq(false)
951
952
  end
@@ -11,55 +11,50 @@ describe Tmuxinator::Config do
11
11
  allow(ENV).to receive(:[]).with("TMUXINATOR_CONFIG").
12
12
  and_return "expected"
13
13
  allow(File).to receive(:directory?).and_return true
14
- expect(Tmuxinator::Config.directory).to eq "expected"
14
+ expect(described_class.directory).to eq "expected"
15
15
  end
16
16
  end
17
17
 
18
18
  context "only ~/.tmuxinator exists" do
19
19
  it "is ~/.tmuxinator" do
20
- allow(File).to receive(:directory?).
21
- with(Tmuxinator::Config.environment).and_return false
22
- allow(File).to receive(:directory?).
23
- with(Tmuxinator::Config.xdg).and_return false
24
- allow(File).to receive(:directory?).
25
- with(Tmuxinator::Config.home).and_return true
26
- expect(Tmuxinator::Config.directory).to eq Tmuxinator::Config.home
20
+ allow(described_class).to receive(:environment?).and_return false
21
+ allow(described_class).to receive(:xdg?).and_return false
22
+ allow(described_class).to receive(:home?).and_return true
23
+
24
+ expect(described_class.directory).to eq described_class.home
27
25
  end
28
26
  end
29
27
 
30
28
  context "only $XDG_CONFIG_HOME/tmuxinator exists" do
31
29
  it "is #xdg" do
32
- allow(File).to receive(:directory?).
33
- with(Tmuxinator::Config.environment).and_return false
34
- allow(File).to receive(:directory?).
35
- with(Tmuxinator::Config.xdg).and_return true
36
- allow(File).to receive(:directory?).
37
- with(Tmuxinator::Config.home).and_return false
38
- expect(Tmuxinator::Config.directory).to eq Tmuxinator::Config.xdg
30
+ allow(described_class).to receive(:environment?).and_return false
31
+ allow(described_class).to receive(:xdg?).and_return true
32
+ allow(described_class).to receive(:home?).and_return false
33
+
34
+ expect(described_class.directory).to eq described_class.xdg
39
35
  end
40
36
  end
41
37
 
42
38
  context "both $XDG_CONFIG_HOME/tmuxinator and ~/.tmuxinator exist" do
43
39
  it "is #xdg" do
44
- allow(File).to receive(:directory?).
45
- with(Tmuxinator::Config.environment).and_return false
46
- allow(File).to receive(:directory?).
47
- with(Tmuxinator::Config.xdg).and_return true
48
- allow(File).to receive(:directory?).
49
- with(Tmuxinator::Config.home).and_return true
50
- expect(Tmuxinator::Config.directory).to eq Tmuxinator::Config.xdg
40
+ allow(described_class).to receive(:environment?).and_return false
41
+ allow(described_class).to receive(:xdg?).and_return true
42
+ allow(described_class).to receive(:home?).and_return true
43
+
44
+ expect(described_class.directory).to eq described_class.xdg
51
45
  end
52
46
  end
53
47
 
54
- context "parent directory(s) do not exist" do
48
+ context "defaulting to xdg with parent directory(s) that do not exist" do
55
49
  it "creates parent directories if required" do
56
- allow(File).to receive(:directory?).and_call_original
57
- allow(File).to receive(:directory?).with(Tmuxinator::Config.home).
58
- and_return false
50
+ allow(described_class).to receive(:environment?).and_return false
51
+ allow(described_class).to receive(:xdg?).and_return false
52
+ allow(described_class).to receive(:home?).and_return false
53
+
59
54
  Dir.mktmpdir do |dir|
60
55
  config_parent = "#{dir}/non_existant_parent/s"
61
56
  allow(XDG).to receive(:[]).with("CONFIG").and_return config_parent
62
- expect(Tmuxinator::Config.directory).
57
+ expect(described_class.directory).
63
58
  to eq "#{config_parent}/tmuxinator"
64
59
  expect(File.directory?("#{config_parent}/tmuxinator")).to be true
65
60
  end
@@ -74,7 +69,7 @@ describe Tmuxinator::Config do
74
69
  and_return "expected"
75
70
  # allow(XDG).to receive(:[]).with("CONFIG").and_return "expected"
76
71
  allow(File).to receive(:directory?).and_return true
77
- expect(Tmuxinator::Config.environment).to eq "expected"
72
+ expect(described_class.environment).to eq "expected"
78
73
  end
79
74
  end
80
75
 
@@ -84,67 +79,79 @@ describe Tmuxinator::Config do
84
79
  and_return nil
85
80
  # allow(XDG).to receive(:[]).with("CONFIG").and_return nil
86
81
  allow(File).to receive(:directory?).and_return true
87
- expect(Tmuxinator::Config.environment).to eq ""
82
+ expect(described_class.environment).to eq ""
88
83
  end
89
84
  end
90
85
 
91
86
  context "environment variable $TMUXINATOR_CONFIG is set and empty" do
92
87
  it "is an empty string" do
93
88
  allow(XDG).to receive(:[]).with("CONFIG").and_return ""
94
- expect(Tmuxinator::Config.environment).to eq ""
89
+ allow(ENV).to receive(:[]).with("TMUXINATOR_CONFIG").and_return ""
90
+ expect(described_class.environment).to eq ""
95
91
  end
96
92
  end
97
93
  end
98
94
 
99
95
  describe "#directories" do
100
- it "is empty if no configuration directories exist" do
101
- allow(File).to receive(:directory?).and_return false
102
- expect(Tmuxinator::Config.directories).to eq []
103
- end
96
+ context "without TMUXINATOR_CONFIG environment" do
97
+ before do
98
+ allow(described_class).to receive(:environment?).and_return false
99
+ end
104
100
 
105
- it "is only [$TMUXINATOR_CONFIG] if set" do
106
- allow(ENV).to receive(:[]).with("TMUXINATOR_CONFIG").
107
- and_return "expected"
108
- allow(File).to receive(:directory?).and_return true
109
- expect(Tmuxinator::Config.directories).to eq ["expected"]
101
+ it "is empty if no configuration directories exist" do
102
+ allow(File).to receive(:directory?).and_return false
103
+ expect(described_class.directories).to eq []
104
+ end
105
+
106
+ it "contains #xdg before #home" do
107
+ allow(described_class).to receive(:xdg).and_return "XDG"
108
+ allow(described_class).to receive(:home).and_return "HOME"
109
+ allow(File).to receive(:directory?).and_return true
110
+
111
+ expect(described_class.directories).to eq \
112
+ ["XDG", "HOME"]
113
+ end
110
114
  end
111
115
 
112
- it "contains #xdg before #home" do
113
- allow(File).to receive(:directory?).with(Tmuxinator::Config.xdg).
114
- and_return true
115
- allow(File).to receive(:directory?).with(Tmuxinator::Config.home).
116
- and_return true
117
- expect(Tmuxinator::Config.directories).to eq \
118
- [Tmuxinator::Config.xdg, Tmuxinator::Config.home]
116
+ context "with TMUXINATOR_CONFIG environment" do
117
+ before do
118
+ allow(ENV).to receive(:[]).with("TMUXINATOR_CONFIG").
119
+ and_return "TMUXINATOR_CONFIG"
120
+ end
121
+ it "is only [$TMUXINATOR_CONFIG] if set" do
122
+ allow(File).to receive(:directory?).and_return true
123
+
124
+ expect(described_class.directories).to eq ["TMUXINATOR_CONFIG"]
125
+ end
119
126
  end
120
127
  end
121
128
 
122
129
  describe "#home" do
123
130
  it "is ~/.tmuxinator" do
124
- expect(Tmuxinator::Config.home).to eq "#{ENV['HOME']}/.tmuxinator"
131
+ expect(described_class.home).to eq "#{ENV['HOME']}/.tmuxinator"
125
132
  end
126
133
  end
127
134
 
128
135
  describe "#xdg" do
129
136
  it "is $XDG_CONFIG_HOME/tmuxinator" do
130
- expect(Tmuxinator::Config.xdg).to eq "#{XDG['CONFIG_HOME']}/tmuxinator"
137
+ expect(described_class.xdg).to eq "#{XDG['CONFIG_HOME']}/tmuxinator"
131
138
  end
132
139
  end
133
140
 
134
141
  describe "#sample" do
135
142
  it "gets the path of the sample project" do
136
- expect(Tmuxinator::Config.sample).to include("sample.yml")
143
+ expect(described_class.sample).to include("sample.yml")
137
144
  end
138
145
  end
139
146
 
140
147
  describe "#default" do
141
148
  it "gets the path of the default config" do
142
- expect(Tmuxinator::Config.default).to include("default.yml")
149
+ expect(described_class.default).to include("default.yml")
143
150
  end
144
151
  end
145
152
 
146
153
  describe "#version" do
147
- subject { Tmuxinator::Config.version }
154
+ subject { described_class.version }
148
155
 
149
156
  before do
150
157
  expect(Tmuxinator::Doctor).to receive(:installed?).and_return(true)
@@ -166,29 +173,29 @@ describe Tmuxinator::Config do
166
173
  describe "#default_path_option" do
167
174
  context ">= 1.8" do
168
175
  before do
169
- allow(Tmuxinator::Config).to receive(:version).and_return(1.8)
176
+ allow(described_class).to receive(:version).and_return(1.8)
170
177
  end
171
178
 
172
179
  it "returns -c" do
173
- expect(Tmuxinator::Config.default_path_option).to eq "-c"
180
+ expect(described_class.default_path_option).to eq "-c"
174
181
  end
175
182
  end
176
183
 
177
184
  context "< 1.8" do
178
185
  before do
179
- allow(Tmuxinator::Config).to receive(:version).and_return(1.7)
186
+ allow(described_class).to receive(:version).and_return(1.7)
180
187
  end
181
188
 
182
189
  it "returns default-path" do
183
- expect(Tmuxinator::Config.default_path_option).to eq "default-path"
190
+ expect(described_class.default_path_option).to eq "default-path"
184
191
  end
185
192
  end
186
193
  end
187
194
 
188
195
  describe "#default?" do
189
- let(:directory) { Tmuxinator::Config.directory }
190
- let(:local_default) { Tmuxinator::Config::LOCAL_DEFAULT }
191
- let(:proj_default) { Tmuxinator::Config.default }
196
+ let(:directory) { described_class.directory }
197
+ let(:local_default) { described_class::LOCAL_DEFAULT }
198
+ let(:proj_default) { described_class.default }
192
199
 
193
200
  context "when the file exists" do
194
201
  before do
@@ -197,7 +204,7 @@ describe Tmuxinator::Config do
197
204
  end
198
205
 
199
206
  it "returns true" do
200
- expect(Tmuxinator::Config.default?).to be_truthy
207
+ expect(described_class.default?).to be_truthy
201
208
  end
202
209
  end
203
210
 
@@ -208,105 +215,115 @@ describe Tmuxinator::Config do
208
215
  end
209
216
 
210
217
  it "returns true" do
211
- expect(Tmuxinator::Config.default?).to be_falsey
218
+ expect(described_class.default?).to be_falsey
212
219
  end
213
220
  end
214
221
  end
215
222
 
216
223
  describe "#configs" do
217
224
  before do
218
- allow(Tmuxinator::Config).to receive_messages(xdg: xdg_config_dir)
219
- allow(Tmuxinator::Config).to receive_messages(home: home_config_dir)
225
+ allow(described_class).to receive_messages(xdg: xdg_config_dir)
226
+ allow(described_class).to receive_messages(home: home_config_dir)
220
227
  end
221
228
 
222
229
  it "gets a sorted list of all projects" do
223
- expect(Tmuxinator::Config.configs).
230
+ allow(described_class).to receive(:environment?).and_return false
231
+
232
+ expect(described_class.configs).
224
233
  to eq ["both", "both", "dup/local-dup", "home", "local-dup", "xdg"]
225
234
  end
226
235
 
227
236
  it "lists only projects in $TMUXINATOR_CONFIG when set" do
228
237
  allow(ENV).to receive(:[]).with("TMUXINATOR_CONFIG").
229
238
  and_return "#{fixtures_dir}/TMUXINATOR_CONFIG"
230
- expect(Tmuxinator::Config.configs).to eq ["TMUXINATOR_CONFIG"]
239
+ expect(described_class.configs).to eq ["TMUXINATOR_CONFIG"]
231
240
  end
232
241
  end
233
242
 
234
243
  describe "#exists?" do
235
244
  before do
236
245
  allow(File).to receive_messages(exist?: true)
237
- allow(Tmuxinator::Config).to receive_messages(project: "")
246
+ allow(described_class).to receive_messages(project: "")
238
247
  end
239
248
 
240
249
  it "checks if the given project exists" do
241
- expect(Tmuxinator::Config.exists?(name: "test")).to be_truthy
250
+ expect(described_class.exists?(name: "test")).to be_truthy
242
251
  end
243
252
  end
244
253
 
245
254
  describe "#global_project" do
246
- let(:directory) { Tmuxinator::Config.directory }
255
+ let(:directory) { described_class.directory }
247
256
  let(:base) { "#{directory}/sample.yml" }
248
257
  let(:first_dup) { "#{home_config_dir}/dup/local-dup.yml" }
258
+ let(:yaml) { "#{directory}/yaml.yaml" }
249
259
 
250
260
  before do
251
- allow(Tmuxinator::Config).to receive_messages(xdg: fixtures_dir)
252
- allow(Tmuxinator::Config).to receive_messages(home: fixtures_dir)
261
+ allow(described_class).to receive(:environment?).and_return false
262
+ allow(described_class).to receive(:xdg).and_return fixtures_dir
263
+ allow(described_class).to receive(:home).and_return fixtures_dir
253
264
  end
254
265
 
255
266
  context "with project yml" do
256
267
  it "gets the project as path to the yml file" do
257
- expect(Tmuxinator::Config.global_project("sample")).to eq base
268
+ expect(described_class.global_project("sample")).to eq base
269
+ end
270
+ end
271
+
272
+ context "with project yaml" do
273
+ it "gets the project as path to the yaml file" do
274
+ expect(Tmuxinator::Config.global_project("yaml")).to eq yaml
258
275
  end
259
276
  end
260
277
 
261
278
  context "without project yml" do
262
279
  it "gets the project as path to the yml file" do
263
- expect(Tmuxinator::Config.global_project("new-project")).to be_nil
280
+ expect(described_class.global_project("new-project")).to be_nil
264
281
  end
265
282
  end
266
283
 
267
284
  context "with duplicate project files" do
268
285
  it "is the first .yml file found" do
269
- expect(Tmuxinator::Config.global_project("local-dup")).to eq first_dup
286
+ expect(described_class.global_project("local-dup")).to eq first_dup
270
287
  end
271
288
  end
272
289
  end
273
290
 
274
291
  describe "#local?" do
275
292
  it "checks if the given project exists" do
276
- path = Tmuxinator::Config::LOCAL_DEFAULT
293
+ path = described_class::LOCAL_DEFAULT
277
294
  expect(File).to receive(:exist?).with(path) { true }
278
- expect(Tmuxinator::Config.local?).to be_truthy
295
+ expect(described_class.local?).to be_truthy
279
296
  end
280
297
  end
281
298
 
282
299
  describe "#local_project" do
283
- let(:default) { Tmuxinator::Config::LOCAL_DEFAULT }
300
+ let(:default) { described_class::LOCAL_DEFAULT }
284
301
 
285
302
  context "with a project yml" do
286
303
  it "gets the project as path to the yml file" do
287
304
  expect(File).to receive(:exist?).with(default) { true }
288
- expect(Tmuxinator::Config.local_project).to eq default
305
+ expect(described_class.local_project).to eq default
289
306
  end
290
307
  end
291
308
 
292
309
  context "without project yml" do
293
310
  it "gets the project as path to the yml file" do
294
- expect(Tmuxinator::Config.local_project).to be_nil
311
+ expect(described_class.local_project).to be_nil
295
312
  end
296
313
  end
297
314
  end
298
315
 
299
316
  describe "#project" do
300
- let(:directory) { Tmuxinator::Config.directory }
301
- let(:default) { Tmuxinator::Config::LOCAL_DEFAULT }
317
+ let(:directory) { described_class.directory }
318
+ let(:default) { described_class::LOCAL_DEFAULT }
302
319
 
303
320
  context "with an non-local project yml" do
304
321
  before do
305
- allow(Tmuxinator::Config).to receive_messages(directory: fixtures_dir)
322
+ allow(described_class).to receive_messages(directory: fixtures_dir)
306
323
  end
307
324
 
308
325
  it "gets the project as path to the yml file" do
309
- expect(Tmuxinator::Config.project("sample")).
326
+ expect(described_class.project("sample")).
310
327
  to eq "#{directory}/sample.yml"
311
328
  end
312
329
  end
@@ -314,48 +331,48 @@ describe Tmuxinator::Config do
314
331
  context "with a local project, but no global project" do
315
332
  it "gets the project as path to the yml file" do
316
333
  expect(File).to receive(:exist?).with(default) { true }
317
- expect(Tmuxinator::Config.project("sample")).to eq "./.tmuxinator.yml"
334
+ expect(described_class.project("sample")).to eq "./.tmuxinator.yml"
318
335
  end
319
336
  end
320
337
 
321
338
  context "without project yml" do
322
339
  let(:expected) { "#{directory}/new-project.yml" }
323
340
  it "gets the project as path to the yml file" do
324
- expect(Tmuxinator::Config.project("new-project")).to eq expected
341
+ expect(described_class.project("new-project")).to eq expected
325
342
  end
326
343
  end
327
344
  end
328
345
 
329
346
  describe "#validate" do
330
- let(:default) { Tmuxinator::Config::LOCAL_DEFAULT }
347
+ let(:default) { described_class::LOCAL_DEFAULT }
331
348
 
332
349
  context "when a project config file is provided" do
333
350
  it "should raise if the project config file can't be found" do
334
351
  project_config = "dont-exist.yml"
335
352
  regex = /Project config \(#{project_config}\) doesn't exist\./
336
353
  expect do
337
- Tmuxinator::Config.validate(project_config: project_config)
354
+ described_class.validate(project_config: project_config)
338
355
  end.to raise_error RuntimeError, regex
339
356
  end
340
357
 
341
358
  it "should load and validate the project" do
342
359
  project_config = File.join(fixtures_dir, "sample.yml")
343
- expect(Tmuxinator::Config.validate(project_config: project_config)).to \
360
+ expect(described_class.validate(project_config: project_config)).to \
344
361
  be_a Tmuxinator::Project
345
362
  end
346
363
 
347
364
  it "should take precedence over a named project" do
348
- allow(Tmuxinator::Config).to receive_messages(directory: fixtures_dir)
365
+ allow(described_class).to receive_messages(directory: fixtures_dir)
349
366
  project_config = File.join(fixtures_dir, "sample_number_as_name.yml")
350
- project = Tmuxinator::Config.validate(name: "sample",
351
- project_config: project_config)
367
+ project = described_class.validate(name: "sample",
368
+ project_config: project_config)
352
369
  expect(project.name).to eq("222")
353
370
  end
354
371
 
355
372
  it "should take precedence over a local project" do
356
- expect(Tmuxinator::Config).not_to receive(:local?)
373
+ expect(described_class).not_to receive(:local?)
357
374
  project_config = File.join(fixtures_dir, "sample_number_as_name.yml")
358
- project = Tmuxinator::Config.validate(project_config: project_config)
375
+ project = described_class.validate(project_config: project_config)
359
376
  expect(project.name).to eq("222")
360
377
  end
361
378
  end
@@ -363,13 +380,13 @@ describe Tmuxinator::Config do
363
380
  context "when a project name is provided" do
364
381
  it "should raise if the project file can't be found" do
365
382
  expect do
366
- Tmuxinator::Config.validate(name: "sample")
383
+ described_class.validate(name: "sample")
367
384
  end.to raise_error RuntimeError, %r{Project.+doesn't.exist}
368
385
  end
369
386
 
370
387
  it "should load and validate the project" do
371
- expect(Tmuxinator::Config).to receive_messages(directory: fixtures_dir)
372
- expect(Tmuxinator::Config.validate(name: "sample")).to \
388
+ expect(described_class).to receive_messages(directory: fixtures_dir)
389
+ expect(described_class.validate(name: "sample")).to \
373
390
  be_a Tmuxinator::Project
374
391
  end
375
392
  end
@@ -378,7 +395,7 @@ describe Tmuxinator::Config do
378
395
  it "should raise if the local project file doesn't exist" do
379
396
  expect(File).to receive(:exist?).with(default) { false }
380
397
  expect do
381
- Tmuxinator::Config.validate
398
+ described_class.validate
382
399
  end.to raise_error RuntimeError, %r{Project.+doesn't.exist}
383
400
  end
384
401
 
@@ -388,18 +405,19 @@ describe Tmuxinator::Config do
388
405
  expect(File).to receive(:exist?).with(default).at_least(:once) { true }
389
406
  expect(File).to receive(:read).with(default).and_return(content)
390
407
 
391
- expect(Tmuxinator::Config.validate).to be_a Tmuxinator::Project
408
+ expect(described_class.validate).to be_a Tmuxinator::Project
392
409
  end
393
410
  end
394
411
 
395
412
  context "when no project can be found" do
396
413
  it "should raise with NO_PROJECT_FOUND_MSG" do
397
- config = Tmuxinator::Config
398
- expect(config).to receive(:valid_project_config?).and_return(false)
399
- expect(config).to receive(:valid_local_project?).and_return(false)
400
- expect(config).to receive(:valid_standard_project?).and_return(false)
414
+ expect(described_class).to receive_messages(
415
+ valid_project_config?: false,
416
+ valid_local_project?: false,
417
+ valid_standard_project?: false
418
+ )
401
419
  expect do
402
- Tmuxinator::Config.validate
420
+ described_class.validate
403
421
  end.to raise_error RuntimeError, %r{Project could not be found\.}
404
422
  end
405
423
  end
@@ -8,7 +8,7 @@ describe Tmuxinator::Doctor do
8
8
  end
9
9
 
10
10
  it "returns true" do
11
- expect(Tmuxinator::Doctor.installed?).to be_truthy
11
+ expect(described_class.installed?).to be_truthy
12
12
  end
13
13
  end
14
14
 
@@ -18,7 +18,7 @@ describe Tmuxinator::Doctor do
18
18
  end
19
19
 
20
20
  it "returns false" do
21
- expect(Tmuxinator::Doctor.installed?).to be_falsey
21
+ expect(described_class.installed?).to be_falsey
22
22
  end
23
23
  end
24
24
  end
@@ -30,7 +30,7 @@ describe Tmuxinator::Doctor do
30
30
  end
31
31
 
32
32
  it "returns true" do
33
- expect(Tmuxinator::Doctor.editor?).to be_truthy
33
+ expect(described_class.editor?).to be_truthy
34
34
  end
35
35
  end
36
36
 
@@ -40,7 +40,7 @@ describe Tmuxinator::Doctor do
40
40
  end
41
41
 
42
42
  it "returns false" do
43
- expect(Tmuxinator::Doctor.editor?).to be_falsey
43
+ expect(described_class.editor?).to be_falsey
44
44
  end
45
45
  end
46
46
  end
@@ -52,7 +52,7 @@ describe Tmuxinator::Doctor do
52
52
  end
53
53
 
54
54
  it "returns true" do
55
- expect(Tmuxinator::Doctor.shell?).to be_truthy
55
+ expect(described_class.shell?).to be_truthy
56
56
  end
57
57
  end
58
58
 
@@ -62,7 +62,7 @@ describe Tmuxinator::Doctor do
62
62
  end
63
63
 
64
64
  it "returns false" do
65
- expect(Tmuxinator::Doctor.shell?).to be_falsey
65
+ expect(described_class.shell?).to be_falsey
66
66
  end
67
67
  end
68
68
  end
@@ -33,12 +33,12 @@ describe Tmuxinator::Window do
33
33
  }
34
34
  end
35
35
 
36
- let(:window) { Tmuxinator::Window.new(yaml, 0, project) }
37
- let(:window_root) { Tmuxinator::Window.new(yaml_root, 0, project) }
36
+ let(:window) { described_class.new(yaml, 0, project) }
37
+ let(:window_root) { described_class.new(yaml_root, 0, project) }
38
38
 
39
39
  shared_context "window command context" do
40
40
  let(:project) { double(:project) }
41
- let(:window) { Tmuxinator::Window.new(yaml, 0, project) }
41
+ let(:window) { described_class.new(yaml, 0, project) }
42
42
  let(:root?) { true }
43
43
  let(:root) { "/project/tmuxinator" }
44
44
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tmuxinator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Allen Bargi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-12-09 00:00:00.000000000 Z
12
+ date: 2018-12-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: erubis
@@ -272,6 +272,7 @@ files:
272
272
  - spec/fixtures/sample_with_project_config.yml
273
273
  - spec/fixtures/xdg-tmuxinator/both.yml
274
274
  - spec/fixtures/xdg-tmuxinator/xdg.yml
275
+ - spec/fixtures/yaml.yaml
275
276
  - spec/lib/tmuxinator/cli_spec.rb
276
277
  - spec/lib/tmuxinator/config_spec.rb
277
278
  - spec/lib/tmuxinator/doctor_spec.rb
@@ -335,6 +336,7 @@ test_files:
335
336
  - spec/fixtures/sample_with_project_config.yml
336
337
  - spec/fixtures/xdg-tmuxinator/both.yml
337
338
  - spec/fixtures/xdg-tmuxinator/xdg.yml
339
+ - spec/fixtures/yaml.yaml
338
340
  - spec/lib/tmuxinator/cli_spec.rb
339
341
  - spec/lib/tmuxinator/config_spec.rb
340
342
  - spec/lib/tmuxinator/doctor_spec.rb