albacore 2.0.0.rc.2 → 2.0.0.rc.3

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.
@@ -99,8 +99,11 @@ module Albacore
99
99
  # p.files = FileList['src/**/*.csproj']
100
100
  # p.out = 'build/pkg'
101
101
  # p.exe = 'buildsupport/NuGet.exe'
102
- # p.version = ENV['NUGET_VERSION']
102
+ # p.with_metadata do |m|
103
+ # m.version = ENV['NUGET_VERSION']
104
+ # end
103
105
  # p.gen_symbols
106
+ # p.no_project_dependencies
104
107
  # end
105
108
  class Config
106
109
  include CmdConfig
@@ -109,7 +112,7 @@ module Albacore
109
112
  # the output directory to place the newfangled nugets in
110
113
  attr_path :out
111
114
 
112
- # the .net target (e.g. net40, mono2.0)
115
+ # the .net target (e.g. net40, mono20, mono3, etc)
113
116
  attr_writer :target
114
117
 
115
118
  # sets the files to search
@@ -123,6 +126,7 @@ module Albacore
123
126
  @package = Albacore::NugetModel::Package.new
124
127
  @target = 'net40'
125
128
  @symbols = false
129
+ @project_dependencies = true
126
130
  fill_required
127
131
  end
128
132
 
@@ -141,6 +145,12 @@ module Albacore
141
145
  @symbols = true
142
146
  end
143
147
 
148
+ # call this if you want to cancel 'smart' scanning of the *proj
149
+ # file for its dependencies
150
+ def no_project_dependencies
151
+ @project_dependencies = false
152
+ end
153
+
144
154
  # gets the options specified for the task, used from the task
145
155
  def opts
146
156
  files = @files.respond_to?(:each) ? @files : [@files]
@@ -157,6 +167,7 @@ module Albacore
157
167
  :target => @target,
158
168
  :files => @files,
159
169
  :configuration => @configuration,
170
+ :project_dependencies => @project_dependencies,
160
171
  :original_path => FileUtils.pwd
161
172
  })
162
173
  end
@@ -247,14 +258,18 @@ module Albacore
247
258
 
248
259
  def create_nuspec proj, knowns
249
260
  version = @opts.get(:package).metadata.version
261
+ project_dependencies = @opts.get(:project_dependencies, true)
262
+ target = @opts.get :target
250
263
 
251
- trace "creating NON-SYMBOL package for #{proj.name} [nugets pack: task]"
264
+ trace "creating NON-SYMBOL package for #{proj.name}, targeting #{target} [nugets pack: task]"
252
265
  nuspec = Albacore::NugetModel::Package.from_xxproj proj,
253
266
  symbols: false,
254
267
  verify_files: true,
268
+ dotnet_version: target,
255
269
  known_projects: knowns,
256
270
  version: version,
257
- configuration: (@opts.get(:configuration))
271
+ configuration: (@opts.get(:configuration)),
272
+ project_dependencies: project_dependencies
258
273
 
259
274
  # take data from package as configured in Rakefile, choosing what is in
260
275
  # Rakefile over what is in projfile.
@@ -266,9 +281,11 @@ module Albacore
266
281
  nuspec_symbols = Albacore::NugetModel::Package.from_xxproj proj,
267
282
  symbols: true,
268
283
  verify_files: true,
284
+ dotnet_version: target,
269
285
  known_projects: knowns,
270
286
  version: version,
271
- configuration: (@opts.get(:configuration))
287
+ configuration: (@opts.get(:configuration)),
288
+ project_dependencies: project_dependencies
272
289
 
273
290
  nuspec_symbols = nuspec_symbols.merge_with @opts.get(:package)
274
291
  trace { "nuspec symbols: #{nuspec_symbols.to_s} [nugets pack: task]" }
@@ -5,7 +5,9 @@ with tasks. Files should be named after the tasks they 'create'.
5
5
 
6
6
  For example, in a Rakefile, you can write:
7
7
 
8
- ```ruby Albacore::Tasks::Versionizer.new :versioning ```
8
+ ``` ruby
9
+ Albacore::Tasks::Versionizer.new :versioning
10
+ ```
9
11
 
10
12
  to create a new task, named `:versioning` that you can then depend on from other
