vagrant-proxyconf 1.3.2 → 1.4.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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +7 -0
  4. data/Gemfile +3 -2
  5. data/README.md +1 -0
  6. data/lib/vagrant-proxyconf/action.rb +2 -0
  7. data/lib/vagrant-proxyconf/action/configure_docker_proxy.rb +88 -0
  8. data/lib/vagrant-proxyconf/cap/coreos/docker_proxy_conf.rb +28 -0
  9. data/lib/vagrant-proxyconf/cap/linux/docker_proxy_conf.rb +28 -0
  10. data/lib/vagrant-proxyconf/capability.rb +10 -0
  11. data/lib/vagrant-proxyconf/version.rb +1 -1
  12. data/locales/en.yml +8 -0
  13. data/spec/spec_helper.rb +2 -0
  14. data/spec/unit/support/shared/apt_proxy_config.rb +9 -9
  15. data/spec/unit/vagrant-proxyconf/action/configure_apt_proxy_spec.rb +1 -1
  16. data/spec/unit/vagrant-proxyconf/action/configure_chef_proxy_spec.rb +1 -1
  17. data/spec/unit/vagrant-proxyconf/action/configure_docker_proxy_spec.rb +10 -0
  18. data/spec/unit/vagrant-proxyconf/action/configure_env_proxy_spec.rb +1 -1
  19. data/spec/unit/vagrant-proxyconf/action/configure_git_proxy_spec.rb +1 -1
  20. data/spec/unit/vagrant-proxyconf/action/configure_npm_proxy_spec.rb +1 -1
  21. data/spec/unit/vagrant-proxyconf/action/configure_pear_proxy_spec.rb +1 -1
  22. data/spec/unit/vagrant-proxyconf/action/configure_svn_proxy_spec.rb +1 -1
  23. data/spec/unit/vagrant-proxyconf/action/configure_yum_proxy_spec.rb +6 -6
  24. data/spec/unit/vagrant-proxyconf/action/is_enabled_spec.rb +11 -5
  25. data/spec/unit/vagrant-proxyconf/cap/debian/apt_proxy_conf_spec.rb +1 -1
  26. data/spec/unit/vagrant-proxyconf/cap/linux/docker_proxy_conf_spec.rb +60 -0
  27. data/spec/unit/vagrant-proxyconf/cap/linux/env_proxy_conf_spec.rb +1 -1
  28. data/spec/unit/vagrant-proxyconf/cap/linux/git_proxy_conf_spec.rb +3 -3
  29. data/spec/unit/vagrant-proxyconf/cap/linux/npm_proxy_conf_spec.rb +3 -3
  30. data/spec/unit/vagrant-proxyconf/cap/linux/pear_proxy_conf_spec.rb +3 -3
  31. data/spec/unit/vagrant-proxyconf/cap/linux/svn_proxy_conf_spec.rb +3 -3
  32. data/spec/unit/vagrant-proxyconf/cap/redhat/yum_proxy_conf_spec.rb +1 -1
  33. data/spec/unit/vagrant-proxyconf/cap/util_spec.rb +2 -2
  34. data/spec/unit/vagrant-proxyconf/cap/windows/env_proxy_conf_spec.rb +1 -1
  35. data/spec/unit/vagrant-proxyconf/config/apt_proxy_spec.rb +2 -2
  36. data/spec/unit/vagrant-proxyconf/config/env_proxy_spec.rb +4 -4
  37. data/spec/unit/vagrant-proxyconf/config/key_mixin_spec.rb +8 -2
  38. data/spec/unit/vagrant-proxyconf/logger_spec.rb +1 -1
  39. data/spec/unit/vagrant-proxyconf/plugin_spec.rb +8 -8
  40. metadata +9 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 87b3ddc5133ada4016216defd4f705bdd86d6c21
4
- data.tar.gz: ccaac1be3e9bf09356c8329217c3b06cdc444dc4
3
+ metadata.gz: 01b50f214b87a8c1d79057bce5f6d1b23b0ae19f
4
+ data.tar.gz: 4e0448369bd0b1d0661523502f262e401680db90
5
5
  SHA512:
6
- metadata.gz: 41b8fed86e10fd26473d69e2bbbb282922f5b5dae2ca5de57c4189afd56167cd49a3559aadb3c7d79cd5bea3f4c8e7b2a89d58cb2ed3fa79598a1d38ffa6ce45
7
- data.tar.gz: e403b143e6462b46a7b34243a013aa7fd0b774624de8cfcdf79a61c67f039a2e12ed7167922cfdbd8c8a26ef29c9ce253ffc6532c2ab117b20fbbcb8189d1d30
6
+ metadata.gz: 4b411ae888f87e672a32e08a3d7e6e0cbfb631dc3ae798daae9f738bbe6e096b4e6ad70c0c7164902b64e23daa8d40c38521ffc4f8d42392bad79564d307fc9f
7
+ data.tar.gz: af7095bc3dd5765871d17c5066a13bfb49406e0012121569abf2c04f63e80923831b45b12c57dd4643aa472576c98ad9904c79cdb960bf3be6583d98e79ff684
@@ -7,7 +7,7 @@ before_install:
7
7
  bundler_args: --without=development
8
8
 
9
9
  rvm: 2.0.0
10
- env: VAGRANT_VERSION=v1.6.3
10
+ env: VAGRANT_VERSION=v1.6.5
11
11
  matrix:
