puppet-pip 0.0.4 → 0.0.5

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.
@@ -106,7 +106,7 @@ Puppet::Type.type(:package).provide :pip,
106
106
  rescue NoMethodError => e
107
107
  if pathname = `which pip`.chomp
108
108
  self.class.commands :pip => pathname
109
- retry
109
+ pip *args
110
110
  else
111
111
  raise e
112
112
  end
@@ -0,0 +1,190 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
4
+
5
+ provider_class = Puppet::Type.type(:package).provider(:pip)
6
+
7
+ describe provider_class do
8
+
9
+ before do
10
+ @resource = stub("resource")
11
+ @provider = provider_class.new
12
+ @provider.instance_variable_set(:@resource, @resource)
13
+ end
14
+
15
+ describe "parse" do
16
+
17
+ it "should return a hash on valid input" do
18
+ provider_class.parse("Django==1.2.5").should == {
19
+ :ensure => "1.2.5",
20
+ :name => "Django",
21
+ :provider => :pip,
22
+ }
23
+ end
24
+
25
+ it "should return nil on invalid input" do
26
+ provider_class.parse("foo").should == nil
27
+ end
28
+
29
+ end
30
+
31
+ describe "instances" do
32
+
33
+ it "should return an array when pip is present" do
34
+ provider_class.expects(:command).with(:pip).returns("/fake/bin/pip")
35
+ p = stub("process")
36
+ p.expects(:collect).yields("Django==1.2.5")
37
+ provider_class.expects(:execpipe).with("/fake/bin/pip freeze").yields(p)
38
+ provider_class.instances
39
+ end
40
+
41
+ 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."))
44
+ provider_class.instances.should == []
45
+ end
46
+
47
+ end
48
+
49
+ describe "query" do
50
+
51
+ before do
52
+ @resource.stubs(:[]).with(:name).returns("Django")
53
+ end
54
+
55
+ 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)
60
+ @provider.query.should == {
61
+ :ensure => "1.2.5",
62
+ :name => "Django",
63
+ :provider => :pip,
64
+ }
65
+ end
66
+
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
+ 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)
78
+ @provider.query.should == nil
79
+ end
80
+
81
+ end
82
+
83
+ describe "latest" do
84
+
85
+ it "should find a version number for Django" do
86
+ @resource.stubs(:[]).with(:name).returns "Django"
87
+ @provider.latest.should_not == nil
88
+ end
89
+
90
+ it "should not find a version number for sdsfdssdhdfyjymdgfcjdfjxdrssf" do
91
+ @resource.stubs(:[]).with(:name).returns "sdsfdssdhdfyjymdgfcjdfjxdrssf"
92
+ @provider.latest.should == nil
93
+ end
94
+
95
+ end
96
+
97
+ describe "install" do
98
+
99
+ before do
100
+ @resource.stubs(:[]).with(:name).returns("sdsfdssdhdfyjymdgfcjdfjxdrssf")
101
+ @url = "git+https://example.com/sdsfdssdhdfyjymdgfcjdfjxdrssf.git"
102
+ end
103
+
104
+ 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
110
+ @provider.install
111
+ end
112
+
113
+ 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
119
+ @provider.install
120
+ end
121
+
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
128
+ @provider.install
129
+ end
130
+
131
+ 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
137
+ @provider.install
138
+ end
139
+
140
+ 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
146
+ @provider.install
147
+ end
148
+
149
+ end
150
+
151
+ describe "uninstall" do
152
+
153
+ it "should uninstall" do
154
+ @resource.stubs(:[]).with(:name).returns("sdsfdssdhdfyjymdgfcjdfjxdrssf")
155
+ @provider.expects(:lazy_pip).returns(nil)
156
+ @provider.uninstall
157
+ end
158
+
159
+ end
160
+
161
+ describe "update" do
162
+
163
+ it "should just call install" do
164
+ @provider.expects(:install).returns(nil)
165
+ @provider.update
166
+ end
167
+
168
+ end
169
+
170
+ describe "lazy_pip" do
171
+
172
+ it "should succeed if pip is present" do
173
+ @provider.stubs(:pip).returns(nil)
174
+ @provider.method(:lazy_pip).call "freeze"
175
+ end
176
+
177
+ it "should retry if pip has not yet been found" do
178
+ @provider.stubs(:pip).raises(NoMethodError).returns("/fake/bin/pip")
179
+ @provider.method(:lazy_pip).call "freeze"
180
+ end
181
+
182
+ 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)
186
+ end
187
+
188
+ end
189
+
190
+ 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: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Richard Crowley
@@ -42,6 +42,7 @@ extra_rdoc_files: []
42
42
 
43
43
  files:
44
44
  - lib/puppet/provider/package/pip.rb
45
+ - spec/unit/provider/package/pip_spec.rb
45
46
  has_rdoc: true
46
47
  homepage: http://github.com/rcrowley/puppet-pip
47
48
  licenses: []