albacore 2.5.14 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/albacore/task_types/sql_package.rb +1 -1
- data/lib/albacore/task_types/test_runner.rb +47 -11
- data/lib/albacore/version.rb +1 -1
- data/spec/sql_package_spec.rb +2 -2
- data/spec/test_runner_spec.rb +238 -25
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fca7e93d7733d7e5bf335e38ef80e88591d7f2ab
|
4
|
+
data.tar.gz: 6e7eb09131e0bd1f2633ba1e9d6791d20467bf8c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 675c67991bf94a14ff29b67d3404d01b38869b488a9129739dd0cef8da00bab5a40842841757355837bff31b5a26d952f0c8a3abd2b906945bbf59d6dff7b918
|
7
|
+
data.tar.gz: d44ae46744d7c752a2b69fec2c3d013c43545a21a64cccb568a610060e9026a4fe6181b7fb9dbfe7f0ede2ecfc2a2877c759c30d7f3f33740e9ade4b05a302db
|
@@ -77,7 +77,7 @@ module Albacore
|
|
77
77
|
# target database that do not exist in the database project, and that will
|
78
78
|
# cause errors when you publish.
|
79
79
|
def verify_deployment
|
80
|
-
@parameters.add "/p:VerifyDeployment
|
80
|
+
@parameters.add "/p:VerifyDeployment=True"
|
81
81
|
end
|
82
82
|
|
83
83
|
# Specifies whether detailed feedback is suppressed. Defaults to False.
|
@@ -26,6 +26,7 @@ module Albacore
|
|
26
26
|
@copy_local = false
|
27
27
|
@is_ms_test = false
|
28
28
|
@clr_command = true
|
29
|
+
@execute_as_batch = false
|
29
30
|
@files = []
|
30
31
|
end
|
31
32
|
|
@@ -38,7 +39,8 @@ module Albacore
|
|
38
39
|
:is_ms_test => @is_ms_test,
|
39
40
|
:exe => @exe,
|
40
41
|
:parameters => @parameters,
|
41
|
-
:clr_command => @clr_command
|
42
|
+
:clr_command => @clr_command,
|
43
|
+
:execute_as_batch => @execute_as_batch)
|
42
44
|
end
|
43
45
|
|
44
46
|
attr_path_accessor :settings do |s|
|
@@ -63,6 +65,11 @@ module Albacore
|
|
63
65
|
@is_ms_test = true
|
64
66
|
end
|
65
67
|
|
68
|
+
# Will cause the executable to be run only once, testing all files as a batch.
|
69
|
+
def execute_as_batch
|
70
|
+
@execute_as_batch = true
|
71
|
+
end
|
72
|
+
|
66
73
|
private
|
67
74
|
def files
|
68
75
|
if @files.respond_to? :each
|
@@ -78,9 +85,14 @@ module Albacore
|
|
78
85
|
|
79
86
|
# expects both parameters and executable to be relative to the
|
80
87
|
# work_dir parameter
|
81
|
-
def initialize work_dir, executable, parameters,
|
88
|
+
def initialize work_dir, executable, parameters, files, clr_command = true
|
82
89
|
@work_dir, @executable = work_dir, executable
|
83
|
-
|
90
|
+
if files.respond_to? :each
|
91
|
+
@parameters = files.to_a.concat(parameters.to_a)
|
92
|
+
else
|
93
|
+
@parameters = parameters.to_a.unshift(files)
|
94
|
+
end
|
95
|
+
|
84
96
|
@clr_command = clr_command
|
85
97
|
end
|
86
98
|
|
@@ -103,28 +115,52 @@ module Albacore
|
|
103
115
|
def execute
|
104
116
|
raise ArgumentError, 'missing :exe' unless @opts.get :exe
|
105
117
|
raise ArgumentError, 'missing :files' unless @opts.get :files
|
118
|
+
raise ArgumentError, 'cannot specify both execute_as_batch and is_ms_test' if @opts.get :execute_as_batch and @opts.get :is_ms_test
|
119
|
+
raise ArgumentError, 'cannot specify both execute_as_batch and is_ms_test' if @opts.get :execute_as_batch and @opts.get :copy_local
|
120
|
+
|
106
121
|
@opts.get(:files).each do |dll|
|
107
122
|
raise ArgumentError, "could not find test dll '#{dll}' in dir #{FileUtils.pwd}" unless File.exists? dll
|
108
|
-
execute_tests_for dll
|
109
123
|
end
|
124
|
+
|
125
|
+
commands = []
|
126
|
+
if @opts.get(:execute_as_batch)
|
127
|
+
commands = build_command_for_all_dlls
|
128
|
+
else
|
129
|
+
commands = @opts.get(:files).map { |dll| build_command_for dll }
|
130
|
+
end
|
131
|
+
|
132
|
+
execute_commands commands
|
110
133
|
end
|
111
134
|
|
112
135
|
private
|
113
|
-
def
|
136
|
+
def execute_commands commands
|
137
|
+
commands.each { |command| command.execute }
|
138
|
+
end
|
139
|
+
|
140
|
+
def build_command_for dll
|
114
141
|
handle_directory dll, @opts.get(:exe) do |dir, exe|
|
115
142
|
filename = File.basename dll
|
116
143
|
|
117
144
|
if @opts.get(:is_ms_test)
|
118
145
|
filename = "/testcontainer:#{filename}"
|
119
146
|
end
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
cmd.execute
|
147
|
+
Albacore::TestRunner::Cmd.new dir,
|
148
|
+
exe,
|
149
|
+
@opts.get(:parameters, []),
|
150
|
+
[filename],
|
151
|
+
@opts.get(:clr_command)
|
126
152
|
end
|
127
153
|
end
|
154
|
+
|
155
|
+
def build_command_for_all_dlls
|
156
|
+
command = Albacore::TestRunner::Cmd.new '.',
|
157
|
+
@opts.get(:exe),
|
158
|
+
@opts.get(:parameters, []),
|
159
|
+
@opts.get(:files),
|
160
|
+
@opts.get(:clr_command)
|
161
|
+
[command]
|
162
|
+
end
|
163
|
+
|
128
164
|
def handle_directory dll, exe, &block
|
129
165
|
if @opts.get(:copy_local)
|
130
166
|
# TODO: #mktmpdir is not always reliable; consider contributing a patch to ruby?
|
data/lib/albacore/version.rb
CHANGED
data/spec/sql_package_spec.rb
CHANGED
@@ -76,9 +76,9 @@ describe 'when running with sql' do
|
|
76
76
|
expect(subject.executable).to eq('SqlPackage')
|
77
77
|
end
|
78
78
|
it do
|
79
|
-
expect(subject.parameters).to eq(%W|/Action:Publish /SourceFile:testdata/test.dacpac /Profile:testdata/test.publish /p:VerifyDeployment
|
79
|
+
expect(subject.parameters).to eq(%W|/Action:Publish /SourceFile:testdata/test.dacpac /Profile:testdata/test.publish /p:VerifyDeployment=True /Quiet:True|)
|
80
80
|
end
|
81
81
|
it do
|
82
82
|
expect(subject.is_mono_command?).to be false
|
83
83
|
end
|
84
|
-
end
|
84
|
+
end
|
data/spec/test_runner_spec.rb
CHANGED
@@ -21,7 +21,11 @@ describe ::Albacore::TestRunner::Config do
|
|
21
21
|
it do
|
22
22
|
should respond_to :native_exe
|
23
23
|
end
|
24
|
+
it do
|
25
|
+
should respond_to :execute_as_batch
|
26
|
+
end
|
24
27
|
end
|
28
|
+
|
25
29
|
describe ::Albacore::TestRunner::Config do
|
26
30
|
subject do
|
27
31
|
::Albacore::TestRunner::Config.new
|
@@ -35,7 +39,7 @@ describe ::Albacore::TestRunner::Config do
|
|
35
39
|
it 'should have the appropriate parameter in #opts.get(:parameters)' do
|
36
40
|
expect(subject.opts.get(:parameters)).to include('/TestResults=/b/c/d/e.xml')
|
37
41
|
end
|
38
|
-
|
42
|
+
|
39
43
|
it 'should have clr_command=false' do
|
40
44
|
expect(subject.opts.get(:clr_command)).to be false
|
41
45
|
end
|
@@ -82,46 +86,255 @@ describe ::Albacore::TestRunner::Cmd do
|
|
82
86
|
end
|
83
87
|
end
|
84
88
|
|
89
|
+
describe ::Albacore::TestRunner::Task, 'when configured improperly' do
|
90
|
+
context 'is_ms_test and execute_as_batch both specified' do
|
91
|
+
it 'should raise ArgumentError' do
|
92
|
+
config = ::Albacore::TestRunner::Config.new
|
93
|
+
config.exe = 'test-runner.exe'
|
94
|
+
config.files = 'Rakefile' # not a real DLL, but we need something that exists
|
95
|
+
config.is_ms_test
|
96
|
+
config.execute_as_batch
|
97
|
+
|
98
|
+
task = ::Albacore::TestRunner::Task.new(config.opts)
|
99
|
+
|
100
|
+
expect {
|
101
|
+
task.execute
|
102
|
+
}.to raise_error(ArgumentError)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
context 'copy_local and execute_as_batch both specified' do
|
107
|
+
it 'should raise ArgumentError' do
|
108
|
+
config = ::Albacore::TestRunner::Config.new
|
109
|
+
config.exe = 'test-runner.exe'
|
110
|
+
config.files = 'Rakefile' # not a real DLL, but we need something that exists
|
111
|
+
config.copy_local
|
112
|
+
config.execute_as_batch
|
113
|
+
|
114
|
+
task = ::Albacore::TestRunner::Task.new(config.opts)
|
115
|
+
|
116
|
+
expect {
|
117
|
+
task.execute
|
118
|
+
}.to raise_error(ArgumentError)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
85
123
|
describe ::Albacore::TestRunner::Task do
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
124
|
+
def create_task_that_intercepts_commands opts
|
125
|
+
task = ::Albacore::TestRunner::Task.new(config.opts)
|
126
|
+
def task.execute_commands commands
|
127
|
+
@commands = commands
|
128
|
+
commands.each { |command|
|
129
|
+
command.extend ShInterceptor
|
130
|
+
command.execute
|
131
|
+
}
|
132
|
+
end
|
133
|
+
|
134
|
+
def task.commands
|
135
|
+
@commands
|
136
|
+
end
|
137
|
+
|
138
|
+
task.execute
|
139
|
+
task
|
140
|
+
end
|
141
|
+
|
142
|
+
before(:context) do
|
143
|
+
Dir.chdir 'spec'
|
144
|
+
end
|
145
|
+
|
146
|
+
after(:context) do
|
147
|
+
Dir.chdir '..'
|
92
148
|
end
|
93
149
|
|
94
150
|
subject do
|
95
|
-
|
151
|
+
create_task_that_intercepts_commands config.opts
|
96
152
|
end
|
97
153
|
|
98
|
-
|
99
|
-
|
154
|
+
context "native_exe not specified" do
|
155
|
+
let :config do
|
156
|
+
config = ::Albacore::TestRunner::Config.new
|
157
|
+
config.exe = 'test-runner.exe'
|
158
|
+
config.files = 'utils_spec.rb' # not a real DLL, but we need something that exists
|
159
|
+
config
|
160
|
+
end
|
161
|
+
|
162
|
+
it "should execute command as CLR command" do
|
163
|
+
expect(subject.commands[0].invocations[0].options[:clr_command]).to eq(true)
|
164
|
+
end
|
165
|
+
|
166
|
+
it "should include the file at the beginning of the command" do
|
167
|
+
expect(subject.commands[0].invocations[0].parameters.first).to eq('utils_spec.rb')
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
context "native_exe specified" do
|
172
|
+
let :config do
|
173
|
+
config = ::Albacore::TestRunner::Config.new
|
174
|
+
config.exe = 'test-runner.exe'
|
175
|
+
config.files = 'utils_spec.rb' # not a real DLL, but we need something that exists
|
176
|
+
config.native_exe
|
177
|
+
config
|
178
|
+
end
|
179
|
+
|
180
|
+
it "should execute command as non-CLR command" do
|
181
|
+
expect(subject.commands[0].invocations[0].options[:clr_command]).to eq(false)
|
182
|
+
end
|
183
|
+
|
184
|
+
it "should include the file at the beginning of the command" do
|
185
|
+
expect(subject.commands[0].invocations[0].parameters.first).to eq('utils_spec.rb')
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
context "extra parameters and options specified" do
|
190
|
+
let :config do
|
191
|
+
config = ::Albacore::TestRunner::Config.new
|
192
|
+
config.exe = 'test-runner.exe'
|
193
|
+
config.files = 'utils_spec.rb' # not a real DLL, but we need something that exists
|
194
|
+
config.add_parameter '/magic_parameter1'
|
195
|
+
config.add_parameter '/magic_parameter2'
|
196
|
+
config
|
197
|
+
end
|
198
|
+
|
199
|
+
it "should include the parameters at the end of the command" do
|
200
|
+
expect(subject.commands[0].invocations[0].parameters.last(2)).to eq(['/magic_parameter1', '/magic_parameter2'])
|
201
|
+
end
|
202
|
+
|
203
|
+
it "should include the file at the beginning of the command" do
|
204
|
+
expect(subject.commands[0].invocations[0].parameters.first).to eq('utils_spec.rb')
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
context "file is in current directory" do
|
209
|
+
let :config do
|
210
|
+
config = ::Albacore::TestRunner::Config.new
|
211
|
+
config.exe = 'test-runner.exe'
|
212
|
+
config.files = 'utils_spec.rb' # not a real DLL, but we need something that exists
|
213
|
+
config
|
214
|
+
end
|
215
|
+
|
216
|
+
it "should run the command from the current directory" do
|
217
|
+
expect(subject.commands[0].invocations[0].options[:work_dir]).to eq('.')
|
218
|
+
expect(subject.commands[0].invocations[0].executable).to eq('test-runner.exe')
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should reference the file without directory qualifiers" do
|
222
|
+
expect(subject.commands[0].invocations[0].parameters).to include 'utils_spec.rb'
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
context "file is in subdirectory" do
|
227
|
+
let :config do
|
228
|
+
config = ::Albacore::TestRunner::Config.new
|
229
|
+
config.exe = 'test-runner.exe'
|
230
|
+
config.files = 'tools/fluent_migrator_spec.rb' # not a real DLL, but we need something that exists
|
231
|
+
config
|
232
|
+
end
|
233
|
+
|
234
|
+
it "should run the command from the subdirectory" do
|
235
|
+
expect(subject.commands[0].invocations[0].options[:work_dir]).to eq('tools')
|
236
|
+
expect(subject.commands[0].invocations[0].executable).to eq('../test-runner.exe')
|
237
|
+
end
|
238
|
+
|
239
|
+
it "should reference the file without directory qualifiers" do
|
240
|
+
expect(subject.commands[0].invocations[0].parameters).to include 'fluent_migrator_spec.rb'
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
context "file is in parent directory" do
|
245
|
+
let :config do
|
246
|
+
config = ::Albacore::TestRunner::Config.new
|
247
|
+
config.exe = 'test-runner.exe'
|
248
|
+
config.files = '../Rakefile' # not a real DLL, but we need something that exists
|
249
|
+
config
|
250
|
+
end
|
251
|
+
|
252
|
+
it "should run the command from the parent directory" do
|
253
|
+
expect(subject.commands[0].invocations[0].options[:work_dir]).to eq('..')
|
254
|
+
expect(subject.commands[0].invocations[0].executable).to eq('../spec/test-runner.exe')
|
255
|
+
end
|
256
|
+
|
257
|
+
it "should reference the file without directory qualifiers" do
|
258
|
+
expect(subject.commands[0].invocations[0].parameters).to include 'Rakefile'
|
259
|
+
end
|
100
260
|
end
|
101
261
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
262
|
+
context 'is_ms_test specified' do
|
263
|
+
let :config do
|
264
|
+
config = ::Albacore::TestRunner::Config.new
|
265
|
+
config.exe = 'test-runner.exe'
|
266
|
+
config.is_ms_test
|
267
|
+
config.files = 'utils_spec.rb' # not a real DLL, but we need something that exists
|
268
|
+
config
|
108
269
|
end
|
109
270
|
|
271
|
+
it 'should handle is_ms_test by adding testcontainer to the filename' do
|
272
|
+
expect(subject.commands.length).to eq(1)
|
273
|
+
expect(subject.commands[0].invocations[0].parameters.last).to eq('/testcontainer:utils_spec.rb')
|
274
|
+
end
|
110
275
|
end
|
111
276
|
|
112
|
-
|
113
|
-
|
277
|
+
context 'multiple files tested individually' do
|
278
|
+
let :config do
|
279
|
+
config = ::Albacore::TestRunner::Config.new
|
280
|
+
config.exe = 'test-runner.exe'
|
281
|
+
config.files = ['utils_spec.rb', 'tools/fluent_migrator_spec.rb'] # not real DLLs, but we need files that exist
|
282
|
+
config
|
283
|
+
end
|
284
|
+
|
285
|
+
it 'should execute one command per file' do
|
286
|
+
expect(subject.commands.length).to eq(2)
|
287
|
+
expect(subject.commands[0].invocations[0].parameters.last).to eq('utils_spec.rb')
|
288
|
+
expect(subject.commands[1].invocations[0].parameters.last).to eq('fluent_migrator_spec.rb')
|
289
|
+
end
|
114
290
|
end
|
115
291
|
|
116
|
-
|
117
|
-
|
292
|
+
context 'multiple files tested as a batch' do
|
293
|
+
let :config do
|
294
|
+
config = ::Albacore::TestRunner::Config.new
|
295
|
+
config.exe = 'test-runner.exe'
|
296
|
+
config.files = ['utils_spec.rb', 'tools/fluent_migrator_spec.rb'] # not real DLLs, but we need files that exist
|
297
|
+
config.execute_as_batch
|
298
|
+
config
|
299
|
+
end
|
300
|
+
|
301
|
+
it 'should execute a single command for all the files' do
|
302
|
+
expect(subject.commands.length).to eq(1)
|
303
|
+
expect(subject.commands[0].invocations[0].parameters).to eq(['utils_spec.rb', 'tools/fluent_migrator_spec.rb'])
|
304
|
+
end
|
118
305
|
end
|
306
|
+
end
|
307
|
+
|
308
|
+
describe ::Albacore::TestRunner::Cmd do
|
309
|
+
describe "creation" do
|
310
|
+
subject do
|
311
|
+
command = ::Albacore::TestRunner::Cmd.new '.',
|
312
|
+
'test-runner.exe',
|
313
|
+
['/parameter'],
|
314
|
+
files
|
315
|
+
command.extend ShInterceptor
|
316
|
+
command.execute
|
317
|
+
command
|
318
|
+
end
|
319
|
+
|
320
|
+
context "files is a single file" do
|
321
|
+
let :files do
|
322
|
+
'file'
|
323
|
+
end
|
324
|
+
|
325
|
+
it "should prepend the file to the parameters list" do
|
326
|
+
expect(subject.invocations[0].parameters).to eq(['file', '/parameter'])
|
327
|
+
end
|
328
|
+
end
|
329
|
+
|
330
|
+
context "files is an array" do
|
331
|
+
let :files do
|
332
|
+
['file1', 'file2']
|
333
|
+
end
|
119
334
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
# at this point, the exe file is just a dir in
|
124
|
-
expect(exe).to match /\w+\/e\.exe/
|
335
|
+
it "should prepend the files to the parameters list" do
|
336
|
+
expect(subject.invocations[0].parameters).to eq(['file1', 'file2', '/parameter'])
|
337
|
+
end
|
125
338
|
end
|
126
339
|
end
|
127
340
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: albacore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henrik Feldt
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-07-
|
12
|
+
date: 2016-07-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|