vanagon 0.11.3 → 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.
@@ -44,6 +44,55 @@ describe "Vanagon::Component" do
44
44
  end
45
45
  end
46
46
 
47
+ describe "#get_source" do
48
+ before :each do
49
+ @workdir = Dir.mktmpdir
50
+ @fake_tar = "file://spec/fixtures/files/fake_file.txt.tar.gz"
51
+ end
52
+
53
+ subject do
54
+ # Initialize a new instance of Vanagon::Component and define a
55
+ # new secondary source that's *uncompressed*. We can now reason about
56
+ # this instance and test behavior for retrieving secondary sources.
57
+ Vanagon::Component.new('build-dir-test', {}, {}).tap do |comp|
58
+ comp.url = @fake_tar
59
+ end
60
+ end
61
+
62
+ before do
63
+ allow(subject)
64
+ .to receive(:source)
65
+ .and_return(OpenStruct.new(verify: true))
66
+ end
67
+
68
+ it "attempts to retrieve from a mirror before a canonical URI" do
69
+ allow(subject)
70
+ .to receive(:fetch_url)
71
+ .and_return(false)
72
+
73
+ allow(subject)
74
+ .to receive(:fetch_mirrors)
75
+ .and_return(true)
76
+
77
+ expect(subject).to receive(:fetch_mirrors)
78
+ expect(subject).not_to receive(:fetch_url)
79
+
80
+ subject.get_source(@workdir)
81
+ end
82
+
83
+ it "retrieves from a canonical URI if mirrors are unavailable" do
84
+ allow(subject)
85
+ .to receive(:fetch_url)
86
+ .and_return(true)
87
+
88
+ # We expect #get_source to attempt to use a mirror...
89
+ expect(subject).to receive(:fetch_mirrors).and_return(false)
90
+ # But we also expect it to fail when it tries #mirrors.
91
+ expect(subject).to receive(:fetch_url)
92
+ subject.get_source(@workdir)
93
+ end
94
+ end
95
+
47
96
  describe "#get_sources" do
48
97
  before :each do
49
98
  @workdir = Dir.mktmpdir
@@ -55,17 +104,18 @@ describe "Vanagon::Component" do
55
104
 
56
105
  subject do
57
106
  # Initialize a new instance of Vanagon::Component and define a
58
- # new secondary source that's *uncompressed*. We can now reason about
107
+ # new secondary source that's *uncompressed*. We can now reason about
59
108
  # this instance and test behavior for retrieving secondary sources.
60
109
  Vanagon::Component.new('build-dir-test', {}, {}).tap do |comp|
61
110
  comp.sources << OpenStruct.new(url: @fake_file)
111
+ comp.mirrors << @fake_tar
62
112
  end
63
- end
113
+ end
64
114
 
65
115
  it "copies uncompressed secondary sources into the workdir" do
66
116
  subject.get_sources(@workdir)
67
117
  expect(File.exist?(File.join(@workdir, @file_name))).to be true
68
- end
118
+ end
69
119
 
70
120
  subject do
71
121
  # Initialize a new instance of Vanagon::Component and define a
@@ -26,6 +26,12 @@ describe 'Vanagon::Platform::RPM' do
26
26
  end
27
27
  end
28
28
 
29
+ describe '#source_output_dir' do
30
+ it "includes 'SRPMS'" do
31
+ expect(subject.source_output_dir).to include('SRPMS')
32
+ end
33
+ end
34
+
29
35
  describe "#dist" do
30
36
  it "uses explicit values when available" do
31
37
  expect(subject.dist).to eq(derived_dist) unless platform[:dist]
@@ -4,41 +4,51 @@ describe "Vanagon::Platform" do
4
4
  let(:platforms) do
