puppet-pip 0.0.5 → 1.0.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.
@@ -25,29 +25,23 @@ Puppet::Type.type(:package).provide :pip,
25
25
  # that's managed by `pip` or an empty array if `pip` is not available.
26
26
  def self.instances
27
27
  packages = []
28
- execpipe "#{command :pip} freeze" do |process|
28
+ pip_cmd = which('pip') or return []
29
+ execpipe "#{pip_cmd} freeze" do |process|
29
30
  process.collect do |line|
30
31
  next unless options = parse(line)
31
32
  packages << new(options)
32
33
  end
33
34
  end
34
35
  packages
35
- rescue Puppet::DevError
36
- []
37
36
  end
38
37
 
39
38
  # Return structured information about a particular package or `nil` if
40
39
  # it is not installed or `pip` itself is not available.
41
40
  def query
42
- execpipe "#{command :pip} freeze" do |process|
43
- process.each do |line|
44
- options = self.class.parse(line)
45
- return options if options[:name] == @resource[:name]
46
- end
41
+ self.class.instances.each do |provider_pip|
42
+ return provider_pip.properties if @resource[:name] == provider_pip.name
47
43
  end
48
- nil
49
- rescue Puppet::DevError
50
- nil
44
+ return nil
51
45
  end
52
46
 
53
47
  # Ask the PyPI API for the latest version number. There is no local
@@ -104,7 +98,7 @@ Puppet::Type.type(:package).provide :pip,
104
98
  def lazy_pip(*args)
105
99
  pip *args
106
100
  rescue NoMethodError => e
107
- if pathname = `which pip`.chomp
101
+ if pathname = which('pip')
108
102
  self.class.commands :pip => pathname
109
103
  pip *args
110
104
  else
@@ -1,23 +1,21 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
1
+ #!/usr/bin/env rspec
2
+ require 'spec_helper'
4
3
 
5
4
  provider_class = Puppet::Type.type(:package).provider(:pip)
6
5
 
7
6
  describe provider_class do
8
7
 
9
8
  before do
10
- @resource = stub("resource")
11
- @provider = provider_class.new
12
- @provider.instance_variable_set(:@resource, @resource)
9
+ @resource = Puppet::Resource.new(:package, "sdsfdssdhdfyjymdgfcjdfjxdrssf")
10
+ @provider = provider_class.new(@resource)
13
11
  end
14
12
 
15
13
  describe "parse" do
16
14
 
17
15
  it "should return a hash on valid input" do
18
16
  provider_class.parse("Django==1.2.5").should == {
19
- :ensure => "1.2.5",
20
- :name => "Django",
17
+ :ensure => "1.2.5",
18
+ :name => "Django",
21
19
  :provider => :pip,
22
20
  }
23
21
  end
@@ -31,7 +29,7 @@ describe provider_class do
31
29
  describe "instances" do
32
30
 
33
31
  it "should return an array when pip is present" do
34
- provider_class.expects(:command).with(:pip).returns("/fake/bin/pip")
32
+ provider_class.expects(:which).with('pip').returns("/fake/bin/pip")
35
33
  p = stub("process")
36
34
  p.expects(:collect).yields("Django==1.2.5")
37
35
  provider_class.expects(:execpipe).with("/fake/bin/pip freeze").yields(p)
@@ -39,8 +37,7 @@ describe provider_class do
39
37
  end
40
38
 
41
39
  it "should return an empty array when pip is missing" do
42
- provider_class.expects(:command).with(:pip).raises(
43
- Puppet::DevError.new("Pretend pip isn't installed."))
40
+ provider_class.expects(:which).with('pip').returns nil
44
41
  provider_class.instances.should == []
45
42
  end
46
43
 
@@ -49,32 +46,25 @@ describe provider_class do
49
46
  describe "query" do
50
47
 
51
48
  before do
52
- @resource.stubs(:[]).with(:name).returns("Django")
49
+ @resource[:name] = "Django"
53
50
  end
54
51
 
55
52
  it "should return a hash when pip and the package are present" do