11
13
  tasks.
@@ -0,0 +1,4 @@
1
+ require 'albacore'
2
+
3
+ module Albacore::Tools
4
+ end
@@ -1,3 +1,3 @@
1
1
  module Albacore
2
- VERSION = "2.0.0.rc.2"
2
+ VERSION = "2.0.0.rc.3"
3
3
  end
@@ -100,9 +100,7 @@ on many lines}
100
100
  end
101
101
  end
102
102
  describe FileGenerator do
103
- subject do
104
- FileGenerator.new(Fs.new, 'MyNamespace.Here', {})
105
- end
103
+ subject do FileGenerator.new(Fs.new, 'MyNamespace.Here', {}) end
106
104
  it do
107
105
  subject.should respond_to(:generate)
108
106
  end
@@ -111,16 +109,19 @@ describe FileGenerator do
111
109
  end
112
110
  end
113
111
  describe FileGenerator, 'when generating F# file' do
114
- subject do
115
- FileGenerator.new(Fs.new, 'My.Fs.Ns', {})
116
- end
117
- let :generated do
118
- subject.generate com_visible: false,
112
+ before :all do
113
+ @out = StringIO.new
114
+ subject = FileGenerator.new(Fs.new, 'My.Fs.Ns', {})
115
+ subject.generate @out,
116
+ com_visible: false,
119
117
  assembly_title: 'My.Ns',
120
118
  assembly_version: '0.1.2',
121
119
  custom_thing: %w|a b c|,
122
120
  named_thing: { :b => 3, :c => 'hi' }
123
121
  end
122
+ let :generated do
123
+ @out.string
124
+ end
124
125
  it 'should include namespace' do
125
126
  generated.should =~ /namespace My\.Fs\.Ns(\r\n?|\n)/
126
127
  end
@@ -153,16 +154,19 @@ describe FileGenerator, 'when generating F# file' do
153
154
  end
154
155
  end
155
156
  describe FileGenerator do
156
- subject do
157
- FileGenerator.new(Cs.new, '', {})
158
- end
159
- let :generated do
160
- subject.generate com_visible: false,
157
+ before :all do
158
+ @out = StringIO.new
159
+ subject = FileGenerator.new(Cs.new, '', {})
160
+ subject.generate @out,
161
+ com_visible: false,
161
162
  assembly_title: 'My.Asm',
162
163
  assembly_version: '0.1.2',
163
164
  custom_thing: %w|a b c|,
164
165
  named_thing: { :b => 3, :c => 'hi' }
165
166
  end
167
+ let :generated do
168
+ @out.string
169
+ end
166
170
  it 'should not include \'namespace\'' do
167
171
  generated.should_not include('namespace')
168
172
  end
@@ -1,9 +1,10 @@
1
1
  require 'spec_helper'
2
+ require 'shared_contexts'
2
3
  require 'albacore/paths'
3
4
  require 'albacore/nuget_model'
4
5
 
5
6
  describe Albacore::NugetModel::Metadata do
6
- [:id, :version, :authors, :description, :language, :project_url, :license_url, :release_notes, :owners, :require_license_acceptance, :copyright, :tags, :dependencies, :framework_assemblies].each do |prop|
7
+ [:id, :version, :authors, :description, :summary, :language, :project_url, :license_url, :release_notes, :owners, :require_license_acceptance, :copyright, :tags, :dependencies, :framework_assemblies].each do |prop|
7
8
  it "responds to :#{prop}" do
8
9
  subject.should respond_to(prop)
9
10
  end
@@ -78,6 +79,7 @@ describe Albacore::NugetModel::Package, "from XML" do
78
79
  <owners>Ms.Example</owners>
79
80
  <requireLicenseAcceptance>false</requireLicenseAcceptance>
80
81
  <description>Example package</description>
82
+ <summary>Example package summary</summary>
81
83
  <releaseNotes>Used for specs</releaseNotes>
82
84
  <copyright>none</copyright>
83
85
  <tags>example spec</tags>
@@ -126,7 +128,7 @@ XML
126
128
  end
127
129
 
128
130
  # on Windows this fails due to replacement of path separators (by design)