5
5
  [
6
6
  {
7
- :name => "debian-6-i386",
8
- :os_name => "debian",
9
- :os_version => "6",
10
- :architecture => "i386",
11
- :output_dir => "deb/lucid/",
12
- :output_dir_with_target => "deb/lucid/thing",
13
- :output_dir_empty_string => "deb/lucid/",
14
- :block => %Q[
7
+ :name => "debian-6-i386",
8
+ :os_name => "debian",
9
+ :os_version => "6",
10
+ :architecture => "i386",
11
+ :output_dir => "deb/lucid/",
12
+ :output_dir_with_target => "deb/lucid/thing",
13
+ :output_dir_empty_string => "deb/lucid/",
14
+ :source_output_dir => "deb/lucid/",
15
+ :source_output_dir_with_target => "deb/lucid/thing",
16
+ :source_output_dir_empty_string => "deb/lucid/",
17
+ :block => %Q[
15
18
  platform "debian-6-i386" do |plat|
16
19
  plat.codename "lucid"
17
20
  end ],
18
21
  },
19
22
  {
20
- :name => "el-5-i386",
21
- :os_name => "el",
22
- :os_version => "5",
23
- :architecture => "i386",
24
- :output_dir => "el/5/products/i386",
25
- :output_dir_with_target => "el/5/thing/i386",
26
- :output_dir_empty_string => "el/5/i386",
27
- :block => %Q[ platform "el-5-i386" do |plat| end ],
23
+ :name => "el-5-i386",
24
+ :os_name => "el",
25
+ :os_version => "5",
26
+ :architecture => "i386",
27
+ :output_dir => "el/5/products/i386",
28
+ :output_dir_with_target => "el/5/thing/i386",
29
+ :output_dir_empty_string => "el/5/i386",
30
+ :source_output_dir => "el/5/products/SRPMS",
31
+ :source_output_dir_with_target => "el/5/thing/SRPMS",
32
+ :source_output_dir_empty_string => "el/5/SRPMS",
33
+ :block => %Q[ platform "el-5-i386" do |plat| end ],
28
34
  },
29
35
  {
30
- :name => "debian-6-i386",
31
- :os_name => "debian",
32
- :os_version => "6",
33
- :codename => "lucid",
34
- :architecture => "i386",
35
- :output_dir => "updated/output",
36
- :output_dir_with_target => "updated/output",
37
- :output_dir_empty_string => "updated/output",
38
- :block => %Q[
36
+ :name => "debian-6-i386",
37
+ :os_name => "debian",
38
+ :os_version => "6",
39
+ :codename => "lucid",
40
+ :architecture => "i386",
41
+ :output_dir => "updated/output",
42
+ :output_dir_with_target => "updated/output",
43
+ :output_dir_empty_string => "updated/output",
44
+ :source_output_dir => "updated/sources",
45
+ :source_output_dir_with_target => "updated/sources",
46
+ :source_output_dir_empty_string => "updated/sources",
47
+ :block => %Q[
39
48
  platform "debian-6-i386" do |plat|
40
49
  plat.codename "lucid"
41
50
  plat.output_dir "updated/output"
51
+ plat.source_output_dir "updated/sources"
42
52
  end ],
43
53
  },
44
54
  ]
@@ -88,6 +98,33 @@ describe "Vanagon::Platform" do
88
98
  end
89
99
  end
90
100
 
101
+ describe "#source_output_dir" do
102
+ it "returns correct source dir" do
103
+ platforms.each do |plat|
104
+ cur_plat = Vanagon::Platform::DSL.new(plat[:name])
105
+ cur_plat.instance_eval(plat[:block])
106
+ expect(cur_plat._platform.source_output_dir).to eq(plat[:source_output_dir])
107
+ end
108
+ end
109
+
110
+ it "adds the target repo in the right way" do
111
+ platforms.each do |plat|
112
+ cur_plat = Vanagon::Platform::DSL.new(plat[:name])
113
+ cur_plat.instance_eval(plat[:block])
114
+ expect(cur_plat._platform.source_output_dir('thing')).to eq(plat[:source_output_dir_with_target])
115
+ end
116
+ end
117
+
118
+ it "does the right thing with empty strings" do
119
+ platforms.each do |plat|
120
+ cur_plat = Vanagon::Platform::DSL.new(plat[:name])
121
+ cur_plat.instance_eval(plat[:block])
122
+ expect(cur_plat._platform.source_output_dir('')).to eq(plat[:source_output_dir_empty_string])
123
+ end
124
+ end
125
+ end
126
+
127
+
91
128
  describe "#architecture" do
92
129
  it "returns the architecture for the platform" do
93
130
  platforms.each do |plat|
@@ -142,6 +142,28 @@ end" }
142
142
  end
143
143
  end
144
144
 
145
+ describe '#generate_source_artifacts' do
146
+ it 'defaults to false' do
147
+ proj = Vanagon::Project::DSL.new('test-fixture', {})
148
+ proj.instance_eval(project_block)
149
+ expect(proj._project.source_artifacts).to eq(false)
150
+ end
151
+
152
+ it 'sets source_artifacts to true' do
153
+ proj = Vanagon::Project::DSL.new('test-fixture', {})
154
+ proj.instance_eval(project_block)
155
+ proj.generate_source_artifacts true
156
+ expect(proj._project.source_artifacts).to eq(true)
157
+ end
158
+
159
+ it 'sets source_artifacts to false' do
160
+ proj = Vanagon::Project::DSL.new('test-fixture', {})
161
+ proj.instance_eval(project_block)
162
+ proj.generate_source_artifacts false
163
+ expect(proj._project.source_artifacts).to eq(false)
164
+ end
165
+ end
166
+
145
167
  describe '#identifier' do
146
168
  it 'sets the identifier for the project' do
147
169
  proj = Vanagon::Project::DSL.new('test-fixture', {})
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vanagon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.3
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-12 00:00:00.000000000 Z
11
+ date: 2017-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: git
@@ -88,6 +88,7 @@ files:
88
88
  - lib/vanagon/component/source/git.rb
89
89
  - lib/vanagon/component/source/http.rb
90
90
  - lib/vanagon/component/source/local.rb
91
+ - lib/vanagon/component/source/rewrite.rb
91
92
  - lib/vanagon/driver.rb
92
93
  - lib/vanagon/engine/always_be_scheduling.rb
93
94
  - lib/vanagon/engine/base.rb
@@ -190,6 +191,7 @@ files:
190
191
  - spec/lib/vanagon/component/source/git_spec.rb
191
192
  - spec/lib/vanagon/component/source/http_spec.rb
192
193
  - spec/lib/vanagon/component/source/local_spec.rb
194
+ - spec/lib/vanagon/component/source/rewrite_spec.rb
193
195
  - spec/lib/vanagon/component/source_spec.rb
194
196
  - spec/lib/vanagon/component_spec.rb
195
197
  - spec/lib/vanagon/driver_spec.rb
@@ -237,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
239
  version: '0'
238
240
  requirements: []
239
241
  rubyforge_project:
240
- rubygems_version: 2.5.2
242
+ rubygems_version: 2.2.5
241
243
  signing_key:
242
244
  specification_version: 3
243
245
  summary: All of your packages will fit into this van with this one simple trick.
@@ -250,6 +252,7 @@ test_files:
250
252
  - spec/lib/vanagon/component/source/git_spec.rb
251
253
  - spec/lib/vanagon/component/source/http_spec.rb
252
254
  - spec/lib/vanagon/component/source/local_spec.rb
255
+ - spec/lib/vanagon/component/source/rewrite_spec.rb
253
256
  - spec/lib/vanagon/component/source_spec.rb
254
257
  - spec/lib/vanagon/component_spec.rb
255
258
  - spec/lib/vanagon/driver_spec.rb