56
- @provider.expects(:command).with(:pip).returns("/fake/bin/pip")
57
- p = stub("process")
58
- p.expects(:each).yields("Django==1.2.5")
59
- @provider.expects(:execpipe).with("/fake/bin/pip freeze").yields(p)
53
+ provider_class.expects(:instances).returns [provider_class.new({
54
+ :ensure => "1.2.5",
55
+ :name => "Django",
56
+ :provider => :pip,
57
+ })]
58
+
60
59
  @provider.query.should == {
61
- :ensure => "1.2.5",
62
- :name => "Django",
60
+ :ensure => "1.2.5",
61
+ :name => "Django",
63
62
  :provider => :pip,
64
63
  }
65
64
  end
66
65
 
67
- it "should return nil when pip is missing" do
68
- @provider.expects(:command).with(:pip).raises(
69
- Puppet::DevError.new("Pretend pip isn't installed."))
70
- @provider.query.should == nil
71
- end
72
-
73
66
  it "should return nil when the package is missing" do
74
- @provider.expects(:command).with(:pip).returns("/fake/bin/pip")
75
- p = stub("process")
76
- p.expects(:each).yields("sdsfdssdhdfyjymdgfcjdfjxdrssf==0.0.0")
77
- @provider.expects(:execpipe).with("/fake/bin/pip freeze").yields(p)
67
+ provider_class.expects(:instances).returns []
78
68
  @provider.query.should == nil
79
69
  end
80
70
 
@@ -83,12 +73,12 @@ describe provider_class do
83
73
  describe "latest" do
84
74
 
85
75
  it "should find a version number for Django" do
86
- @resource.stubs(:[]).with(:name).returns "Django"
76
+ @resource[:name] = "Django"
87
77
  @provider.latest.should_not == nil
88
78
  end
89
79
 
90
80
  it "should not find a version number for sdsfdssdhdfyjymdgfcjdfjxdrssf" do
91
- @resource.stubs(:[]).with(:name).returns "sdsfdssdhdfyjymdgfcjdfjxdrssf"
81
+ @resource[:name] = "sdsfdssdhdfyjymdgfcjdfjxdrssf"
92
82
  @provider.latest.should == nil
93
83
  end
94
84
 
@@ -97,52 +87,46 @@ describe provider_class do
97
87
  describe "install" do
98
88
 
99
89
  before do
100
- @resource.stubs(:[]).with(:name).returns("sdsfdssdhdfyjymdgfcjdfjxdrssf")
90
+ @resource[:name] = "sdsfdssdhdfyjymdgfcjdfjxdrssf"
101
91
  @url = "git+https://example.com/sdsfdssdhdfyjymdgfcjdfjxdrssf.git"
102
92
  end
103
93
 
104
94
  it "should install" do
105
- @resource.stubs(:[]).with(:ensure).returns(:installed)
106
- @resource.stubs(:[]).with(:source).returns(nil)
107
- @provider.expects(:lazy_pip).with do |*args|
108
- "install" == args[0] && "sdsfdssdhdfyjymdgfcjdfjxdrssf" == args[-1]
109
- end.returns nil
95
+ @resource[:ensure] = :installed
96
+ @resource[:source] = nil
97
+ @provider.expects(:lazy_pip).
98
+ with("install", '-q', "sdsfdssdhdfyjymdgfcjdfjxdrssf")
110
99
  @provider.install
111
100
  end
112
101
 
113
102
  it "should install from SCM" do
114
- @resource.stubs(:[]).with(:ensure).returns(:installed)
115
- @resource.stubs(:[]).with(:source).returns(@url)
116
- @provider.expects(:lazy_pip).with do |*args|
117
- "#{@url}#egg=sdsfdssdhdfyjymdgfcjdfjxdrssf" == args[-1]
118
- end.returns nil
103
+ @resource[:ensure] = :installed
104
+ @resource[:source] = @url
105
+ @provider.expects(:lazy_pip).
106
+ with("install", '-q', '-e', "#{@url}#egg=sdsfdssdhdfyjymdgfcjdfjxdrssf")
119
107
  @provider.install
120
108
  end
121
109
 
