itamae 1.2.14 → 1.2.15

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e2b12deeb334b692503acf71eb8055c762321c8
4
- data.tar.gz: 59299025a68e4dded3bf4f5b35964cf8283e7aa8
3
+ metadata.gz: 2ca0bac3e644c84e79f48f7a79d593cb5abdaf19
4
+ data.tar.gz: 30ddcc2257758291ffe1202e9c4bdb70dafce38a
5
5
  SHA512:
6
- metadata.gz: e32608366152de7f363b6659e15091388ae4db4eec2503269bd01c8cadddffe499a1e4adc82dd9f8f7d2371739d509c0aea152d48eed74ffc778c006171cf00c
7
- data.tar.gz: 509f6de4c65776642c32b77abb361c0ecb865babcc82e2825f46b424f6f1cc6edd58b936bd224828cc0e8b9dd4ad4c356ea378522e53296df847a9434a1b35f3
6
+ metadata.gz: ef86975d368cab1285c77e7ea78aba0f14bf50aba625405db6f6929df30a7150e0b18c340a8041d3f8f97c2cbfec2dbe6ed2d4ba4e56a0511dbb5c89f3f3a930
7
+ data.tar.gz: 7bf26d88e69315df198c28cef5ea9c1443d374dc86fb27ec0c1a8129dfb283b3a788193f54fe19a25d7fea1f5f1da3ccea4ed7347a2e998126976cc58c0e7c9e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## v1.2.15
2
+
3
+ Bugfixes
4
+
5
+ - [Fix --no-sudo to work properly (by @evalphobia)](https://github.com/itamae-kitchen/itamae/pull/126)
6
+ - [Fix a glitch on raising exception when source doesn't exist (by @mozamimy)](https://github.com/itamae-kitchen/itamae/pull/125)
7
+
1
8
  ## v1.2.14
2
9
 
3
10
  Features
data/itamae.gemspec CHANGED
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "serverspec", "~> 2.1"
30
30
  spec.add_development_dependency "pry-byebug"
31
31
  spec.add_development_dependency "docker-api", "~> 1.20"
32
+ spec.add_development_dependency "fakefs"
32
33
  end
@@ -26,6 +26,7 @@ module Itamae
26
26
  module Backend
27
27
  UnknownBackendTypeError = Class.new(StandardError)
28
28
  CommandExecutionError = Class.new(StandardError)
29
+ SourceNotExistError = Class.new(StandardError)
29
30
 
30
31
  class << self
31
32
  def create(type, opts = {})
@@ -119,18 +120,21 @@ module Itamae
119
120
  def send_file(src, dst)
120
121
  Logger.debug "Sending a file from '#{src}' to '#{dst}'..."
121
122
  unless ::File.exist?(src)
122
- raise Error, "The file '#{src}' doesn't exist."
123
+ raise SourceNotExistError, "The file '#{src}' doesn't exist."
124
+ end
125
+ unless ::File.file?(src)
126
+ raise SourceNotExistError, "'#{src}' is not a file."
123
127
  end
124
128
  @backend.send_file(src, dst)
125
129
  end
126
130
 
127
131
  def send_directory(src, dst)
128
132
  Logger.debug "Sending a directory from '#{src}' to '#{dst}'..."
129
- unless ::File.directory?(src)
130
- raise Error, "'#{src}' is not directory."
131
- end
132
133
  unless ::File.exist?(src)
133
- raise Error, "The directory '#{src}' doesn't exist."
134
+ raise SourceNotExistError, "The directory '#{src}' doesn't exist."
135
+ end
136
+ unless ::File.directory?(src)
137
+ raise SourceNotExistError, "'#{src}' is not a directory."
134
138
  end
135
139
  @backend.send_directory(src, dst)
136
140
  end
@@ -164,7 +168,7 @@ module Itamae
164
168
  Specinfra::Backend::Ssh.new(
165
169
  request_pty: true,
166
170
  host: ssh_options[:host_name],
167
- disable_sudo: ssh_options[:disable_sudo],
171
+ disable_sudo: disable_sudo?,
168
172
  ssh_options: ssh_options,
169
173
  )
170
174
  end
@@ -179,7 +183,6 @@ module Itamae
179
183
  opts[:user] = @options[:user] || opts[:user] || Etc.getlogin
180
184
  opts[:keys] = [@options[:key]] if @options[:key]
181
185
  opts[:port] = @options[:port] if @options[:port]
182
- opts[:disable_sudo] = true unless @options[:sudo]
183
186
 
184
187
  if @options[:vagrant]
185
188
  config = Tempfile.new('', Dir.tmpdir)
@@ -197,6 +200,10 @@ module Itamae
197
200
 
198
201
  opts
199
202
  end
203
+
204
+ def disable_sudo?
205
+ !@options[:sudo]
206
+ end
200
207
  end
201
208
 
202
209
  class Docker < Base
@@ -1 +1 @@
1
- 1.2.14
1
+ 1.2.15
@@ -0,0 +1,94 @@
1
+ require 'spec_helper'
2
+ require 'fakefs/spec_helpers'
3
+
4
+ module Itamae
5
+ module Backend
6
+ describe Base do
7
+ include FakeFS::SpecHelpers
8
+
9
+ class Klass < Itamae::Backend::Base
10
+ def initialize(_)
11
+ @backend = Object.new
12
+ @backend.stub(:send_file)
13
+ @backend.stub(:send_directory)
14
+ end
15
+ end
16
+
17
+ describe ".send_file" do
18
+ context "the source file doesn't exist" do
19
+ subject { -> { Klass.new("dummy").send_file("src", "dst") } }
20
+ it { expect(subject).to raise_error(Itamae::Backend::SourceNotExistError, "The file 'src' doesn't exist.") }
21
+ end
22
+
23
+ context "the source file exist, but it is not a regular file" do
24
+ before { Dir.mkdir("src") }
25
+ subject { -> { Klass.new("dummy").send_file("src", "dst") } }
26
+ it { expect(subject).to raise_error(Itamae::Backend::SourceNotExistError, "'src' is not a file.") }
27
+ end
28
+
29
+ context "the source file is a regular file" do
30
+ before { FileUtils.touch("src") }
31
+ subject { -> { Klass.new("dummy").send_file("src", "dst") } }
32
+ it { expect { subject }.not_to raise_error }
33
+ end
34
+ end
35
+
36
+ describe ".send_directory" do
37
+ context "the source directory doesn't exist" do
38
+ subject { -> { Klass.new("dummy").send_directory("src", "dst") } }
39
+ it { expect(subject).to raise_error(Itamae::Backend::SourceNotExistError, "The directory 'src' doesn't exist.") }
40
+ end
41
+
42
+ context "the source directory exist, but it is not a directory" do
43
+ before { FileUtils.touch("src") }
44
+ subject { -> { Klass.new("dummy").send_directory("src", "dst") } }
45
+ it { expect(subject).to raise_error(Itamae::Backend::SourceNotExistError, "'src' is not a directory.") }
46
+ end
47
+
48
+ context "the source directory is a directory" do
49
+ before { Dir.mkdir("src") }
50
+ subject { -> { Klass.new("dummy").send_directory("src", "dst") } }
51
+ it { expect { subject }.not_to raise_error }
52
+ end
53
+ end
54
+ end
55
+
56
+ describe Ssh do
57
+
58
+ describe "#ssh_options" do
59
+ subject { ssh.send(:ssh_options) }
60
+
61
+ let!(:ssh) { described_class.new(options) }
62
+ let!(:host_name) { "example.com" }
63
+ let!(:default_option) do
64
+ opts = {}
65
+ opts[:host_name] = nil
66
+ opts.merge!(Net::SSH::Config.for(host_name))
67
+ opts[:user] = opts[:user] || Etc.getlogin
68
+ opts
69
+ end
70
+
71
+ context "with host option" do
72
+ let(:options) { {host: host_name} }
73
+ it { is_expected.to eq( default_option.merge({host_name: host_name}) ) }
74
+ end
75
+ end
76
+
77
+ describe "#disable_sudo?" do
78
+ subject { ssh.send(:disable_sudo?) }
79
+
80
+ let!(:ssh) { described_class.new(options)}
81
+
82
+ context "when sudo option is true" do
83
+ let(:options) { {sudo: true} }
84
+ it { is_expected.to eq(false) }
85
+ end
86
+
87
+ context "when sudo option is false" do
88
+ let(:options) { {sudo: false} }
89
+ it { is_expected.to eq(true) }
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itamae
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.14
4
+ version: 1.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Arai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-23 00:00:00.000000000 Z
11
+ date: 2015-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -170,6 +170,20 @@ dependencies:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
172
  version: '1.20'
173
+ - !ruby/object:Gem::Dependency
174
+ name: fakefs
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
173
187
  description:
174
188
  email:
175
189
  - ryota.arai@gmail.com
@@ -233,6 +247,7 @@ files:
233
247
  - spec/integration/recipes/redefine.rb
234
248
  - spec/integration/recipes/templates/template_auto.erb
235
249
  - spec/integration/spec_helper.rb
250
+ - spec/unit/lib/itamae/backend_spec.rb
236
251
  - spec/unit/lib/itamae/config_spec.rb
237
252
  - spec/unit/lib/itamae/logger_spec.rb
238
253
  - spec/unit/lib/itamae/node_spec.rb
@@ -281,6 +296,7 @@ test_files:
281
296
  - spec/integration/recipes/redefine.rb
282
297
  - spec/integration/recipes/templates/template_auto.erb
283
298
  - spec/integration/spec_helper.rb
299
+ - spec/unit/lib/itamae/backend_spec.rb
284
300
  - spec/unit/lib/itamae/config_spec.rb
285
301
  - spec/unit/lib/itamae/logger_spec.rb
286
302
  - spec/unit/lib/itamae/node_spec.rb