r-train 0.11.4 → 0.12.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: badb26613fa1301a65ec04b815788aa1657e4a92
4
- data.tar.gz: 02fdc25e6e5e23d047feb1d19ce4ba55a9fe530d
3
+ metadata.gz: 6f599a09f2898092c2acb8062296eddde686a362
4
+ data.tar.gz: b1a3d340d9e4d62b3095ff5194f9b566fb117d08
5
5
  SHA512:
6
- metadata.gz: 64cee5ec0bf2dd51a3851e7f3e409d41019fa55aea3337fc4557e53af1b415ced2e91479746983ea93ac93c78e7ef5ff0b6a11b545355e620f6c417a94e97608
7
- data.tar.gz: 4f10393af9a9d47ebb98a2da0132bd2841434a889efaf8f8595208f5a6c27a04123da73495a837d6ffe663d9d85e6d71b23de293012afbead1dfdd36d156d450
6
+ metadata.gz: 6ed0ba89f1c1533b4f6ed4535170c734f6e96355f267463a9080a07ae9a4716ccf08bd3b3b1e2c997c8c43486f22aee54427402081ba4ffbcaa3ef1162556846
7
+ data.tar.gz: 7f631bab01ea0c2fe9e278633eab0cab75a21c92a38eab6c160e09b3084d01f34d7f48055a8bbb2625eb18078ca7a2edb39ec446d9c637ba6f147d46645f4092
@@ -1,7 +1,14 @@
1
1
  # Change Log
2
2
 
3
- ## [0.11.4](https://github.com/chef/train/tree/0.11.4) (2016-05-13)
4
- [Full Changelog](https://github.com/chef/train/compare/v0.11.3...0.11.4)
3
+ ## [0.12.0](https://github.com/chef/train/tree/0.12.0) (2016-05-16)
4
+ [Full Changelog](https://github.com/chef/train/compare/v0.11.4...0.12.0)
5
+
6
+ **Merged pull requests:**
7
+
8
+ - Custom sudo command [\#107](https://github.com/chef/train/pull/107) ([jeremymv2](https://github.com/jeremymv2))
9
+
10
+ ## [v0.11.4](https://github.com/chef/train/tree/v0.11.4) (2016-05-13)
11
+ [Full Changelog](https://github.com/chef/train/compare/v0.11.3...v0.11.4)
5
12
 
6
13
  **Fixed bugs:**
7
14
 
@@ -9,6 +16,10 @@
9
16
  - Add a space to avoid matching partial paths [\#104](https://github.com/chef/train/pull/104) ([alexpop](https://github.com/alexpop))
10
17
  - Update README.md [\#102](https://github.com/chef/train/pull/102) ([mcquin](https://github.com/mcquin))
11
18
 
19
+ **Merged pull requests:**
20
+
21
+ - 0.11.4 [\#106](https://github.com/chef/train/pull/106) ([arlimus](https://github.com/arlimus))
22
+
12
23
  ## [v0.11.3](https://github.com/chef/train/tree/v0.11.3) (2016-05-10)
13
24
  [Full Changelog](https://github.com/chef/train/compare/v0.11.2...v0.11.3)
14
25
 
@@ -32,6 +32,7 @@ module Train::Extras
32
32
  option :sudo, default: false
33
33
  option :sudo_options, default: nil
34
34
  option :sudo_password, default: nil
35
+ option :sudo_command, default: nil
35
36
  option :user
36
37
 
37
38
  def initialize(backend, options)
@@ -41,6 +42,7 @@ module Train::Extras
41
42
  @sudo = options[:sudo]
42
43
  @sudo_options = options[:sudo_options]
43
44
  @sudo_password = options[:sudo_password]
45
+ @sudo_command = options[:sudo_command]
44
46
  @user = options[:user]
45
47
  @prefix = build_prefix
46
48
  end
@@ -83,11 +85,11 @@ module Train::Extras
83
85
  return '' unless @sudo
84
86
  return '' if @user == 'root'
85
87
 
86
- res = 'sudo '
88
+ res = (@sudo_command || 'sudo') + ' '
87
89
 
88
90
  unless @sudo_password.nil?
89
91
  b64pw = Base64.strict_encode64(@sudo_password + "\n")
90
- res = "echo #{b64pw} | base64 -d | sudo -S "
92
+ res = "echo #{b64pw} | base64 -d | #{res}-S "
91
93
  end
92
94
 
93
95
  res << @sudo_options.to_s + ' ' unless @sudo_options.nil?
@@ -3,5 +3,5 @@
3
3
  # Author:: Dominik Richter (<dominik.richter@gmail.com>)
4
4
 
5
5
  module Train
6
- VERSION = '0.11.4'.freeze
6
+ VERSION = '0.12.0'.freeze
7
7
  end
@@ -26,7 +26,7 @@ execute 'test ssh connection' do
26
26
  end
27
27
 
28
28
  # prepare a few users
29
- %w{ nopasswd passwd nosudo reqtty }.each do |name|
29
+ %w{ nopasswd passwd nosudo reqtty customcommand }.each do |name|
30
30
  user name do
31
31
  password '$1$7MCNTXPI$r./jqCEoVlLlByYKSL3sZ.'
32
32
  manage_home true
@@ -53,6 +53,12 @@ sudo 'reqtty' do
53
53
  defaults ['requiretty']
54
54
  end
55
55
 
56
+ sudo 'customcommand' do
57
+ user 'customcommand'
58
+ nopasswd true
59
+ defaults ['!requiretty']
60
+ end
61
+
56
62
  # execute tests
57
63
  execute 'bundle install' do
58
64
  command '/opt/chef/embedded/bin/bundle install --without integration tools'
@@ -69,7 +75,7 @@ execute 'run ssh tests' do
69
75
  cwd '/tmp/kitchen/data'
70
76
  end
71
77
 
72
- %w{passwd nopasswd reqtty}.each do |name|
78
+ %w{passwd nopasswd reqtty customcommand}.each do |name|
73
79
  execute "run local sudo tests as #{name}" do
74
80
  command "/opt/chef/embedded/bin/ruby -I lib test/integration/sudo/#{name}.rb"
75
81
  cwd '/tmp/kitchen/data'
@@ -87,7 +93,7 @@ execute 'fix sudoers for reqtty' do
87
93
  end
88
94
 
89
95
  # if it's fixed, it should behave like user 'nopasswd'
90
- execute "run local sudo tests as reqtty, no longer requiring a tty" do
96
+ execute 'run local sudo tests as reqtty, no longer requiring a tty' do
91
97
  command "/opt/chef/embedded/bin/ruby -I lib test/integration/sudo/nopasswd.rb"
92
98
  cwd '/tmp/kitchen/data'
93
99
  user 'reqtty'
@@ -22,13 +22,20 @@ directory '/tmp/folder' do
22
22
  group gid
23
23
  end
24
24
 
25
- link '/tmp/symlink'do
25
+ link '/tmp/symlink' do
26
26
  to '/tmp/file'
27
27
  owner 'root'
28
28
  group gid
29
29
  mode '0777'
30
30
  end
31
31
 
32
+ link '/usr/bin/allyourbase' do
33
+ to '/usr/bin/sudo'
34
+ owner 'root'
35
+ group gid
36
+ mode '0777'
37
+ end
38
+
32
39
  execute 'create pipe/fifo' do
33
40
  command 'mkfifo /tmp/pipe'
34
41
  not_if 'test -e /tmp/pipe'
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+ # author: Jeremy Miller
3
+
4
+ require_relative 'run_as'
5
+
6
+ describe 'run custom sudo command' do
7
+ it 'is running as non-root without sudo' do
8
+ run_as('whoami').stdout.wont_match(/root/i)
9
+ end
10
+
11
+ it 'is running nopasswd custom sudo command' do
12
+ run_as('whoami', { sudo: true, sudo_command: 'allyourbase' })
13
+ .stdout.must_match(/root/i)
14
+ end
15
+ end
@@ -38,6 +38,27 @@ describe 'linux command' do
38
38
  bpw = Base64.strict_encode64(pw + "\n")
39
39
  lc.run(cmd).must_equal "echo #{bpw} | base64 -d | sudo -S #{cmd}"
40
40
  end
41
+
42
+ it 'wraps commands in sudo_command instead of sudo' do
43
+ sudo_command = rand.to_s
44
+ lc = cls.new(backend, { sudo: true, sudo_command: sudo_command })
45
+ lc.run(cmd).must_equal "#{sudo_command} #{cmd}"
46
+ end
47
+
48
+ it 'wraps commands in sudo_command with all options' do
49
+ opts = rand.to_s
50
+ sudo_command = rand.to_s
51
+ lc = cls.new(backend, { sudo: true, sudo_command: sudo_command, sudo_options: opts })
52
+ lc.run(cmd).must_equal "#{sudo_command} #{opts} #{cmd}"
53
+ end
54
+
55
+ it 'runs commands in sudo_command with password' do
56
+ pw = rand.to_s
57
+ sudo_command = rand.to_s
58
+ lc = cls.new(backend, { sudo: true, sudo_command: sudo_command, sudo_password: pw })
59
+ bpw = Base64.strict_encode64(pw + "\n")
60
+ lc.run(cmd).must_equal "echo #{bpw} | base64 -d | #{sudo_command} -S #{cmd}"
61
+ end
41
62
  end
42
63
 
43
64
  describe 'powershell command' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r-train
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.4
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominik Richter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-13 00:00:00.000000000 Z
11
+ date: 2016-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -182,6 +182,7 @@ files:
182
182
  - test/integration/docker_test.rb
183
183
  - test/integration/docker_test_container.rb
184
184
  - test/integration/helper.rb
185
+ - test/integration/sudo/customcommand.rb
185
186
  - test/integration/sudo/nopasswd.rb
186
187
  - test/integration/sudo/passwd.rb
187
188
  - test/integration/sudo/reqtty.rb
@@ -239,7 +240,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
240
  version: '0'
240
241
  requirements: []
241
242
  rubyforge_project:
242
- rubygems_version: 2.5.1
243
+ rubygems_version: 2.4.6
243
244
  signing_key:
244
245
  specification_version: 4
245
246
  summary: Transport interface to talk to different backends.
@@ -255,6 +256,7 @@ test_files:
255
256
  - test/integration/docker_test.rb
256
257
  - test/integration/docker_test_container.rb
257
258
  - test/integration/helper.rb
259
+ - test/integration/sudo/customcommand.rb
258
260
  - test/integration/sudo/nopasswd.rb
259
261
  - test/integration/sudo/passwd.rb
260
262
  - test/integration/sudo/reqtty.rb