specinfra 0.0.11 → 0.0.12
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/Rakefile +12 -2
- data/lib/specinfra/backend/ssh.rb +5 -2
- data/lib/specinfra/configuration.rb +1 -1
- data/lib/specinfra/version.rb +1 -1
- data/lib/specinfra.rb +1 -0
- data/spec/backend/ssh/build_command_spec.rb +98 -0
- data/spec/{configurtaion_spec.rb → configuration_spec.rb} +0 -0
- data/spec/spec_helper.rb +1 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 121e7af246fe65b06bd3a329b7cb9ae0033f547e
|
4
|
+
data.tar.gz: cbfb56fd735652160824ccc683e695ec255dd82e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dd10759511986d426b809a36f4178ec6af45100d6f6c4fc5e7e1071edac2e2eafbe63d72264b7dafc40a25fb02e111d0e3d9149198992778402014232cbda62
|
7
|
+
data.tar.gz: 08a596c0c4335f3f565da659c74a75abacefd335eb67f3ea50a3a12039a6b2f47b6c70045929f6d8c1023835cec1465ffbf9d46b7d4a1762a8db0d1b12fa7053
|
data/Rakefile
CHANGED
@@ -4,8 +4,18 @@ require 'rspec/core/rake_task'
|
|
4
4
|
task :spec => 'spec:all'
|
5
5
|
|
6
6
|
namespace :spec do
|
7
|
-
|
8
|
-
|
7
|
+
task :all => [ :helper, :backend, :configuration ]
|
8
|
+
|
9
|
+
RSpec::Core::RakeTask.new(:helper) do |t|
|
10
|
+
t.pattern = "spec/helper/*_spec.rb"
|
11
|
+
end
|
12
|
+
|
13
|
+
RSpec::Core::RakeTask.new(:backend) do |t|
|
14
|
+
t.pattern = "spec/backend/*/*_spec.rb"
|
15
|
+
end
|
16
|
+
|
17
|
+
RSpec::Core::RakeTask.new(:configuration) do |t|
|
18
|
+
t.pattern = "spec/configuration_spec.rb"
|
9
19
|
end
|
10
20
|
end
|
11
21
|
|
@@ -20,7 +20,9 @@ module SpecInfra
|
|
20
20
|
|
21
21
|
def build_command(cmd)
|
22
22
|
cmd = super(cmd)
|
23
|
-
|
23
|
+
user = SpecInfra.configuration.ssh.options[:user]
|
24
|
+
disable_sudo = SpecInfra.configuration.disable_sudo
|
25
|
+
if user != 'root' && !disable_sudo
|
24
26
|
cmd = "#{sudo} #{cmd}"
|
25
27
|
cmd.gsub!(/(\&\&\s*!?\(?\s*)/, "\\1#{sudo} ")
|
26
28
|
cmd.gsub!(/(\|\|\s*!?\(?\s*)/, "\\1#{sudo} ")
|
@@ -32,7 +34,8 @@ module SpecInfra
|
|
32
34
|
cmd = super(cmd)
|
33
35
|
user = SpecInfra.configuration.ssh.options[:user]
|
34
36
|
pre_command = SpecInfra.configuration.pre_command
|
35
|
-
|
37
|
+
disable_sudo = SpecInfra.configuration.disable_sudo
|
38
|
+
if pre_command && user != 'root' && !disable_sudo
|
36
39
|
cmd = "#{sudo} #{cmd}"
|
37
40
|
end
|
38
41
|
cmd
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module SpecInfra
|
2
2
|
module Configuration
|
3
3
|
class << self
|
4
|
-
VALID_OPTIONS_KEYS = [:path, :pre_command, :stdout, :stderr, :sudo_path, :pass_prompt].freeze
|
4
|
+
VALID_OPTIONS_KEYS = [:path, :pre_command, :stdout, :stderr, :sudo_path, :sudo_disable, :pass_prompt].freeze
|
5
5
|
|
6
6
|
def defaults
|
7
7
|
VALID_OPTIONS_KEYS.inject({}) { |o, k| o.merge!(k => send(k)) }
|
data/lib/specinfra/version.rb
CHANGED
data/lib/specinfra.rb
CHANGED
@@ -21,6 +21,7 @@ if defined?(RSpec)
|
|
21
21
|
c.add_setting :host, :default => nil
|
22
22
|
c.add_setting :ssh, :default => nil
|
23
23
|
c.add_setting :sudo_password, :default => nil
|
24
|
+
c.add_setting :disable_sudo, :default => false
|
24
25
|
c.add_setting :winrm, :default => nil
|
25
26
|
SpecInfra.configuration.defaults.each { |k, v| c.add_setting k, :default => v }
|
26
27
|
c.before :each do
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
include SpecInfra::Helper::Ssh
|
4
|
+
|
5
|
+
ssh = double
|
6
|
+
|
7
|
+
|
8
|
+
describe 'build command with sudo' do
|
9
|
+
before :each do
|
10
|
+
RSpec.configure do |c|
|
11
|
+
ssh.stub(:options) { { :user => 'foo' } }
|
12
|
+
c.ssh = ssh
|
13
|
+
c.sudo_path = nil
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'command pattern 1' do
|
18
|
+
subject { backend.build_command('test -f /etc/passwd') }
|
19
|
+
it { should eq 'sudo test -f /etc/passwd' }
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'command pattern 2' do
|
23
|
+
subject { backend.build_command('test ! -f /etc/selinux/config || (getenforce | grep -i -- disabled && grep -i -- ^SELINUX=disabled$ /etc/selinux/config)') }
|
24
|
+
it { should eq 'sudo test ! -f /etc/selinux/config || (sudo getenforce | grep -i -- disabled && sudo grep -i -- ^SELINUX=disabled$ /etc/selinux/config)' }
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'command pattern 3' do
|
28
|
+
subject { backend.build_command("dpkg -s apache2 && ! dpkg -s apache2 | grep -E '^Status: .+ not-installed$'") }
|
29
|
+
it { should eq "sudo dpkg -s apache2 && ! sudo dpkg -s apache2 | grep -E '^Status: .+ not-installed$'" }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Alternate path for sudo command:
|
34
|
+
sudo_path = '/usr/local/bin'
|
35
|
+
|
36
|
+
describe 'build command with sudo on alternate path' do
|
37
|
+
before :each do
|
38
|
+
RSpec.configure do |c|
|
39
|
+
ssh.stub(:options) { { :user => 'foo' } }
|
40
|
+
c.ssh = ssh
|
41
|
+
c.sudo_path = "#{sudo_path}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
context 'command pattern 1a' do
|
47
|
+
subject { backend.build_command('test -f /etc/passwd') }
|
48
|
+
it { should eq "#{sudo_path}/sudo test -f /etc/passwd" }
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'command pattern 2a' do
|
52
|
+
subject { backend.build_command('test ! -f /etc/selinux/config || (getenforce | grep -i -- disabled && grep -i -- ^SELINUX=disabled$ /etc/selinux/config)') }
|
53
|
+
it { should eq "#{sudo_path}/sudo test ! -f /etc/selinux/config || (#{sudo_path}/sudo getenforce | grep -i -- disabled && #{sudo_path}/sudo grep -i -- ^SELINUX=disabled$ /etc/selinux/config)" }
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'command pattern 3a' do
|
57
|
+
subject { backend.build_command("dpkg -s apache2 && ! dpkg -s apache2 | grep -E '^Status: .+ not-installed$'") }
|
58
|
+
it { should eq "#{sudo_path}/sudo dpkg -s apache2 && ! #{sudo_path}/sudo dpkg -s apache2 | grep -E '^Status: .+ not-installed$'" }
|
59
|
+
end
|
60
|
+
|
61
|
+
after :each do
|
62
|
+
RSpec.configure do |c|
|
63
|
+
c.sudo_path = nil
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
describe 'build command without sudo' do
|
70
|
+
before :each do
|
71
|
+
RSpec.configure do |c|
|
72
|
+
ssh.stub(:options) { { :user => 'foo' } }
|
73
|
+
c.ssh = ssh
|
74
|
+
c.disable_sudo = true
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'command pattern 1b' do
|
79
|
+
subject { backend.build_command('test -f /etc/passwd') }
|
80
|
+
it { should eq 'test -f /etc/passwd' }
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'command pattern 2b' do
|
84
|
+
subject { backend.build_command('test ! -f /etc/selinux/config || (getenforce | grep -i -- disabled && grep -i -- ^SELINUX=disabled$ /etc/selinux/config)') }
|
85
|
+
it { should eq 'test ! -f /etc/selinux/config || (getenforce | grep -i -- disabled && grep -i -- ^SELINUX=disabled$ /etc/selinux/config)' }
|
86
|
+
end
|
87
|
+
|
88
|
+
context 'command pattern 3b' do
|
89
|
+
subject { backend.build_command("dpkg -s apache2 && ! dpkg -s apache2 | grep -E '^Status: .+ not-installed$'") }
|
90
|
+
it { should eq "dpkg -s apache2 && ! dpkg -s apache2 | grep -E '^Status: .+ not-installed$'" }
|
91
|
+
end
|
92
|
+
|
93
|
+
after :each do
|
94
|
+
RSpec.configure do |c|
|
95
|
+
c.disable_sudo = false
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
File without changes
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: specinfra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gosuke Miyashita
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -109,7 +109,8 @@ files:
|
|
109
109
|
- lib/specinfra/helper/properties.rb
|
110
110
|
- lib/specinfra/properties.rb
|
111
111
|
- lib/specinfra/version.rb
|
112
|
-
- spec/
|
112
|
+
- spec/backend/ssh/build_command_spec.rb
|
113
|
+
- spec/configuration_spec.rb
|
113
114
|
- spec/helper/backend_spec.rb
|
114
115
|
- spec/helper/properties_spec.rb
|
115
116
|
- spec/spec_helper.rb
|
@@ -139,7 +140,8 @@ signing_key:
|
|
139
140
|
specification_version: 4
|
140
141
|
summary: Common layer for serverspec and configspec
|
141
142
|
test_files:
|
142
|
-
- spec/
|
143
|
+
- spec/backend/ssh/build_command_spec.rb
|
144
|
+
- spec/configuration_spec.rb
|
143
145
|
- spec/helper/backend_spec.rb
|
144
146
|
- spec/helper/properties_spec.rb
|
145
147
|
- spec/spec_helper.rb
|