albacore 2.8.0 → 3.0.0.pre.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/lib/albacore/cli.rb +2 -2
  3. data/lib/albacore/dsl.rb +2 -42
  4. data/lib/albacore/nuget_model.rb +173 -67
  5. data/lib/albacore/paket.rb +20 -5
  6. data/lib/albacore/paths.rb +1 -0
  7. data/lib/albacore/project.rb +228 -45
  8. data/lib/albacore/task_types/nugets_pack.rb +73 -425
  9. data/lib/albacore/task_types/sql_cmd.rb +1 -1
  10. data/lib/albacore/tasks/release.rb +2 -2
  11. data/lib/albacore/version.rb +1 -1
  12. data/spec/dsl_spec.rb +1 -1
  13. data/spec/nuget_model_spec.rb +208 -79
  14. data/spec/nugets_pack_spec.rb +1 -353
  15. data/spec/paket_spec.rb +51 -2
  16. data/spec/project_spec.rb +118 -43
  17. data/spec/shared_contexts.rb +28 -14
  18. data/spec/testdata/Project/Project.fsproj +1 -1
  19. data/spec/testdata/console-core-argu/.gitignore +4 -0
  20. data/spec/testdata/console-core-argu/.paket/Paket.Restore.targets +239 -0
  21. data/spec/testdata/console-core-argu/.paket/paket.exe +0 -0
  22. data/spec/testdata/console-core-argu/.paket/paket.targets +72 -0
  23. data/spec/testdata/console-core-argu/ConsoleArgu.fsproj +12 -0
  24. data/spec/testdata/console-core-argu/Library.fs +31 -0
  25. data/spec/testdata/console-core-argu/build.sh +4 -0
  26. data/spec/testdata/console-core-argu/paket.dependencies +3 -0
  27. data/spec/testdata/console-core-argu/paket.lock +565 -0
  28. data/spec/testdata/console-core-argu/paket.references +2 -0
  29. data/spec/testdata/console-core-argu/paket.template +1 -0
  30. metadata +26 -16
  31. data/lib/albacore/app_spec.rb +0 -229
  32. data/lib/albacore/cpack_app_spec.rb +0 -135
  33. data/lib/albacore/task_types/nugets.rb +0 -8
  34. data/lib/albacore/task_types/nugets_restore.rb +0 -181
  35. data/spec/app_spec_spec.rb +0 -147
  36. data/spec/fpm_app_spec_spec.rb +0 -157
  37. data/spec/nugets_find_gem_exe_spec.rb +0 -21
  38. data/spec/nugets_restore_spec.rb +0 -77
@@ -5,356 +5,4 @@ require 'shared_contexts'
5
5
  require 'support/sh_interceptor'
6
6
  require 'albacore'
7
7
  require 'albacore/task_types/nugets_pack'