129
- unless ::Rake::Win32.windows?
131
+ unless ::Albacore.windows?
130
132
  it "should generate the same (semantic) XML as above" do
131
133
  Nokogiri::XML(subject.to_xml, &:noblanks).to_xml.should eq(Nokogiri::XML(StringIO.new(xml), &:noblanks).to_xml)
132
134
  end
@@ -150,63 +152,6 @@ XML
150
152
  end
151
153
 
152
154
 
153
- shared_context 'metadata_dsl' do
154
- let :m do
155
- subject.metadata
156
- end
157
-
158
- def self.has_value sym, e
159
- it "should have overridden #{sym}, to be #{e}" do
160
- m.send(sym).should eq e
161
- end
162
- end
163
-
164
- def self.has_dep name, version
165
- it "has dependency on '#{name}'" do
166
- m.dependencies.has_key?(name).should be_true
167
- end
168
- it "overrode dependency on '#{name}'" do
169
- m.dependencies[name].version.should eq version
170
- end
171
- end
172
-
173
- def self.has_not_dep name
174
- it "does not have a dependency on #{name}" do
175
- m.dependencies.has_key?(name).should be_false
176
- end
177
- end
178
-
179
- def self.has_file src, target, exclude = nil
180
- src, target = norm(src), norm(target)
181
- it "has file[#{src}] (should not be nil)" do
182
- file = subject.files.find { |f| f.src == src }
183
- # puts "## ALL FILES ##"
184
- # subject.files.each do |f|
185
- # puts "subject.files: #{subject.files}, index of: #{subject.files.find_index { |f| f.src == src }}"
186
- # puts "#{f.inspect}"
187
- # end
188
- file.should_not be_nil
189
- end
190
-
191
- it "has file[#{src}].target == '#{target}'" do
192
- file = subject.files.find { |f| f.src == src }
193
- file.target.should eq target
194
- end
195
- end
196
-
197
- def self.has_not_file src
198
- src = norm src
199
- it "has not file[#{src}]" do
200
- file = subject.files.find { |f| f.src == src }
201
- file.should be_nil
202
- end
203
- end
204
-
205
- def self.norm str
206
- Albacore::Paths.normalise_slashes str
207
- end
208
- end
209
-
210
155
  describe "when reading xml from a fsproj file into Project/Metadata" do
211
156
  let :projfile do
212
157
  curr = File.dirname(__FILE__)
@@ -216,7 +161,7 @@ describe "when reading xml from a fsproj file into Project/Metadata" do
216
161
  Albacore::NugetModel::Package.from_xxproj_file projfile
217
162
  end
218
163
 
219
- include_context 'metadata_dsl'
164
+ include_context 'package_metadata_dsl'
220
165
 
221
166
  it "should find Name element" do
222
167
  m.id.should eq 'Project'
@@ -267,7 +212,7 @@ describe Albacore::NugetModel::Package, "overriding metadata" do
267
212
  p1.merge_with p2
268
213
  end
269
214
 
270
- include_context 'metadata_dsl'
215
+ include_context 'package_metadata_dsl'
271
216
 
272
217
  describe "when overriding:" do
273
218
  has_value :id, 'A.B.C'
@@ -296,7 +241,7 @@ describe "creating nuget (not symbols) from dependent proj file" do
296
241
  :configuration => 'Debug'
297
242
  end
298
243
 
299
- include_context 'metadata_dsl'
244
+ include_context 'package_metadata_dsl'
300
245
 
301
246
  # from fsproj
302
247
  has_dep 'Sample.Core', '2.3.0'
@@ -309,6 +254,17 @@ describe "creating nuget (not symbols) from dependent proj file" do
309
254
  # actual nuspec contents
310
255
  has_file 'bin/Debug/Sample.Commands.dll', 'lib/net40'
311
256
  has_file 'bin/Debug/Sample.Commands.xml', 'lib/net40'
257
+
258
+ describe 'when dotnet_version is set' do
259
+ subject do
260
+ Albacore::NugetModel::Package.from_xxproj_file projfile,
261
+ known_projects: %w[Sample.Core],
262
+ dotnet_version: 'mono32'
263
+ end
264
+ # actual nuspec contents
265
+ has_file 'bin/Debug/Sample.Commands.dll', 'lib/mono32'
266
+ has_file 'bin/Debug/Sample.Commands.xml', 'lib/mono32'
267
+ end
312
268
  end