122
- it "should install a particular revision" do
123
- @resource.stubs(:[]).with(:ensure).returns("0123456")
124
- @resource.stubs(:[]).with(:source).returns(@url)
125
- @provider.expects(:lazy_pip).with do |*args|
126
- "#{@url}@0123456#egg=sdsfdssdhdfyjymdgfcjdfjxdrssf" == args[-1]
127
- end.returns nil
110
+ it "should install a particular SCM revision" do
111
+ @resource[:ensure] = "0123456"
112
+ @resource[:source] = @url
113
+ @provider.expects(:lazy_pip).
114
+ with("install", "-q", "-e", "#{@url}@0123456#egg=sdsfdssdhdfyjymdgfcjdfjxdrssf")
128
115
  @provider.install
129
116
  end
130
117
 
131
118
  it "should install a particular version" do
132
- @resource.stubs(:[]).with(:ensure).returns("0.0.0")
133
- @resource.stubs(:[]).with(:source).returns(nil)
134
- @provider.expects(:lazy_pip).with do |*args|
135
- "sdsfdssdhdfyjymdgfcjdfjxdrssf==0.0.0" == args[-1]
136
- end.returns nil
119
+ @resource[:ensure] = "0.0.0"
120
+ @resource[:source] = nil
121
+ @provider.expects(:lazy_pip).with("install", "-q", "sdsfdssdhdfyjymdgfcjdfjxdrssf==0.0.0")
137
122
  @provider.install
138
123
  end
139
124
 
140
125
  it "should upgrade" do
141
- @resource.stubs(:[]).with(:ensure).returns(:latest)
142
- @resource.stubs(:[]).with(:source).returns(nil)
143
- @provider.expects(:lazy_pip).with do |*args|
144
- "--upgrade" == args[-2] && "sdsfdssdhdfyjymdgfcjdfjxdrssf" == args[-1]
145
- end.returns nil
126
+ @resource[:ensure] = :latest
127
+ @resource[:source] = nil
128
+ @provider.expects(:lazy_pip).
129
+ with("install", "-q", "--upgrade", "sdsfdssdhdfyjymdgfcjdfjxdrssf")
146
130
  @provider.install
147
131
  end
148
132
 
@@ -151,8 +135,9 @@ describe provider_class do
151
135
  describe "uninstall" do
152
136
 
153
137
  it "should uninstall" do
154
- @resource.stubs(:[]).with(:name).returns("sdsfdssdhdfyjymdgfcjdfjxdrssf")
155
- @provider.expects(:lazy_pip).returns(nil)
138
+ @resource[:name] = "sdsfdssdhdfyjymdgfcjdfjxdrssf"
139
+ @provider.expects(:lazy_pip).
140
+ with('uninstall', '-y', '-q', 'sdsfdssdhdfyjymdgfcjdfjxdrssf')
156
141
  @provider.uninstall
157
142
  end
158
143
 
@@ -175,14 +160,15 @@ describe provider_class do
175
160
  end
176
161
 
177
162
  it "should retry if pip has not yet been found" do
178
- @provider.stubs(:pip).raises(NoMethodError).returns("/fake/bin/pip")
163
+ @provider.expects(:pip).twice.with('freeze').raises(NoMethodError).then.returns(nil)
164
+ @provider.expects(:which).with('pip').returns("/fake/bin/pip")
179
165
  @provider.method(:lazy_pip).call "freeze"
180
166
  end
181
167
 
182
168
  it "should fail if pip is missing" do
183
- @provider.stubs(:pip).twice.raises(NoMethodError)
184
- expect { @provider.method(:lazy_pip).call("freeze") }.to \
185
- raise_error(NoMethodError)
169
+ @provider.expects(:pip).with('freeze').raises(NoMethodError)
170
+ @provider.expects(:which).with('pip').returns(nil)
171
+ expect { @provider.method(:lazy_pip).call("freeze") }.to raise_error(NoMethodError)
186
172
  end
187
173
 
188
174
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-pip
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
+ - 1
7
8
  - 0
8
9
  - 0
9
- - 5
10
- version: 0.0.5
10
+ version: 1.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Richard Crowley
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-01 00:00:00 +00:00
18
+ date: 2011-04-18 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency