specinfra 0.2.0 → 0.2.1

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.
@@ -84,13 +84,16 @@ module SpecInfra
84
84
 
85
85
  def sudo
86
86
  sudo_path = SpecInfra.configuration.sudo_path
87
- if sudo_path
88
- "#{sudo_path}/sudo"
89
- else
90
- 'sudo'
87
+ sudo_path += '/' if sudo_path
88
+
89
+ sudo_options = SpecInfra.configuration.sudo_options
90
+ if sudo_options
91
+ sudo_options = sudo_options.join(' ') if sudo_options.is_a?(Array)
92
+ sudo_options = ' ' + sudo_options
91
93
  end
92
- end
93
94
 
95
+ "#{sudo_path}sudo#{sudo_options}"
96
+ end
94
97
  end
95
98
  end
96
99
  end
@@ -1,7 +1,16 @@
1
1
  module SpecInfra
2
2
  module Configuration
3
3
  class << self
4
- VALID_OPTIONS_KEYS = [:path, :pre_command, :stdout, :stderr, :sudo_path, :disable_sudo, :pass_prompt].freeze
4
+ VALID_OPTIONS_KEYS = [
5
+ :path,
6
+ :pre_command,
7
+ :stdout,
8
+ :stderr,
9
+ :sudo_path,
10
+ :disable_sudo,
11
+ :pass_prompt,
12
+ :sudo_options
13
+ ].freeze
5
14
 
6
15
  def defaults
7
16
  VALID_OPTIONS_KEYS.inject({}) { |o, k| o.merge!(k => send(k)) }
@@ -1,3 +1,3 @@
1
1
  module Specinfra
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -96,3 +96,38 @@ describe 'build command without sudo' do
96
96
  end
97
97
  end
98
98
  end
99
+
100
+ sudo_options = ['-p', '"[sudo] password for"']
101
+ sudo_options_string = ' -p "[sudo] password for"'
102
+
103
+ describe 'build command with sudo on alternate path' do
104
+ before :each do
105
+ RSpec.configure do |c|
106
+ ssh.stub(:options) { { :user => 'foo' } }
107
+ c.ssh = ssh
108
+ c.sudo_options = sudo_options
109
+ end
110
+ end
111
+
112
+
113
+ context 'command pattern 1a' do
114
+ subject { backend.build_command('test -f /etc/passwd') }
115
+ it { should eq "sudo#{sudo_options_string} test -f /etc/passwd" }
116
+ end
117
+
118
+ context 'command pattern 2a' do
119
+ subject { backend.build_command('test ! -f /etc/selinux/config || (getenforce | grep -i -- disabled && grep -i -- ^SELINUX=disabled$ /etc/selinux/config)') }
120
+ it { should eq "sudo#{sudo_options_string} test ! -f /etc/selinux/config || (sudo#{sudo_options_string} getenforce | grep -i -- disabled && sudo#{sudo_options_string} grep -i -- ^SELINUX=disabled$ /etc/selinux/config)" }
121
+ end
122
+
123
+ context 'command pattern 3a' do
124
+ subject { backend.build_command("dpkg -s apache2 && ! dpkg -s apache2 | grep -E '^Status: .+ not-installed$'") }
125
+ it { should eq "sudo#{sudo_options_string} dpkg -s apache2 && ! sudo#{sudo_options_string} dpkg -s apache2 | grep -E '^Status: .+ not-installed$'" }
126
+ end
127
+
128
+ after :each do
129
+ RSpec.configure do |c|
130
+ c.sudo_options = nil
131
+ end
132
+ end
133
+ end
metadata CHANGED
@@ -1,64 +1,76 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: specinfra
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 1
10
+ version: 0.2.1
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Gosuke Miyashita
8
14
  autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
- date: 2014-01-09 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2014-01-10 00:00:00 +09:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
14
22
  name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '1.3'
20
- type: :development
21
23
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
24
27
  - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '1.3'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
28
+ - !ruby/object:Gem::Version
29
+ hash: 9
30
+ segments:
31
+ - 1
32
+ - 3
33
+ version: "1.3"
34
34
  type: :development
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
35
38
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
48
48
  type: :development
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: rspec
49
52
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ type: :development
63
+ version_requirements: *id003
55
64
  description: Common layer for serverspec and configspec
56
- email:
65
+ email:
57
66
  - gosukenator@gmail.com
58
67
  executables: []
68
+
59
69
  extensions: []
70
+
60
71
  extra_rdoc_files: []
61
- files:
72
+
73
+ files:
62
74
  - .gitignore
63
75
  - .travis.yml
64
76
  - Gemfile
@@ -115,31 +127,41 @@ files:
115
127
  - spec/helper/properties_spec.rb
116
128
  - spec/spec_helper.rb
117
129
  - specinfra.gemspec
118
- homepage: ''
119
- licenses:
130
+ has_rdoc: true
131
+ homepage: ""
132
+ licenses:
120
133
  - MIT
121
- metadata: {}
122
134
  post_install_message:
123
135
  rdoc_options: []
124
- require_paths:
136
+
137
+ require_paths:
125
138
  - lib
126
- required_ruby_version: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - '>='
129
- - !ruby/object:Gem::Version
130
- version: '0'
131
- required_rubygems_version: !ruby/object:Gem::Requirement
132
- requirements:
133
- - - '>='
134
- - !ruby/object:Gem::Version
135
- version: '0'
139
+ required_ruby_version: !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ hash: 3
145
+ segments:
146
+ - 0
147
+ version: "0"
148
+ required_rubygems_version: !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ hash: 3
154
+ segments:
155
+ - 0
156
+ version: "0"
136
157
  requirements: []
158
+
137
159
  rubyforge_project:
138
- rubygems_version: 2.0.3
160
+ rubygems_version: 1.6.2
139
161
  signing_key:
140
- specification_version: 4
162
+ specification_version: 3
141
163
  summary: Common layer for serverspec and configspec
142
- test_files:
164
+ test_files:
143
165
  - spec/backend/ssh/build_command_spec.rb
144
166
  - spec/configuration_spec.rb
145
167
  - spec/helper/backend_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 1daab8e0c532a3aefde28e5b3112866ed64263a0
4
- data.tar.gz: c7280e34053256ca4edc0593aad49aff63c2695c
5
- SHA512:
6
- metadata.gz: ceb475126ef0a1811966621577e3217305f55972e3c82eec621ab82c789a42922afa3c46a24ed19ed98cb64f3e0f2a49ecc86f1f150b921a8705139dcb9afdd2
7
- data.tar.gz: 5609f02da64a4d96876d2381a2befe657bd10e79f5036b245816e58c1f4c130b1891067bf3d314b03325794ed912825e91061a0cd828a20fbe297ed62efb83eb