12
12
  include:
13
13
  - env: VAGRANT_VERSION=v1.5.4
@@ -1,3 +1,9 @@
1
+ # 1.4.0 / 2014-09-28
2
+
3
+ Features:
4
+
5
+ - Support for configuring Docker ([GH-69][])
6
+
1
7
  # 1.3.2 / 2014-05-30
2
8
 
3
9
  Improvements:
@@ -174,3 +180,4 @@ Bug fixes:
174
180
  [GH-62]: https://github.com/tmatilai/vagrant-proxyconf/issues/62 "Issue 62"
175
181
  [GH-63]: https://github.com/tmatilai/vagrant-proxyconf/issues/63 "Issue 63"
176
182
  [GH-67]: https://github.com/tmatilai/vagrant-proxyconf/issues/67 "Issue 67"
183
+ [GH-69]: https://github.com/tmatilai/vagrant-proxyconf/issues/69 "Issue 69"
data/Gemfile CHANGED
@@ -2,12 +2,13 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'vagrant',
4
4
  git: 'https://github.com/mitchellh/vagrant.git',
5
- ref: ENV.fetch('VAGRANT_VERSION', 'v1.6.3')
5
+ ref: ENV.fetch('VAGRANT_VERSION', 'v1.6.5')
6
6
 
7
7
  gem 'cane', '~> 2.6'
8
8
  gem 'coveralls', require: false
9
9
  gem 'rake'
10
- gem 'rspec', '~> 2.11'
10
+ gem 'rspec', '~> 3.1'
11
+ gem 'rspec-its', '~> 1.0'
11
12
  gem 'tailor', '~> 1.4'
12
13
 
13
14
  group :development do
data/README.md CHANGED
@@ -21,6 +21,7 @@ The plugin can set:
21
21
  * generic `http_proxy` etc. environment variables that many programs support
22
22
  * default proxy configuration for all Chef provisioners
23
23
  * proxy configuration for Apt
24
+ * proxy configuration for docker
24
25
  * proxy configuration for npm
25
26
  * proxy configuration for Yum
26
27
  * proxy configuration for PEAR
@@ -1,6 +1,7 @@
1
1
  require 'vagrant/action/builtin/call'
2
2
  require_relative 'action/configure_apt_proxy'
3
3
  require_relative 'action/configure_chef_proxy'
4
+ require_relative 'action/configure_docker_proxy'
4
5
  require_relative 'action/configure_env_proxy'
5
6
  require_relative 'action/configure_git_proxy'
6
7
  require_relative 'action/configure_npm_proxy'
@@ -51,6 +52,7 @@ module VagrantPlugins
51
52
 
52
53
  b2.use ConfigureAptProxy
53
54
  b2.use ConfigureChefProxy
55
+ b2.use ConfigureDockerProxy
54
56
  b2.use ConfigureEnvProxy
55
57
  b2.use ConfigureGitProxy
56
58
  b2.use ConfigureNpmProxy