8
- require 'albacore/nuget_model'
9
-
10
- include ::Albacore::NugetsPack
11
-
12
- # The .NET Framework / .NET Standard specified by default
13
- DEFAULT_FRAMEWORK = 'net461'
14
-
15
- class ConfigFac
16
- def self.create id, curr, target, gen_symbols = true
17
- cfg = Albacore::NugetsPack::Config.new
18
- cfg.target = target
19
- cfg.configuration = 'Debug'
20
- cfg.files = Dir.glob(File.join(curr, 'testdata', 'Project', '*.fsproj'))
21
- cfg.out = 'spec/testdata/pkg'
22
- cfg.exe = 'NuGet.exe'
23
- cfg.with_metadata do |m|
24
- m.id = id
25
- m.authors = 'haf'
26
- m.owners = 'haf owner'
27
- m.description = 'a nice lib'
28
- m.language = 'Danish'
29
- m.project_url = 'https://github.com/haf/Reasonable'
30
- m.license_url = 'https://github.com/haf/README.md'
31
- m.version = '0.2.3'
32
- m.release_notes = %{
33
- v10.0.0:
34
- - Some notes
35
- }
36
- m.require_license_acceptance = false
37
-
38
- m.add_dependency 'Abc.Package', '>= 1.0.2'
39
- m.add_framework_dependency 'System.Transactions', '4.0.0'
40
- end
41
- cfg.gen_symbols if gen_symbols # files: *.{pdb,dll,all compiled files}
42
- cfg
43
- end
44
- end
45
-
46
- shared_context 'pack_config' do
47
- let :id do
48
- 'Sample.Nuget'
49
- end
50
- let :curr do
51
- File.dirname(__FILE__)
52
- end
53
- let :config do
54
- cfg = ConfigFac.create id, curr, DEFAULT_FRAMEWORK, true
55
- end
56
- end
57
-
58
- shared_context 'pack_config no symbols' do
59
- let :id do
60
- 'Sample.Nuget'
61
- end
62
- let :curr do
63
- File.dirname(__FILE__)
64
- end
65
- let :config do
66
- cfg = ConfigFac.create id, curr, DEFAULT_FRAMEWORK, false
67
- end
68
- end
69
-
70
- describe Albacore::NugetsPack::Config, 'when setting #nuget_gem_exe' do
71
- it 'should be set to path that exists' do
72
- subject.nuget_gem_exe
73
- expect(subject.exe).to be_a String
74
- expect(File.exists?( subject.exe)).to be true
75
- end
76
- end
77
- # testing the command for nuget
78
-
79
- describe Cmd, "when calling #execute" do
80
-
81
- include_context 'path testing'
82
-
83
- let :cmd do
84
- Cmd.new 'NuGet.exe', config.opts()
85
- end
86
-
87
- subject do
88
- cmd.extend ShInterceptor
89
- cmd.execute './spec/testdata/example.nuspec', './spec/testdata/example.symbols.nuspec'
90
- #puts "## INVOCATIONS:"
91
- #cmd.invocations.each do |i|
92
- # puts "#{i}"
93
- #end
94
- cmd
95
- end
96
-
97
- describe "first invocation" do
98
- include_context 'pack_config'
99
- it "should run the correct executable" do
100
- expect(subject.mono_command(0)).to eq('NuGet.exe')
101
- end
102
- it "should include the correct parameters" do
103
- expect(subject.mono_parameters(0)).to eq(%W[Pack -OutputDirectory #{path 'spec/testdata/pkg'} ./spec/testdata/example.nuspec])
104
- end
105
- end
106
-
107
- describe "second invocation" do
108
- include_context 'pack_config'
109
- it "should include -Symbols" do
110
- expect(subject.mono_parameters(1)).to eq(%W[Pack -OutputDirectory #{path 'spec/testdata/pkg'} -Symbols ./spec/testdata/example.symbols.nuspec])
111
- end
112
- end
113
-
114
- describe "without symbols" do
115
- include_context 'pack_config no symbols'
116
- subject do
117
- cmd.extend ShInterceptor
118
- cmd.execute './spec/testdata/example.nuspec'
119
- cmd
120
- end
121
- it 'should not include -Symbols' do
122
- expect(subject.mono_parameters(0)).to eq(%W[Pack -OutputDirectory #{path 'spec/testdata/pkg'} ./spec/testdata/example.nuspec])
123
- end
124
- it 'should not have a second invocation' do
125
- expect(subject.invocations.length).to eq(1)
126
- end
127
- end
128
- end
129
-
130
- describe Cmd, 'when calling :get_nuget_path_of' do
131
- include_context 'pack_config'
132
-
133
- subject do
134
- Cmd.new 'NuGet.exe', config.opts()
135
- end
136
-
137
- let :sample1 do
138
- <<EXAMPLE_OUTPUT
139
- Attempting to build package from 'MyNuget.Package.nuspec'.
140
- Successfully created package 'Y:\\Shared\\build\\pkg\\MyNuget.Package.1.0.0.nupkg'.
141
- Successfully created package 'Y:\\Shared\\build\\pkg\\MyNuget.Package.1.0.0.symbols.nupkg'.
142
- EXAMPLE_OUTPUT
143
- end
144
-
145
- let :sample2 do
146
- <<EXAMPLE_OUTPUT
147
- Attempting to build package from 'MyNuget.Package.nuspec'.
148
- Successfully created package '/home/xyz/Shared/build/pkg/MyNuget.Package.1.0.0.nupkg'.
149
- Successfully created package '/home/xyz/Shared/build/pkg/MyNuget.Package.1.0.0.symbols.nupkg'.
150
- EXAMPLE_OUTPUT
151
- end
152
-
153
- let :sample3 do
154
- <<EXAMPLE_OUTPUT
155
- Attempting to build package from 'MyNuget.Package.nuspec'.
156
- Successfully created package '/home/xyz/Shared/build/pkg/MyNuget.Package.1.0.0-alpha3.nupkg'.
157
- Successfully created package '/home/xyz/Shared/build/pkg/MyNuget.Package.1.0.0-alpha3.symbols.nupkg'.
158
- EXAMPLE_OUTPUT
159
- end
160
-
161
- let :sample4 do
162
- <<EXAMPLE_OUTPUT
163
- Attempting to build package from 'MyNuget.Package.nuspec'.
164
- Successfully created package '/home/xyz/Shared/build/pkg/MyNuget.Package.1.0.0-alpha.nupkg'.
165
- EXAMPLE_OUTPUT
166
- end
167
-
168
- let :sample5 do
169
- <<EXAMPLE_OUTPUT
170
- Attempting to build package from 'Fröken.nuspec'.
171
- Successfully created package '/home/xyz/Shared/build/pkg/Fröken.1.0.0-alpha.nupkg'.
172
- EXAMPLE_OUTPUT
173
- end
174
-
175
- it "should match sample1 with last nupkg mentioned" do
176
- match = subject.send(:get_nuget_path_of) { sample1 }
177
- expect(match).to eq('Y:\\Shared\\build\\pkg\\MyNuget.Package.1.0.0.symbols.nupkg')
178
- end
179
-
180
- it 'should match sample2 with last nupkg mentioned' do
181
- match = subject.send(:get_nuget_path_of) { sample2 }
182
- expect(match).to eq('/home/xyz/Shared/build/pkg/MyNuget.Package.1.0.0.symbols.nupkg')
183
- end
184
-
185
- it 'should match sample3 with last nupkg mentioned' do
186
- match = subject.send(:get_nuget_path_of) { sample3 }
187
- expect(match).to eq('/home/xyz/Shared/build/pkg/MyNuget.Package.1.0.0-alpha3.symbols.nupkg')
188
- end
189
-
190
- it 'should match sample4 with last nupkg mentioned' do
191
- match = subject.send(:get_nuget_path_of) { sample4 }
192
- expect(match).to eq('/home/xyz/Shared/build/pkg/MyNuget.Package.1.0.0-alpha.nupkg')
193
- end
194
-
195
- it 'should match sample5 despite non-ASCII' do
196
- match = subject.send(:get_nuget_path_of) { sample5 }
197
- expect(match).to eq('/home/xyz/Shared/build/pkg/Fröken.1.0.0-alpha.nupkg')
198
- end
199
- end
200
-
201
- # testing nuspec task
202
-
203
- describe NuspecTask, "when testing public interface" do
204
- include_context 'pack_config'
205
- include_context 'path testing'
206
-
207
- it "accepts .nuspec files" do
208
- expect(NuspecTask.accept?('some.nuspec')).to be true
209
- end
210
-
211
- let (:cmd) do
212
- Cmd.new 'NuGet.exe', config.opts()
213
- end
214
-
215
- subject do
216
- cmd
217
- end
218
-
219
- before do
220
- cmd.extend(ShInterceptor)
221
- task = NuspecTask.new cmd, config, './spec/testdata/example.nuspec'
222
- task.execute
223
- end
224
-
225
- it "should run the correct executable" do
226
- expect(subject.mono_command).to eq 'NuGet.exe'
227
- end
228
- it "should give the correct parameters" do
229
- expect(subject.mono_parameters).to eq %W[Pack -OutputDirectory #{path 'spec/testdata/pkg'} ./spec/testdata/example.nuspec]
230
- end
231
- end
232
-
233
- # testing project task
234
-
235
- describe ProjectTask, 'when target framework is specified' do
236
- include_context 'pack_config no symbols'
237
- include_context 'package_metadata_dsl'
238
-
239
- it "sanity: should have config with target=#{DEFAULT_FRAMEWORK}" do
240
- expect(config.opts().get(:target)).to eq(DEFAULT_FRAMEWORK)
241
- end
242
-
243
- let :projfile do
244
- curr = File.dirname(__FILE__)
245
- File.join curr, "testdata", "Project", "Project.fsproj"
246
- end
247
-
248
- subject do
249
- proj = Albacore::Project.new projfile
250
- ProjectTask.new( config.opts() ).send(:create_nuspec, proj, [])[0] # index0 first nuspec Alabacore::Package
251
- end
252
-
253
- has_file 'bin/Debug/Project.dll', "lib/#{DEFAULT_FRAMEWORK}"
254
- end
255
-
256
- describe ProjectTask, 'when target framework is unspecified' do
257
- include_context 'pack_config no symbols'
258
- include_context 'package_metadata_dsl'
259
-
260
- let :projfile do
261
- curr = File.dirname(__FILE__)
262
- File.join curr, "testdata", "Project", "Project.fsproj"
263
- end
264
- let :vanilla_config do
265
- cfg = ConfigFac.create id, curr, '', false
266
- end
267
- subject do
268
- proj = Albacore::Project.new projfile
269
- ProjectTask.new( vanilla_config.opts() ).send(:create_nuspec, proj, [])[0] # index0 first nuspec Alabacore::Package
270
- end
271
-
272
- has_file 'bin/Debug/Project.dll', 'lib/net45'
273
- end
274
-
275
- describe ProjectTask, "when testing public interface" do
276
- let :projfile do
277
- curr = File.dirname(__FILE__)
278
- File.join curr, "testdata", "Project.fsproj"
279
- end
280
- it "can be created" do
281
- ProjectTask.new(Map.new(:files => [projfile]))
282
- end
283
- it "rejects .nuspec files" do
284
- expect(ProjectTask.accept?('some.nuspec')).to eq false
285
- end
286
- end
287
-
288
- describe ProjectTask, "creating nuget from proj file" do
289
- let(:cmdo) { Hash.new }
290
-
291
- subject do
292
- ProjectTask.new(config.opts()) do |cmd|
293
- cmd.extend ShInterceptor
294
- cmdo[:cmd] = cmd
295
- end
296
- end
297
-
298
- before :each do
299
- subject.execute
300
- end
301
-
302
- describe 'when generating symbols' do
303
- include_context 'pack_config'
304
- it 'should have generated a nuspec' do
305
- expect(cmdo[:cmd].mono_parameters(0)[-1]).to include('Sample.Nuget.nuspec')
306
- end
307
- it 'should have generated a symbol nuspec' do
308
- expect(cmdo[:cmd].mono_parameters(1)[-1]).to include('Sample.Nuget.symbols.nuspec')
309
- end
310
- end
311
-
312
- describe 'when not generating symbols' do
313
- include_context 'pack_config no symbols'
314
- it 'should have generated a nuspec' do
315
- expect(cmdo[:cmd].mono_parameters(0)[-1]).to include('Sample.Nuget.nuspec')
316
- end
317
- it 'should have done no further calls' do
318
- expect(cmdo[:cmd].invocations.length).to eq(1)
319
- end
320
- it 'should have no further invocations' do
321
- begin
322
- cmdo[:cmd].mono_parameters(1)
323
- rescue RuntimeError
324
- end
325
- end
326
- end
327
- end
328
-
329
- describe ProjectTask, "path_to should accept both relative and absolute paths" do
330
- let :proj_task do
331
- curr = File.dirname(__FILE__)
332
- ProjectTask.new(Map.new(
333
- :files => [File.join( curr, "testdata", "Project.fsproj")],
334
- :original_path => "/original_path/"))
335
- end
336
- it "should use original_path to resolve path" do
337
- expect(proj_task.path_to( "./bin/something.exe", "./tmp/")).to eq "/original_path/bin/something.exe"
338
- end
339
- it "should return the absolute path when the path to the exe is absolute" do
340
- expect(proj_task.path_to( "/bin/something.exe", "./tmp/")).to eq "/bin/something.exe"
341
- end
342
- end
343
-
344
- describe 'encoding functions' do
345
- it 'should throw InvalidByteSequenceError by default' do
346
- # http://www.ruby-doc.org/core-2.1.3/String.html#method-i-encode
347
- begin
348
- # it's "valid US-ASCII" from the POV of #encode unless
349
- # #force_encoding is used
350
- [0xef].pack('C*').force_encoding('US-ASCII').encode 'utf-8'
351
- fail 'should throw invalid byte sequence error, because it\'s NOT US-ASCII'
352
- rescue Encoding::InvalidByteSequenceError
353
- # yep
354
- end
355
- end
356
- it 'should be replaceable' do
357
- subj = [0xef].pack('C*').encode 'utf-8', undef: :replace, invalid: :replace, replace: ''
358
- expect(subj).to eq ''
359
- end
360
- end
8
+ require 'albacore/nuget_model'
@@ -1,6 +1,6 @@
1
1
  require 'albacore/paket'
2
2
 
3
- describe Albacore::Paket do
3
+ describe Albacore::Paket, "simple example" do
4
4
  let :file do
5
5
  %{NUGET
6
6
  remote: https://www.nuget.org/api/v2
@@ -20,10 +20,13 @@ describe Albacore::Paket do
20
20
  NuGet.CommandLine (2.8.5)
21
21
  }
22
22
  end
23
- describe 'parsing paket.lock file' do
23
+ describe 'old lockfile' do
24
24
  let :references do
25
25
  Hash[subject.parse_paket_lock(file.split(/\n|\r\n/))]
26
26
  end
27
+ it 'has Aether' do
28
+ expect(references['Aether'].version).to eq '6.0'
29
+ end
27
30
  it 'has FParsec' do
28
31
  expect(references['FParsec'].version).to eq '1.0.1'
29
32
  end
@@ -48,3 +51,49 @@ describe Albacore::Paket do
48
51
  end
49
52
  end
50
53
  end
54
+
55
+ describe Albacore::Paket, "netcore lockfile" do
56
+ let :path do
57
+ File.expand_path('../testdata/console-core-argu/paket.lock', __FILE__)
58
+ end
59
+
60
+ let :references do
61
+ arr = File.open(path, 'r') do |io|
62
+ Albacore::Paket.parse_paket_lock(io.readlines.map(&:chomp))
63
+ end
64
+ Hash[arr]
65
+ end
66
+
67
+ it "file exists" do
68
+ expect(File.exists?(path)).to be true
69
+ end
70
+
71
+ it "has items" do
72
+ expect(references.length).to_not be_zero
73
+ end
74
+
75
+ %w|Argu FSharp.Core|.each do |r|
76
+ it "has #{r}" do
77
+ expect(references[r]).to_not be_nil
78
+ end
79
+ end
80
+ end
81
+
82
+ describe Albacore::Paket, "dependencies file" do
83
+ let :path do
84
+ File.expand_path('../testdata/console-core-argu/paket.dependencies', __FILE__)
85
+ end
86
+
87
+ let :references do
88
+ arr = File.open(path, 'r') do |io|
89
+ Albacore::Paket.parse_dependencies_file(io.readlines.map(&:chomp))
90
+ end
91
+ Hash[arr.map{ |x| [x,x] }]
92
+ end
93
+
94
+ %w|Argu FSharp.Core|.each do |r|
95
+ it "has #{r}" do
96
+ expect(references[r]).to_not be_nil
97
+ end
98
+ end
99
+ end
@@ -3,58 +3,72 @@ require 'albacore/semver'
3
3
  require 'albacore/project'
4
4
  require 'albacore/paths'
5
5
 
6
- describe Albacore::Project, "when loading packages.config" do
6
+ describe Albacore::Project do
7
7
  subject do
8
8
  p = File.expand_path('../testdata/Project/Project.fsproj', __FILE__)
9
9
  #puts "path: #{p}"
10
10
  Albacore.create_project(p)
11
11
  end
12
- let :nlog do
13
- subject.declared_packages.find { |p| p.id == 'NLog' }
14
- end
15
12
 
16
- it 'should have a guid' do
13
+ it 'has #guid' do
17
14
  expect(subject.guid).to match /^[A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12}$/i
18
15
  end
19
16
 
17
+ it 'has xmldoc?' do
18
+ expect(subject.xmldoc?).to be true
19
+ end
20
+
20
21
  it 'assumption: can gsub("[\{\}]", "")' do
21
22
  expect('{a}'.gsub(/[\{\}]/, '')).to eq 'a'
22
23
  end
23
24
 
24
- it 'should have an OutputPath' do
25
- expect(subject.output_path('Debug')).to_not be_nil
26
- end
27
- it 'should have the correct OutputPath' do
28
- expect(subject.output_path('Debug')).to eq('bin\\Debug\\')
29
- end
30
- it 'should also have a Release OutputPath' do
31
- expect(subject.output_path('Release')).to eq('bin\\Release\\')
32
- expect(subject.try_output_path('Release')).to eq('bin\\Release\\')
33
- end
34
- it 'should raise "ConfigurationNotFoundEror" if not found' do
35
- begin
36
- subject.output_path('wazaaa')
37
- rescue ::Albacore::ConfigurationNotFoundError
25
+ describe "#outputs" do
26
+ let :outputs do
27
+ subject.outputs 'Debug', 'net45'
28
+ end
29
+
30
+ it 'non-empty array' do
31
+ expect(outputs).to_not be_empty
32
+ end
33
+
34
+ it 'a DLL' do
35
+ expect(outputs).to include(
36
+ Albacore::OutputArtifact.new 'bin/Debug/Project.dll', Albacore::OutputArtifact::LIBRARY
37
+ )
38
+ end
39
+
40
+ it 'should raise "ConfigurationNotFoundEror" if not found' do
41
+ begin
42
+ subject.outputs('UNKNOWN_Configuration', 'net451')
43
+ rescue ::Albacore::ConfigurationNotFoundError
44
+ end
38
45
  end
39
46
  end
40
- it 'should return nil with #try_output_path(conf)' do
41
- expect(subject.try_output_path('weeeo')).to be_nil
42
- end
43
- it "should have three packages" do
44
- expect(subject.declared_packages.length).to eq 3
45
- end
46
- it "should contain NLog" do
47
- expect(nlog).to_not be_nil
48
- end
49
- it "should have a four number on NLog" do
50
- expect(nlog.version).to eq("2.0.0.2000")
51
- end
52
- it "should have a semver number" do
53
- expect(nlog.semver).to eq(Albacore::SemVer.new(2, 0, 0))
47
+
48
+ describe "#declared_packages" do
49
+ it "has three" do
50
+ expect(subject.declared_packages.length).to eq 3
51
+ end
52
+
53
+ let :nlog do
54
+ subject.declared_packages.find { |p| p.id == 'NLog' }
55
+ end
56
+
57
+ it "contains NLog" do
58
+ expect(nlog).to_not be_nil
59
+ end
60
+
61
+ it "should have a four number on NLog" do
62
+ expect(nlog.version).to eq("2.0.0.2000")
63
+ end
64
+
65
+ it "should have a semver number" do
66
+ expect(nlog.semver).to eq(Albacore::SemVer.new(2, 0, 0))
67
+ end
54
68
  end
55
69
  end
56
70
 
57
- describe Albacore::Project, "when reading project file" do
71
+ describe Albacore::Project, "reading project file" do
58
72
  def project_path
59
73
  File.expand_path('../testdata/Project/Project.fsproj', __FILE__)
60
74
  end
@@ -62,14 +76,18 @@ describe Albacore::Project, "when reading project file" do
62
76
  subject do
63
77
  Albacore.create_project project_path
64
78
  end
79
+
65
80
  let :library1 do
66
81
  subject.included_files.find { |p| p.include == 'Library1.fs' }
67
82
  end
83
+
68
84
  it "should contain library1" do
69
85
  expect(library1).to_not be_nil
70
86
  end
87
+
71
88
  it 'should contain the target framework' do
72
- expect(subject.target_framework).to eq "v4.5"
89
+ expect(subject.target_framework).to eq "net451"
90
+ expect(subject.target_frameworks).to eq %w|net451|
73
91
  end
74
92
 
75
93
  describe 'public API' do
@@ -100,33 +118,87 @@ describe Albacore::Project, "when reading project file" do
100
118
  it 'should have five referenced assemblies' do
101
119
  expect(subject.find_refs.length).to eq 5
102
120
  end
121
+
103
122
  it 'knows about referenced packages' do
104
123
  expect(subject).to respond_to :declared_packages
105
124
  end
125
+
106
126
  it 'knows about referenced projects' do
107
127
  expect(subject).to respond_to :declared_projects
108
128
  end
129
+
109
130
  it 'should have three referenced packages' do
110
131
  expected = %w|Intelliplan.Util Newtonsoft.Json NLog|
111
132
  expect(subject.find_packages.map(&:id)).to eq(expected)
112
133
  end
134
+ end
135
+ end
113
136
 
114
- # TODO: check whether output is DLL or EXE or something else
115
- it 'should know its output dll' do
116
- should respond_to :output_dll
117
- expect(subject.output_dll('Release')).to eq(Paths.join 'bin', 'Release', 'Project.dll')
118
- end
137
+ describe Albacore::Project, "for netcore" do
138
+ def project_path
139
+ File.expand_path('../testdata/console-core-argu/ConsoleArgu.fsproj', __FILE__)
140
+ end
141
+
142
+ subject do
143
+ Albacore.create_project project_path
144
+ end
145
+
146
+ it "#id" do
147
+ expect(subject.id).to eq 'ConsoleArgu'
148
+ end
149
+
150
+ it "#name" do
151
+ expect(subject.name).to eq 'ConsoleArgu'
152
+ end
153
+
154
+ it "#asmname" do
155
+ expect(subject.asmname).to eq 'ConsoleArgu'
156
+ end
157
+
158
+ it "#proj_filename_noext" do
159
+ expect(subject.proj_filename_noext).to eq 'ConsoleArgu'
160
+ end
161
+
162
+ it '#netcore?' do
163
+ expect(subject.netcore?).to eq true
164
+ end
165
+
166
+ it '#target_frameworks' do
167
+ expect(subject.target_frameworks).to eq %w|netstandard2.0 net461|
168
+ end
169
+
170
+ it '#outputs' do
171
+ expected = [
172
+ Albacore::OutputArtifact.new(
173
+ 'bin/Release/netstandard2.0/ConsoleArgu.dll',
174
+ Albacore::OutputArtifact::LIBRARY),
175
+
176
+ Albacore::OutputArtifact.new(
177
+ 'bin/Release/netstandard2.0/ConsoleArgu.xml',
178
+ Albacore::OutputArtifact::XMLDOC)
179
+ ]
180
+ expect(subject.outputs('Release', 'netstandard2.0')).to eq expected
181
+ end
182
+
183
+ it '#paket_packages' do
184
+ dps = subject.declared_packages.group_by { |d| d.id }
185
+ expect(dps).to_not be_empty
186
+
187
+ h = Hash[dps]
188
+ expect(h).to_not be_empty
189
+ expect(h['FSharp.Core'].length).to eq(2)
190
+ expect(h['Argu'].length).to eq(2)
119
191
  end
120
192
  end
121
193
 
122
- describe Albacore::Project, 'when given a PathnameWrap' do
194
+ describe Albacore::Project, 'with PathnameWrap' do
123
195
  it 'should allow argument of PathnameWrap' do
124
196
  require 'albacore/paths'
125
197
  Albacore.create_project(Paths::PathnameWrap.new(File.expand_path('../testdata/Project/Project.fsproj', __FILE__)))
126
198
  end
127
199
  end
128
- describe Albacore::Project do
129
200
 
201
+ describe Albacore::Project, "with AssemblyInfo.cs" do
130
202
  it 'should read version from AssemblyInfo.cs' do
131
203
  p = '../testdata/csharp/Exemplar/Exemplar/Exemplar.csproj'
132
204
  project = Albacore.create_project(Paths::PathnameWrap.new(File.expand_path(p, __FILE__)))
@@ -134,6 +206,7 @@ describe Albacore::Project do
134
206
  expected = '1.0.0.0'
135
207
  expect(expected).to eq(result)
136
208
  end
209
+
137
210
  it 'should read version from AssemblyInfo.cs in ModifiedAssemblyVersion' do
138
211
  p = '../testdata/csharp/ModifiedAssemblyVersion/ModifiedAssemblyVersion/ModifiedAssemblyVersion.csproj'
139
212
  project = Albacore.create_project(Paths::PathnameWrap.new(File.expand_path(p, __FILE__)))
@@ -141,6 +214,7 @@ describe Albacore::Project do
141
214
  expected = '2.0.0.0'
142
215
  expect(expected).to eq(result)
143
216
  end
217
+
144
218
  it 'should return 1.0.0.0 when AssemblyVersion is not found' do
145
219
  p = '../testdata/Project/Project.fsproj'
146
220
  project = Albacore.create_project(Paths::PathnameWrap.new(File.expand_path(p, __FILE__)))
@@ -148,14 +222,15 @@ describe Albacore::Project do
148
222
  expected = '1.0.0.0'
149
223
  expect(expected).to eq(result)
150
224
  end
225
+
151
226
  it 'properties_path should return project base path if assemblyinfo not found' do
152
227
  p = '../testdata/Project/Project.fsproj'
153
228
  project = Albacore.create_project(Paths::PathnameWrap.new(File.expand_path(p, __FILE__)))
154
229
  result = project.assembly_info_path
155
230
  expected = File.dirname(project.path)
156
231
  expect(expected).to eq(result)
157
-
158
232
  end
233
+
159
234
  it 'properties path should return project base path if both are equivalent' do
160
235
  p = '../testdata/Project/Project.fsproj'
161
236
  project = Albacore.create_project(Paths::PathnameWrap.new(File.expand_path(p, __FILE__)))