313
269
 
314
270
  describe "creating nuget on dependent proj file" do
@@ -328,7 +284,7 @@ describe "creating nuget on dependent proj file" do
328
284
  Albacore::NugetModel::Package.from_xxproj_file projfile, opts
329
285
  end
330
286
 
331
- include_context 'metadata_dsl'
287
+ include_context 'package_metadata_dsl'
332
288
 
333
289
  describe 'without project_dependencies' do
334
290
  # just as the opts in the main describe says...
@@ -1,12 +1,16 @@
1
1
  require 'spec_helper'
2
+ require 'shared_contexts'
2
3
  require 'support/sh_interceptor'
3
4
  require 'albacore'
4
5
  require 'albacore/task_types/nugets_pack'
6
+ require 'albacore/nuget_model'
7
+
8
+ include ::Albacore::NugetsPack
5
9
 
6
10
  class ConfigFac
7
11
  def self.create id, curr, gen_symbols = true
8
12
  cfg = Albacore::NugetsPack::Config.new
9
- cfg.target = 'net40'
13
+ cfg.target = 'mono32'
10
14
  cfg.configuration = 'Debug'
11
15
  cfg.files = Dir.glob(File.join(curr, 'testdata', 'Project', '*.fsproj'))
12
16
  cfg.out = 'spec/testdata/pkg'
@@ -60,12 +64,12 @@ end
60
64
 
61
65
  # testing the command for nuget
62
66
 
63
- describe Albacore::NugetsPack::Cmd, "when calling #execute" do
67
+ describe Cmd, "when calling #execute" do
64
68
 
65
69
  include_context 'path testing'
66
70
 
67
71
  let :cmd do
68
- Albacore::NugetsPack::Cmd.new 'NuGet.exe', config.opts()
72
+ Cmd.new 'NuGet.exe', config.opts()
69
73
  end
70
74
 
71
75
  subject do
@@ -111,11 +115,11 @@ describe Albacore::NugetsPack::Cmd, "when calling #execute" do
111
115
  end
112
116
  end
113
117
 
114
- describe Albacore::NugetsPack::Cmd, 'when calling :get_nuget_path_of' do
118
+ describe Cmd, 'when calling :get_nuget_path_of' do
115
119
  include_context 'pack_config'
116
120
 
117
121
  subject do
118
- Albacore::NugetsPack::Cmd.new 'NuGet.exe', config.opts()
122
+ Cmd.new 'NuGet.exe', config.opts()
119
123
  end
120
124
 
121
125
  let :sample1 do
@@ -145,17 +149,18 @@ EXAMPLE_OUTPUT
145
149
  end
146
150
  end
147
151
 
152
+ # testing nuspec task
148
153
 
149
- describe Albacore::NugetsPack::NuspecTask, "when testing public interface" do
154
+ describe NuspecTask, "when testing public interface" do
150
155
  include_context 'pack_config'
151
156
  include_context 'path testing'
152
157
 
153
158
  it "accepts .nuspec files" do
154
- Albacore::NugetsPack::NuspecTask.accept?('some.nuspec').should be_true
159
+ NuspecTask.accept?('some.nuspec').should be_true
155
160
  end
156
161
 
157
162
  let (:cmd) do
158
- Albacore::NugetsPack::Cmd.new 'NuGet.exe', config.opts()
163
+ Cmd.new 'NuGet.exe', config.opts()
159
164
  end
160
165
 
161
166
  subject do
@@ -164,7 +169,7 @@ describe Albacore::NugetsPack::NuspecTask, "when testing public interface" do
164
169
 
165
170
  before do
166
171
  cmd.extend(ShInterceptor)
167
- task = Albacore::NugetsPack::NuspecTask.new cmd, config, './spec/testdata/example.nuspec'
172
+ task = NuspecTask.new cmd, config, './spec/testdata/example.nuspec'
168
173
  task.execute
169
174
  end
170
175
 
@@ -176,24 +181,47 @@ describe Albacore::NugetsPack::NuspecTask, "when testing public interface" do
176
181
  end