@@ -0,0 +1,88 @@
1
+ require_relative 'base'
2
+ require_relative '../resource'
3
+ require_relative '../userinfo_uri'
4
+
5
+ module VagrantPlugins
6
+ module ProxyConf
7
+ class Action
8
+ # Action for configuring Docker on the guest
9
+ class ConfigureDockerProxy < Base
10
+ def config_name
11
+ 'docker_proxy'
12
+ end
13
+
14
+ private
15
+
16
+ def config
17
+ # Use global proxy config
18
+ @config ||= finalize_config(@machine.config.proxy)
19
+ end
20
+
21
+ def configure_machine
22
+ logger.info('Writing the proxy configuration to docker config')
23
+ detect_export
24
+ write_docker_config
25
+ end
26
+
27
+ def docker
28
+ if config_path && config_path.include?('docker.io')
29
+ 'docker.io'
30
+ else
31
+ 'docker'
32
+ end
33
+ end
34
+
35
+ def write_docker_config
36
+ tmp = "/tmp/vagrant-proxyconf"
37
+ path = config_path
38
+
39
+ @machine.communicate.tap do |comm|
40
+ sed_script = docker_sed_script
41
+ local_tmp = tempfile(docker_config)
42
+
43
+ comm.sudo("rm #{tmp}", error_check: false)
44
+ comm.upload(local_tmp.path, tmp)
45
+ comm.sudo("touch #{path}")
46
+ comm.sudo("sed -e '#{sed_script}' #{path} > #{path}.new")
47
+ comm.sudo("cat #{tmp} >> #{path}.new")
48
+ comm.sudo("chmod 0644 #{path}.new")
49
+ comm.sudo("chown root:root #{path}.new")
50
+ comm.sudo("mv #{path}.new #{path}")
51
+ comm.sudo("rm #{tmp}")
52
+ comm.sudo(service_restart_command)
53
+ end
54
+ end
55
+
56
+ def detect_export
57
+ @machine.communicate.tap do |comm|
58
+ comm.test('which systemctl') ? @export = '' : @export = 'export '
59
+ end
60
+ end
61
+
62
+ def service_restart_command
63
+ ["systemctl restart #{docker}",
64
+ "service #{docker} restart",
65
+ "/etc/init.d/#{docker} restart"].join(' || ')
66
+ end
67
+
68
+ def docker_sed_script
69
+ <<-SED.gsub(/^\s+/, '')
70
+ /^#{@export}HTTP_PROXY=/ d
71
+ /^#{@export}NO_PROXY=/ d
72
+ /^#{@export}http_proxy=/ d
73
+ /^#{@export}no_proxy=/ d
74
+ SED
75
+ end
76
+
77
+ def docker_config
78
+ <<-CONFIG.gsub(/^\s+/, '')
79
+ #{@export}HTTP_PROXY=#{config.http || ''}
80
+ #{@export}NO_PROXY=#{config.no_proxy || ''}
81
+ #{@export}http_proxy=#{config.http || ''}
82
+ #{@export}no_proxy=#{config.no_proxy || ''}
83
+ CONFIG
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../util'
2
+
3
+ module VagrantPlugins
4
+ module ProxyConf
5
+ module Cap
6
+ module CoreOS
7
+ # Capability for docker proxy configuration
8
+ module DockerProxyConf
9
+ # @return [String, false] the path to docker or `false` if not found
10
+ def self.docker_proxy_conf(machine)
11
+ return false unless Util.which(machine, 'docker')
12
+
13
+ machine.communicate.tap do |comm|
14
+ src_file='/usr/lib/systemd/system/docker.service'
15
+ tmp_file='/tmp/docker.service'
16
+ env_file='EnvironmentFile=-\/etc\/default\/docker'
17
+ comm.sudo("sed -e 's/\\[Service\\]/[Service]\\n#{env_file}/g' #{src_file} > #{tmp_file}")
18
+
19
+ comm.sudo('mv /tmp/docker.service /etc/systemd/system/')
20
+ comm.sudo('systemctl daemon-reload')
21
+ end
22
+ '/etc/default/docker'
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../util'
2
+
3
+ module VagrantPlugins
4
+ module ProxyConf
5
+ module Cap
6
+ module Linux
7
+ # Capability for docker proxy configuration
8
+ module DockerProxyConf
9
+ # @return [String, false] the path to docker or `false` if not found
10
+ def self.docker_proxy_conf(machine)
11
+ docker_command = 'docker' if Util.which(machine, 'docker')
12
+ docker_command = 'docker.io' if Util.which(machine, 'docker.io')
13
+
14
+ return false if docker_command.nil?
15
+
16
+ if machine.communicate.test('cat /etc/redhat-release')
17
+ "/etc/sysconfig/#{docker_command}"
18
+ elsif machine.communicate.test('ls /var/lib/boot2docker/')
19
+ "/var/lib/boot2docker/profile"
20
+ else
21
+ "/etc/default/#{docker_command}"
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -8,6 +8,16 @@ module VagrantPlugins
8
8
  Cap::Debian::AptProxyConf
9
9
  end
10
10
 
11
+ guest_capability 'linux', 'docker_proxy_conf' do
12
+ require_relative 'cap/linux/docker_proxy_conf'
13
+ Cap::Linux::DockerProxyConf
14
+ end
15
+
16
+ guest_capability 'coreos', 'docker_proxy_conf' do
17
+ require_relative 'cap/coreos/docker_proxy_conf'
18
+ Cap::CoreOS::DockerProxyConf
19
+ end
20
+
11
21
  guest_capability 'linux', 'env_proxy_conf' do
12
22
  require_relative 'cap/linux/env_proxy_conf'
13
23
  Cap::Linux::EnvProxyConf
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module ProxyConf
3
- VERSION = '1.3.2'
3
+ VERSION = '1.4.0'
4
4
  end
5
5
  end
@@ -8,6 +8,14 @@ en:
8
8
  configuring: |-
9
9
  Configuring proxy for Apt...
10
10
 
11
+ docker_proxy:
12
+ not_enabled: |-
13
+ docker_proxy not enabled or configured
14
+ not_supported: |-
15
+ Skipping Docker proxy config as the machine does not support it
16
+ configuring: |-
17
+ Configuring proxy for Docker...
18
+
11
19
  chef_proxy:
12
20
  no_provisioners: |-
13
21
  No Chef provisioners configured
@@ -1,3 +1,5 @@
1
+ require 'rspec/its'
2
+
1
3
  require 'simplecov'
2
4
  require 'coveralls'
3
5
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
@@ -23,44 +23,44 @@ shared_examples "apt proxy config" do |proto|
23
23
 
24
24
  context "with ip" do
25
25
  subject { config_with(proto => "10.1.2.3") }
26
- its(:enabled?) { should be_true }
26
+ its(:enabled?) { should be_truthy }
27
27
  its(:to_s) { should eq conf_line(proto, "10.1.2.3") }
28
28
  end
29
29
 
30
30
  context "with name" do
31
31
  subject { config_with(proto => "proxy.example.com") }
32
- its(:enabled?) { should be_true }
32
+ its(:enabled?) { should be_truthy }
33
33
  its(:to_s) { should eq conf_line(proto, "proxy.example.com") }
34
34
  end
35
35
 
36
36
  context "with name and port" do
37
37
  subject { config_with(proto => "acng:8080") }
38
- its(:enabled?) { should be_true }
38
+ its(:enabled?) { should be_truthy }
39
39
  its(:to_s) { should eq conf_line(proto, "acng", 8080) }
40
40
  end
41
41
 
42
42
  context "with protocol and name" do
43
43
  subject { config_with(proto => "#{proto}://proxy.foo.tld") }
44
- its(:enabled?) { should be_true }
44
+ its(:enabled?) { should be_truthy }
45
45
  its(:to_s) { should eq conf_line(proto, "proxy.foo.tld", nil) }