177
182
  end
178
183
 
179
- describe Albacore::NugetsPack::ProjectTask, "when testing public interface" do
184
+ # testing project task
185
+
186
+ describe ProjectTask do
187
+ include_context 'pack_config no symbols'
188
+ include_context 'package_metadata_dsl'
189
+
190
+ it 'sanity: should have config with target=mono32' do
191
+ config.opts().get(:target).should eq('mono32')
192
+ end
193
+
194
+ let :projfile do
195
+ curr = File.dirname(__FILE__)
196
+ File.join curr, "testdata", "Project", "Project.fsproj"
197
+ end
198
+
199
+ subject do
200
+ proj = Albacore::Project.new projfile
201
+ ProjectTask.new( config.opts() ).send(:create_nuspec, proj, [])[0] # index0 first nuspec Alabacore::Package
202
+ end
203
+
204
+ has_file 'bin/Debug/Project.dll', 'lib/mono32'
205
+ end
206
+
207
+ describe ProjectTask, "when testing public interface" do
180
208
  let :projfile do
181
209
  curr = File.dirname(__FILE__)
182
210
  File.join curr, "testdata", "Project.fsproj"
183
211
  end
184
212
  it "can be created" do
185
- Albacore::NugetsPack::ProjectTask.new(Map.new(:files => [projfile]))
213
+ ProjectTask.new(Map.new(:files => [projfile]))
186
214
  end
187
215
  it "rejects .nuspec files" do
188
- Albacore::NugetsPack::ProjectTask.accept?('some.nuspec').should eq false
216
+ ProjectTask.accept?('some.nuspec').should eq false
189
217
  end
190
218
  end
191
219
 
192
- describe Albacore::NugetsPack::ProjectTask, "creating nuget from proj file" do
220
+ describe ProjectTask, "creating nuget from proj file" do
193
221
  let(:cmdo) { Hash.new }
194
222
 
195
223
  subject do
196
- Albacore::NugetsPack::ProjectTask.new(config.opts()) do |cmd|
224
+ ProjectTask.new(config.opts()) do |cmd|
197
225
  cmd.extend ShInterceptor
198
226
  cmdo[:cmd] = cmd
199
227
  end
@@ -0,0 +1,59 @@
1
+ require 'albacore/paths'
2
+
3
+ shared_context 'package_metadata_dsl' do
4
+ let :m do
5
+ subject.metadata
6
+ end
7
+
8
+ def self.has_value sym, e
9
+ it "should have overridden #{sym}, to be #{e}" do
10
+ m.send(sym).should eq e
11
+ end
12
+ end
13
+
14
+ def self.has_dep name, version
15
+ it "has dependency on '#{name}'" do
16
+ m.dependencies.has_key?(name).should be_true
17
+ end
18
+ it "overrode dependency on '#{name}'" do
19
+ m.dependencies[name].version.should eq version
20
+ end
21
+ end
22
+
23
+ def self.has_not_dep name
24
+ it "does not have a dependency on #{name}" do
25
+ m.dependencies.has_key?(name).should be_false
26
+ end
27
+ end
28
+
29
+ def self.has_file src, target, exclude = nil
30
+ src, target = norm(src), norm(target)
31
+ it "has file[#{src}] (should not be nil)" do
32
+ file = subject.files.find { |f| f.src == src }
33
+ # puts "## ALL FILES ##"
34
+ # subject.files.each do |f|
35
+ # puts "subject.files: #{subject.files}, index of: #{subject.files.find_index { |f| f.src == src }}"
36
+ # puts "#{f.inspect}"
37
+ # end
38
+ file.should_not be_nil
39
+ end
40
+
41
+ it "has file[#{src}].target == '#{target}'" do
42
+ file = subject.files.find { |f| f.src == src }
43
+ file.target.should eq target
44
+ end
45
+ end
46
+
47
+ def self.has_not_file src
48
+ src = norm src
49
+ it "has not file[#{src}]" do
50
+ file = subject.files.find { |f| f.src == src }
51
+ file.should be_nil
52
+ end
53
+ end
54
+
55
+ def self.norm str
56
+ Albacore::Paths.normalise_slashes str
57
+ end
58
+ end
59
+