46
46
  end
47
47
 
48
48
  context "with trailing slash" do
49
49
  subject { config_with(proto => "#{proto}://proxy.foo.tld/") }
50
- its(:enabled?) { should be_true }
50
+ its(:enabled?) { should be_truthy }
51
51
  its(:to_s) { should eq conf_line(proto, "proxy.foo.tld/", nil) }
52
52
  end
53
53
 
54
54
  context "with protocol and name and port" do
55
55
  subject { config_with(proto => "#{proto}://prism.nsa.gov:666") }
56
- its(:enabled?) { should be_true }
56
+ its(:enabled?) { should be_truthy }
57
57
  its(:to_s) { should eq conf_line(proto, "prism.nsa.gov", 666) }
58
58
  end
59
59
 
60
60
  ["DIRECT", "direct"].each do |direct|
61
61
  context "with #{direct.inspect}" do
62
62
  subject { config_with(proto => direct) }
63
- its(:enabled?) { should be_true }
63
+ its(:enabled?) { should be_truthy }
64
64
  its(:to_s) { should eq conf_line(proto, :direct) }
65
65
  end
66
66
  end
@@ -68,14 +68,14 @@ shared_examples "apt proxy config" do |proto|
68
68
  [false, ""].each do |unset|
69
69
  context "with #{unset.inspect}" do
70
70
  subject { config_with(proto => unset) }
71
- its(:enabled?) { should be_true }
71
+ its(:enabled?) { should be_truthy }
72
72
  its(:to_s) { should eq "" }
73
73
  end
74
74
  end
75
75
 
76
76
  context "with nil" do
77
77
  subject { config_with(proto => nil) }
78
- its(:enabled?) { should be_false }
78
+ its(:enabled?) { should be_falsey }
79
79
  its(:to_s) { should eq "" }
80
80
  end
81
81
 
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureAptProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'apt_proxy' }
8
+ it { is_expected.to eq 'apt_proxy' }
9
9
  end
10
10
 
11
11
  end
@@ -10,7 +10,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureChefProxy do
10
10
 
11
11
  def configure_chef
12
12
  action = described_class.new(nil, nil)
13
- action.stub(:config => config)
13
+ allow(action).to receive(:config) { config }
14
14
  action.send(:configure_chef, chef)
15
15
  end
16
16
 
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+ require 'vagrant-proxyconf/action/configure_docker_proxy'
3
+
4
+ describe VagrantPlugins::ProxyConf::Action::ConfigureDockerProxy do
5
+
6
+ describe '#config_name' do
7
+ subject { described_class.new(double, double).config_name }
8
+ it { is_expected.to eq 'docker_proxy' }
9
+ end
10
+ end
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureEnvProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'env_proxy' }
8
+ it { is_expected.to eq 'env_proxy' }
9
9
  end
10
10
 
11
11
  end
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureGitProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'git_proxy' }
8
+ it { is_expected.to eq 'git_proxy' }
9
9
  end
10
10
 
11
11
  end
@@ -5,6 +5,6 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureNpmProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'npm_proxy' }
8
+ it { is_expected.to eq 'npm_proxy' }
9
9
  end
10
10
  end
@@ -5,6 +5,6 @@ describe VagrantPlugins::ProxyConf::Action::ConfigurePearProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'pear_proxy' }
8
+ it { is_expected.to eq 'pear_proxy' }
9
9
  end
10
10
  end
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureSvnProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'svn_proxy' }
8
+ it { is_expected.to eq 'svn_proxy' }
9
9
  end
10
10
 
11
11
  end
@@ -5,35 +5,35 @@ describe VagrantPlugins::ProxyConf::Action::ConfigureYumProxy do
5
5
 
6
6
  describe '#config_name' do
7
7
  subject { described_class.new(double, double).config_name }
8
- it { should eq 'yum_proxy' }
8
+ it { is_expected.to eq 'yum_proxy' }
9
9
  end
10
10
 
11
11
  describe '#proxy_params' do
12
12
  subject do
13
13
  action = described_class.new(nil, nil)
14
- action.stub(:config => config)
14
+ allow(action).to receive(:config) { config }
15
15
  action.send(:proxy_params)
16
16
  end
17
17
  let(:config) { OpenStruct.new(http: http) }
18
18
 
19
19
  context "with `false`" do
20
20
  let(:http) { false }
21
- it { should eq %q{-v proxy='' -v user='' -v pass=''} }
21
+ it { is_expected.to eq %q{-v proxy='' -v user='' -v pass=''} }
22
22
  end
23
23
 
24
24
  context "without userinfo" do
25
25
  let(:http) { 'http://proxy:1234/' }
26
- it { should eq %q{-v proxy=http://proxy:1234 -v user='' -v pass=''} }
26
+ it { is_expected.to eq %q{-v proxy=http://proxy:1234 -v user='' -v pass=''} }
27
27
  end
28
28
 
29
29
  context "with userinfo" do
30
30
  let(:http) { 'http://foo:bar@myproxy:9876' }
31
- it { should eq %q{-v proxy=http://myproxy:9876 -v user=foo -v pass=bar} }
31
+ it { is_expected.to eq %q{-v proxy=http://myproxy:9876 -v user=foo -v pass=bar} }
32
32
  end
33
33
 
34
34
  context "with special characters" do
35
35
  let(:http) { %q{http://x*y:a(b@proxy.com:8080} }
36
- it { should eq %q{-v proxy=http://proxy.com:8080 -v user=x\\*y -v pass=a\\(b} }
36
+ it { is_expected.to eq %q{-v proxy=http://proxy.com:8080 -v user=x\\*y -v pass=a\\(b} }
37
37
  end
38
38
  end
39
39
  end
@@ -5,13 +5,19 @@ describe VagrantPlugins::ProxyConf::Action::IsEnabled do
5
5
  let(:app) { lambda { |env| } }
6
6
  let(:env) { { :machine => machine } }
7
7
  let(:machine) do
8
- double('machine').tap { |machine| machine.stub(:config).and_return(config) }
8
+ double('machine').tap do |machine|
9
+ allow(machine).to receive(:config) { config }
10
+ end
9
11
  end
10
12
  let(:config) do
11
- double('config').tap { |config| config.stub(:proxy => proxy_config) }
13
+ double('config').tap do |config|
14
+ allow(config).to receive(:proxy) { proxy_config }
15
+ end
12
16
  end
13
17
  let(:proxy_config) do
14
- double('proxy_config').tap { |config| config.stub(:enabled => enabled) }
18
+ double('proxy_config').tap do |config|
19
+ allow(config).to receive(:enabled) { enabled }
20
+ end
15
21
  end
16
22
 
17
23
  [false, ''].each do |value|
@@ -20,7 +26,7 @@ describe VagrantPlugins::ProxyConf::Action::IsEnabled do
20
26
 
21
27
  it "results to falsy" do
22
28
  described_class.new(app, {}).call(env)
23
- expect(env[:result]).to be_false
29
+ expect(env[:result]).to be_falsey
24
30
  end
25
31
  end
26
32
  end
@@ -31,7 +37,7 @@ describe VagrantPlugins::ProxyConf::Action::IsEnabled do
31
37
 
32
38
  it "results to truthy" do
33
39
  described_class.new(app, {}).call(env)
34
- expect(env[:result]).to be_true
40
+ expect(env[:result]).to be_truthy
35
41
  end
36
42
  end
37
43
  end
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Cap::Debian::AptProxyConf do
5
5
 
6
6
  describe '.apt_proxy_conf' do
7
7
  let(:subject) { described_class.apt_proxy_conf(double) }
8
- it { should eq '/etc/apt/apt.conf.d/01proxy' }
8
+ it { is_expected.to eq '/etc/apt/apt.conf.d/01proxy' }
9
9
  end
10
10
 
11
11
  end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+ require 'vagrant-proxyconf/cap/linux/docker_proxy_conf'
3
+ require 'vagrant-proxyconf/cap/util'
4
+
5
+ describe VagrantPlugins::ProxyConf::Cap::Linux::DockerProxyConf do
6
+
7
+ describe '.docker_proxy_conf' do
8
+ let(:machine) { double }
9
+ let(:communicator) { double }
10
+
11
+ before do
12
+ allow(machine).to receive(:communicate) { communicator }
13
+ end
14
+
15
+ it "returns the path when docker is installed on Redhat" do
16
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) do |_m, c|
17
+ (c == 'docker') ? '/path/to/docker' : false
18
+ end
19
+ allow(communicator).to receive(:test) do |c|
20
+ c == 'cat /etc/redhat-release'
21
+ end
22
+
23
+ expect(described_class.docker_proxy_conf(machine)).to eq '/etc/sysconfig/docker'
24
+ end
25
+
26
+ it "returns the path when docker is installed on Debian or Ubuntu" do
27
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) do |_m, c|
28
+ (c == 'docker') ? '/path/to/docker' : false
29
+ end
30
+ allow(communicator).to receive(:test) { false }
31
+
32
+ expect(described_class.docker_proxy_conf(machine)).to eq '/etc/default/docker'
33
+ end
34
+
35
+ it "returns the path when docker.io is installed on Ubuntu 14.04 or higher" do
36
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) do |_m, c|
37
+ (c == 'docker.io') ? '/path/to/docker.io': false
38
+ end
39
+ allow(communicator).to receive(:test) { false }
40
+
41
+ expect(described_class.docker_proxy_conf(machine)).to eq '/etc/default/docker.io'
42
+ end
43
+
44
+ it "returns the path when docker is installed on boot2docker" do
45
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) do |_m, c|
46
+ (c == 'docker') ? '/path/to/docker' : false
47
+ end
48
+ allow(communicator).to receive(:test) do |c|
49
+ c == 'ls /var/lib/boot2docker'
50
+ end
51
+
52
+ expect(described_class.docker_proxy_conf(machine)).to eq '/etc/default/docker'
53
+ end
54
+
55
+ it "returns false when docker is not installed" do
56
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { false }
57
+ expect(described_class.docker_proxy_conf(machine)).to be_falsey
58
+ end
59
+ end
60
+ end
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Cap::Linux::EnvProxyConf do
5
5
 
6
6
  describe '.env_proxy_conf' do
7
7
  let(:subject) { described_class.env_proxy_conf(double) }
8
- it { should eq '/etc/profile.d/proxy.sh' }
8
+ it { is_expected.to eq '/etc/profile.d/proxy.sh' }
9
9
  end
10
10
 
11
11
  end
@@ -8,13 +8,13 @@ describe VagrantPlugins::ProxyConf::Cap::Linux::GitProxyConf do
8
8
  let(:machine) { double }
9
9
 
10
10
  it "returns the path when git is installed" do
11
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: '/path/to/git')
11
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { '/path/to/git' }
12
12
  expect(described_class.git_proxy_conf(machine)).to eq '/path/to/git'
13
13
  end
14
14
 
15
15
  it "returns false when git is not installed" do
16
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: false)
17
- expect(described_class.git_proxy_conf(machine)).to be_false
16
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { false }
17
+ expect(described_class.git_proxy_conf(machine)).to be_falsey
18
18
  end
19
19
  end
20
20
 
@@ -8,13 +8,13 @@ describe VagrantPlugins::ProxyConf::Cap::Linux::NpmProxyConf do
8
8
  let(:machine) { double }
9
9
 
10
10
  it "returns the path when npm is installed" do
11
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: '/path/to/npm')
11
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { '/path/to/npm' }
12
12
  expect(described_class.npm_proxy_conf(machine)).to eq '/path/to/npm'
13
13
  end
14
14
 
15
15
  it "returns false when npm is not installed" do
16
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: false)
17
- expect(described_class.npm_proxy_conf(machine)).to be_false
16
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { false }
17
+ expect(described_class.npm_proxy_conf(machine)).to be_falsey
18
18
  end
19
19
  end
20
20
 
@@ -8,13 +8,13 @@ describe VagrantPlugins::ProxyConf::Cap::Linux::PearProxyConf do
8
8
  let(:machine) { double }
9
9
 
10
10
  it "returns the path when pear is installed" do
11
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: '/path/to/pear')
11
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { '/path/to/pear' }
12
12
  expect(described_class.pear_proxy_conf(machine)).to eq '/path/to/pear'
13
13
  end
14
14
 
15
15
  it "returns false when pear is not installed" do
16
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: false)
17
- expect(described_class.pear_proxy_conf(machine)).to be_false
16
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { false }
17
+ expect(described_class.pear_proxy_conf(machine)).to be_falsey
18
18
  end
19
19
  end
20
20
 
@@ -8,13 +8,13 @@ describe VagrantPlugins::ProxyConf::Cap::Linux::SvnProxyConf do
8
8
  let(:machine) { double }
9
9
 
10
10
  it "returns true when svn is installed" do
11
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: '/path/to/svn')
11
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { '/path/to/svn' }
12
12
  expect(described_class.svn_proxy_conf(machine)).to eq '/path/to/svn'
13
13
  end
14
14
 
15
15
  it "returns false when pear is not installed" do
16
- VagrantPlugins::ProxyConf::Cap::Util.stub(which: false)
17
- expect(described_class.svn_proxy_conf(machine)).to be_false
16
+ allow(VagrantPlugins::ProxyConf::Cap::Util).to receive(:which) { false }
17
+ expect(described_class.svn_proxy_conf(machine)).to be_falsey
18
18
  end
19
19
  end
20
20
 
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Cap::Redhat::YumProxyConf do
5
5
 
6
6
  describe '.yum_proxy_conf' do
7
7
  let(:subject) { described_class.yum_proxy_conf(double) }
8
- it { should eq '/etc/yum.conf' }
8
+ it { is_expected.to eq '/etc/yum.conf' }
9
9
  end
10
10
 
11
11
  end
@@ -8,7 +8,7 @@ describe VagrantPlugins::ProxyConf::Cap::Util do
8
8
  let(:communicator) { double }
9
9
 
10
10
  before do
11
- machine.stub(:communicate => communicator)
11
+ allow(machine).to receive(:communicate) { communicator }
12
12
  end
13
13
 
14
14
  it "returns the path when the command is installed" do
@@ -25,7 +25,7 @@ describe VagrantPlugins::ProxyConf::Cap::Util do
25
25
  expect(communicator).to receive(:execute).
26
26
  with('which bar', error_check: false).
27
27
  and_return(1)
28
- expect(described_class.which(machine, 'bar')).to be_false
28
+ expect(described_class.which(machine, 'bar')).to be_falsey
29
29
  end
30
30
  end
31
31
 
@@ -5,7 +5,7 @@ describe VagrantPlugins::ProxyConf::Cap::Windows::EnvProxyConf do
5
5
 
6
6
  describe '.env_proxy_conf' do
7
7
  let(:subject) { described_class.env_proxy_conf(double) }
8
- it { should eq '/proxy.conf' }
8
+ it { is_expected.to eq '/proxy.conf' }
9
9
  end
10
10
 
11
11
  end
@@ -12,7 +12,7 @@ describe VagrantPlugins::ProxyConf::Config::AptProxy do
12
12
 
13
13
  context "defaults" do
14
14
  subject { config_with({}) }
15
- its(:enabled?) { should be_false }
15
+ its(:enabled?) { should be_falsey }
16
16
  its(:to_s) { should eq "" }
17
17
  end
18
18
 
@@ -22,7 +22,7 @@ describe VagrantPlugins::ProxyConf::Config::AptProxy do
22
22
 
23
23
  context "with both http and https proxies" do
24
24
  subject { config_with(http: "10.2.3.4", https: "ssl-proxy:8443") }
25
- its(:enabled?) { should be_true }
25
+ its(:enabled?) { should be_truthy }
26
26
  its(:to_s) { should match conf_line_pattern("http", "10.2.3.4") }
27
27
  its(:to_s) { should match conf_line_pattern("https", "ssl-proxy", 8443) }
28
28
  end
@@ -26,14 +26,14 @@ describe VagrantPlugins::ProxyConf::Config::EnvProxy do
26
26
 
27
27
  context "defaults" do
28
28
  subject { config_with({}) }
29
- its(:enabled?) { should be_false }
29
+ its(:enabled?) { should be_falsey }
30
30
  its(:to_s) { should eq "" }
31
31
  end
32
32
 
33
33
  context "with http config" do
34
34
  let(:proxy) { 'http://proxy.example.com:8888' }
35
35
  subject { config_with({ http: proxy }) }
36
- its(:enabled?) { should be_true }
36
+ its(:enabled?) { should be_truthy }
37
37
  its(:to_s) { should match_lines [
38
38
  %Q{export HTTP_PROXY=#{proxy}\n},
39
39
  %Q{export http_proxy=#{proxy}\n},
@@ -44,7 +44,7 @@ describe VagrantPlugins::ProxyConf::Config::EnvProxy do
44
44
  let(:proxy) { 'http://proxy.example.com:8888' }
45
45
  let(:no_proxy) { 'localhost, 127.0.0.1' }
46
46
  subject { config_with({ http: proxy, no_proxy: no_proxy }) }
47
- its(:enabled?) { should be_true }
47
+ its(:enabled?) { should be_truthy }
48
48
  its(:to_s) { should match_lines [
49
49
  %Q{export HTTP_PROXY=#{proxy}\n},
50
50
  %Q{export http_proxy=#{proxy}\n},
@@ -57,7 +57,7 @@ describe VagrantPlugins::ProxyConf::Config::EnvProxy do
57
57
  let(:proxy) { 'http://proxy.example.com:8888' }
58
58
  before(:each) { ENV['VAGRANT_ENV_HTTP_PROXY'] = proxy }
59
59
  subject { config_with({ http: 'http://default:3128' }) }
60
- its(:enabled?) { should be_true }
60
+ its(:enabled?) { should be_truthy }
61
61
  its(:to_s) { should match_lines [
62
62
  %Q{export HTTP_PROXY=#{proxy}\n},
63
63
  %Q{export http_proxy=#{proxy}\n},
@@ -7,6 +7,12 @@ describe VagrantPlugins::ProxyConf::Config::KeyMixin do
7
7
  include VagrantPlugins::ProxyConf::Config::KeyMixin
8
8
  key :foo
9
9
  key :bar
10
+
11
+ # Hack to keep rspec 3 description generation happy
12
+ def respond_to?(method)
13
+ return false if method == :to_ary
14
+ super
15
+ end
10
16
  end
11
17
 
12
18
  class TestDefaultConfig < Vagrant.plugin('2', :config)
@@ -38,8 +44,8 @@ describe VagrantPlugins::ProxyConf::Config::KeyMixin do
38
44
  subject { config.merge_defaults(default) }
39
45
 
40
46
  context 'with no configuration' do
41
- it { should be_kind_of config.class }
42
- it { should_not be config }
47
+ it { is_expected.to be_kind_of config.class }
48
+ it { is_expected.not_to be config }
43
49
 
44
50
  its(:foo) { should be_nil }
45
51
  its(:bar) { should be_nil }
@@ -6,7 +6,7 @@ describe VagrantPlugins::ProxyConf do
6
6
  describe '.logger' do
7
7
  subject { described_class.logger }
8
8
 
9
- it { should be_a Log4r::Logger }
9
+ it { is_expected.to be_a Log4r::Logger }
10
10
 
11
11
  it "always returns the same instance" do
12
12
  expect(subject).to be described_class.logger
@@ -9,18 +9,18 @@ describe VagrantPlugins::ProxyConf::Plugin do
9
9
  end
10
10
 
11
11
  it "accepts single String argument" do
12
- expect(described_class.check_vagrant_version('~> 1.1')).to be_true
13
- expect(described_class.check_vagrant_version('1.2')).to be_false
12
+ expect(described_class.check_vagrant_version('~> 1.1')).to be_truthy
13
+ expect(described_class.check_vagrant_version('1.2')).to be_falsey
14
14
  end
15
15
 
16
16
  it "accepts an Array argument" do
17
- expect(described_class.check_vagrant_version(['>= 1.1', '< 1.3.0.beta'])).to be_true
18
- expect(described_class.check_vagrant_version(['>= 1.3'])).to be_false
17
+ expect(described_class.check_vagrant_version(['>= 1.1', '< 1.3.0.beta'])).to be_truthy
18
+ expect(described_class.check_vagrant_version(['>= 1.3'])).to be_falsey
19
19
  end
20
20
 
21
21
  it "accepts multiple arguments" do
22
- expect(described_class.check_vagrant_version('>= 1.0', '<= 1.3')).to be_true
23
- expect(described_class.check_vagrant_version('~> 1.2', '>= 1.2.5')).to be_false
22
+ expect(described_class.check_vagrant_version('>= 1.0', '<= 1.3')).to be_truthy
23
+ expect(described_class.check_vagrant_version('~> 1.2', '>= 1.2.5')).to be_falsey
24
24
  end
25
25
  end
26
26
 
@@ -34,7 +34,7 @@ describe VagrantPlugins::ProxyConf::Plugin do
34
34
  'VagrantPlugins::ProxyConf::Plugin::VAGRANT_VERSION_REQUIREMENT',
35
35
  requirement)
36
36
  stub_const('Vagrant::VERSION', vagrant_version)
37
- $stderr.stub(:puts)
37
+ allow($stderr).to receive(:puts)
38
38
  end
39
39
 
40
40
  context "on too old Vagrant version" do
@@ -43,7 +43,7 @@ describe VagrantPlugins::ProxyConf::Plugin do
43
43
  expect { subject }.to raise_error(err_msg)
44
44
  end
45
45
  it "warns" do
46
- $stderr.should_receive(:puts).with(err_msg)
46
+ expect($stderr).to receive(:puts).with(err_msg)
47
47
  subject rescue nil
48
48
  end
49
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-proxyconf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Teemu Matilainen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-30 00:00:00.000000000 Z
11
+ date: 2014-09-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A Vagrant plugin that configures the virtual machine to use proxy servers
14
14
  email:
@@ -34,6 +34,7 @@ files:
34
34
  - lib/vagrant-proxyconf/action/base.rb
35
35
  - lib/vagrant-proxyconf/action/configure_apt_proxy.rb
36
36
  - lib/vagrant-proxyconf/action/configure_chef_proxy.rb
37
+ - lib/vagrant-proxyconf/action/configure_docker_proxy.rb
37
38
  - lib/vagrant-proxyconf/action/configure_env_proxy.rb
38
39
  - lib/vagrant-proxyconf/action/configure_git_proxy.rb
39
40
  - lib/vagrant-proxyconf/action/configure_npm_proxy.rb
@@ -42,7 +43,9 @@ files:
42
43
  - lib/vagrant-proxyconf/action/configure_yum_proxy.rb
43
44
  - lib/vagrant-proxyconf/action/is_enabled.rb
44
45
  - lib/vagrant-proxyconf/action/only_once.rb
46
+ - lib/vagrant-proxyconf/cap/coreos/docker_proxy_conf.rb
45
47
  - lib/vagrant-proxyconf/cap/debian/apt_proxy_conf.rb
48
+ - lib/vagrant-proxyconf/cap/linux/docker_proxy_conf.rb
46
49
  - lib/vagrant-proxyconf/cap/linux/env_proxy_conf.rb
47
50
  - lib/vagrant-proxyconf/cap/linux/git_proxy_conf.rb
48
51
  - lib/vagrant-proxyconf/cap/linux/npm_proxy_conf.rb
@@ -86,6 +89,7 @@ files:
86
89
  - spec/unit/support/shared/apt_proxy_config.rb
87
90
  - spec/unit/vagrant-proxyconf/action/configure_apt_proxy_spec.rb
88
91
  - spec/unit/vagrant-proxyconf/action/configure_chef_proxy_spec.rb
92
+ - spec/unit/vagrant-proxyconf/action/configure_docker_proxy_spec.rb
89
93
  - spec/unit/vagrant-proxyconf/action/configure_env_proxy_spec.rb
90
94
  - spec/unit/vagrant-proxyconf/action/configure_git_proxy_spec.rb
91
95
  - spec/unit/vagrant-proxyconf/action/configure_npm_proxy_spec.rb
@@ -96,6 +100,7 @@ files:
96
100
  - spec/unit/vagrant-proxyconf/action/only_once_spec.rb
97
101
  - spec/unit/vagrant-proxyconf/action_spec.rb
98
102
  - spec/unit/vagrant-proxyconf/cap/debian/apt_proxy_conf_spec.rb
103
+ - spec/unit/vagrant-proxyconf/cap/linux/docker_proxy_conf_spec.rb
99
104
  - spec/unit/vagrant-proxyconf/cap/linux/env_proxy_conf_spec.rb
100
105
  - spec/unit/vagrant-proxyconf/cap/linux/git_proxy_conf_spec.rb
101
106
  - spec/unit/vagrant-proxyconf/cap/linux/npm_proxy_conf_spec.rb
@@ -160,6 +165,7 @@ test_files:
160
165
  - spec/unit/support/shared/apt_proxy_config.rb
161
166
  - spec/unit/vagrant-proxyconf/action/configure_apt_proxy_spec.rb
162
167
  - spec/unit/vagrant-proxyconf/action/configure_chef_proxy_spec.rb
168
+ - spec/unit/vagrant-proxyconf/action/configure_docker_proxy_spec.rb
163
169
  - spec/unit/vagrant-proxyconf/action/configure_env_proxy_spec.rb
164
170
  - spec/unit/vagrant-proxyconf/action/configure_git_proxy_spec.rb
165
171
  - spec/unit/vagrant-proxyconf/action/configure_npm_proxy_spec.rb
@@ -170,6 +176,7 @@ test_files:
170
176
  - spec/unit/vagrant-proxyconf/action/only_once_spec.rb
171
177
  - spec/unit/vagrant-proxyconf/action_spec.rb
172
178
  - spec/unit/vagrant-proxyconf/cap/debian/apt_proxy_conf_spec.rb
179
+ - spec/unit/vagrant-proxyconf/cap/linux/docker_proxy_conf_spec.rb
173
180
  - spec/unit/vagrant-proxyconf/cap/linux/env_proxy_conf_spec.rb
174
181
  - spec/unit/vagrant-proxyconf/cap/linux/git_proxy_conf_spec.rb
175
182
  - spec/unit/vagrant-proxyconf/cap/linux/npm_proxy_conf_spec.rb