albacore 0.2.2 → 0.2.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.
- data/Gemfile +4 -3
- data/README.markdown +11 -11
- data/VERSION +1 -1
- data/lib/albacore.rb +2 -1
- data/lib/albacore/config/fluentmigratorrunnerconfig.rb +15 -0
- data/lib/albacore/config/nchurnconfig.rb +15 -0
- data/lib/albacore/config/nugetpackconfig.rb +19 -0
- data/lib/albacore/csc.rb +6 -1
- data/lib/albacore/fluentmigratorrunner.rb +46 -0
- data/lib/albacore/nchurn.rb +74 -0
- data/lib/albacore/nugetpack.rb +41 -0
- data/lib/albacore/nuspec.rb +108 -0
- data/lib/albacore/output.rb +98 -0
- data/lib/albacore/sqlcmd.rb +6 -10
- data/rakefile.rb +34 -7
- data/spec/csc_spec.rb +34 -0
- data/spec/fluentmigratorrunner_spec.rb +185 -0
- data/spec/nchurn_spec.rb +75 -0
- data/spec/nuspec_spec.rb +44 -0
- data/spec/output_spec.rb +117 -0
- data/spec/spec_helper.rb +0 -6
- data/spec/sqlcmd_spec.rb +28 -8
- data/spec/support/ironruby_validator.rb +26 -0
- data/spec/support/nokogiri_validator.rb +15 -0
- data/spec/support/outputtestdata.rb +13 -0
- metadata +64 -85
- data/Gemfile.lock +0 -43
data/lib/albacore/sqlcmd.rb
CHANGED
@@ -47,22 +47,18 @@ class SQLCmd
|
|
47
47
|
end
|
48
48
|
integratedParam
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
def check_command
|
52
52
|
sql2008cmdPath = File.join(ENV['SystemDrive'],'program files','microsoft sql server','100','tools','binn', 'sqlcmd.exe')
|
53
|
-
@command = sql2008cmdPath if File.exists?(sql2008cmdPath)
|
54
|
-
return true
|
55
|
-
|
56
53
|
sql2005cmdPath = File.join(ENV['SystemDrive'],'program files','microsoft sql server','90','tools','binn', 'sqlcmd.exe')
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
return true if
|
61
|
-
|
54
|
+
sql2008cmdPathx86 = File.join(ENV['SystemDrive'],'program files (x86)','microsoft sql server','100','tools','binn', 'sqlcmd.exe')
|
55
|
+
sql2005cmdPathx86 = File.join(ENV['SystemDrive'],'program files (x86)','microsoft sql server','90','tools','binn', 'sqlcmd.exe')
|
56
|
+
@command = [sql2008cmdPath, sql2005cmdPath, sql2008cmdPathx86, sql2005cmdPathx86].select { |p| File.exist?(p) }.first
|
57
|
+
return true if @command != nil
|
62
58
|
fail_with_message 'SQLCmd.command cannot be nil.'
|
63
59
|
return false
|
64
60
|
end
|
65
|
-
|
61
|
+
|
66
62
|
def build_script_list
|
67
63
|
@scripts.map{|s| "-i \"#{s.strip}\""}.join(" ")
|
68
64
|
end
|
data/rakefile.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
$: << './'
|
2
2
|
require 'lib/albacore'
|
3
|
+
require 'version_bumper'
|
3
4
|
|
4
5
|
task :default => ['albacore:sample']
|
5
6
|
|
6
7
|
namespace :specs do
|
7
8
|
require 'spec/rake/spectask'
|
8
|
-
runtime_is_ironruby = (!defined?(IRONRUBY_VERSION).nil?)
|
9
9
|
|
10
10
|
@spec_opts = '--colour --format specdoc'
|
11
11
|
|
12
12
|
desc "Run all specs for albacore"
|
13
13
|
Spec::Rake::SpecTask.new :all do |t|
|
14
14
|
t.spec_files = FileList['spec/**/*_spec.rb'].exclude{ |f|
|
15
|
-
f if
|
15
|
+
f if IS_IRONRUBY && (f.include?("zip"))
|
16
16
|
}
|
17
17
|
t.spec_opts << @spec_opts
|
18
18
|
end
|
@@ -40,7 +40,6 @@ namespace :specs do
|
|
40
40
|
t.spec_files = FileList['spec/sqlcmd*_spec.rb']
|
41
41
|
t.spec_opts << @spec_opts
|
42
42
|
end
|
43
|
-
|
44
43
|
|
45
44
|
desc "Nant functional specs"
|
46
45
|
Spec::Rake::SpecTask.new :nant do |t|
|
@@ -107,6 +106,24 @@ namespace :specs do
|
|
107
106
|
t.spec_files = FileList['spec/yaml*_spec.rb']
|
108
107
|
t.spec_opts << @spec_opts
|
109
108
|
end
|
109
|
+
|
110
|
+
desc "FluenMigrator functional specs"
|
111
|
+
Spec::Rake::SpecTask.new :fluentmigrator do |t|
|
112
|
+
t.spec_files = FileList['spec/fluentmigrator*_spec.rb']
|
113
|
+
t.spec_opts << @spec_opts
|
114
|
+
end
|
115
|
+
|
116
|
+
desc "Output functional specs"
|
117
|
+
Spec::Rake::SpecTask.new :output do |t|
|
118
|
+
t.spec_files = FileList['spec/output*_spec.rb']
|
119
|
+
t.spec_opts << @spec_opts
|
120
|
+
end
|
121
|
+
|
122
|
+
desc "NChurn functional specs"
|
123
|
+
Spec::Rake::SpecTask.new :nchurn do |t|
|
124
|
+
t.spec_files = FileList['spec/nchurn*_spec.rb']
|
125
|
+
t.spec_opts << @spec_opts
|
126
|
+
end
|
110
127
|
end
|
111
128
|
|
112
129
|
namespace :albacore do
|
@@ -122,7 +139,8 @@ namespace :albacore do
|
|
122
139
|
'albacore:ncoverreport',
|
123
140
|
'albacore:mspec',
|
124
141
|
'albacore:nunit',
|
125
|
-
'albacore:xunit'
|
142
|
+
'albacore:xunit',
|
143
|
+
'albacore:fluentmigrator']
|
126
144
|
|
127
145
|
desc "Run a sample MSBuild with YAML autoconfig"
|
128
146
|
msbuild :msbuild
|
@@ -218,6 +236,18 @@ namespace :albacore do
|
|
218
236
|
xbuild.targets :clean, :build
|
219
237
|
xbuild.solution = "spec/support/TestSolution/TestSolution.sln"
|
220
238
|
end
|
239
|
+
|
240
|
+
desc "FluentMigrator Test Runner Example"
|
241
|
+
fluentmigrator do |migrator|
|
242
|
+
db_file = "#{ENV['TEMP']}/fluentmigrator.sqlite3"
|
243
|
+
File.delete(db_file) if File.exist?(db_file)
|
244
|
+
|
245
|
+
migrator.command = "spec/support/Tools/FluentMigrator-0.9/Migrate.exe"
|
246
|
+
migrator.target = "spec/support/FluentMigrator/TestSolution.FluentMigrator.dll"
|
247
|
+
migrator.provider = "sqlite"
|
248
|
+
migrator.connection = "Data Source=#{db_file};"
|
249
|
+
end
|
250
|
+
|
221
251
|
end
|
222
252
|
|
223
253
|
namespace :jeweler do
|
@@ -236,8 +266,5 @@ namespace :jeweler do
|
|
236
266
|
"spec/",
|
237
267
|
"pkg/"
|
238
268
|
)
|
239
|
-
|
240
|
-
gs.add_dependency('rake', '>= 0.8.7')
|
241
|
-
gs.add_dependency('rubyzip', '>= 0.9.4')
|
242
269
|
end
|
243
270
|
end
|
data/spec/csc_spec.rb
CHANGED
@@ -24,10 +24,13 @@ describe CSC, "when supplying a file list with 2 files to compile" do
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
# TODO: If designed by contract this is an unncessary responsibility of the class.
|
28
|
+
# It should be removed and only validate that the parameter is being specified as CSC expects it.
|
27
29
|
describe CSC, "when targeting a library and an output file" do
|
28
30
|
before :each do
|
29
31
|
@folder = File.join(File.expand_path(File.dirname(__FILE__)), "support", "csc")
|
30
32
|
csc = CSC.new
|
33
|
+
|
31
34
|
csc.compile FileList[File.join(@folder, "File1.cs")]
|
32
35
|
csc.target = :library
|
33
36
|
csc.output = File.join(@folder, "output", "File1.dll")
|
@@ -217,3 +220,34 @@ describe CSC, "when defining processor symbols" do
|
|
217
220
|
csc.system_command.should include("/define:symbol1;symbol2")
|
218
221
|
end
|
219
222
|
end
|
223
|
+
|
224
|
+
describe CSC, "when specifying main entry point be generated" do
|
225
|
+
let :csc do
|
226
|
+
csc = CSC.new
|
227
|
+
csc.main = "Program.Main"
|
228
|
+
|
229
|
+
csc.extend(SystemPatch)
|
230
|
+
csc.disable_system = true
|
231
|
+
csc.execute
|
232
|
+
csc
|
233
|
+
end
|
234
|
+
|
235
|
+
it "should provide the main parameter" do
|
236
|
+
csc.system_command.should include("/main:Program.Main")
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
describe CSC, "when specifying main entry point not be generated" do
|
241
|
+
let :csc do
|
242
|
+
csc = CSC.new
|
243
|
+
|
244
|
+
csc.extend(SystemPatch)
|
245
|
+
csc.disable_system = true
|
246
|
+
csc.execute
|
247
|
+
csc
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should not provide the main parameter" do
|
251
|
+
csc.system_command.should_not include("/main")
|
252
|
+
end
|
253
|
+
end
|
@@ -0,0 +1,185 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'albacore/fluentmigratorrunner'
|
3
|
+
|
4
|
+
shared_examples_for "fluentmigrator paths" do
|
5
|
+
before :all do
|
6
|
+
@fluent_migrator_path = File.join(File.dirname(__FILE__), 'support', 'Tools', 'FluentMigrator-0.9', 'Migrate.exe')
|
7
|
+
@test_assembly = File.join(File.expand_path(File.dirname(__FILE__)), 'support', 'CodeCoverage', 'fluentmigrator', 'assemblies', 'TestSolution.FluentMigrator.dll')
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe FluentMigratorRunner, "the command parameters for an migrator runner" do
|
12
|
+
it_should_behave_like "fluentmigrator paths"
|
13
|
+
|
14
|
+
before :all do
|
15
|
+
@migrator = FluentMigratorRunner.new(@fluent_migrator_path)
|
16
|
+
end
|
17
|
+
|
18
|
+
context "Required params" do
|
19
|
+
before :all do
|
20
|
+
@command_parameters = @migrator.get_command_parameters
|
21
|
+
end
|
22
|
+
|
23
|
+
it "doesn't include command" do
|
24
|
+
@command_parameters.should_not include(@fluent_migrator_path)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "includes target" do
|
28
|
+
@command_parameters.should include("/target")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "includes provider" do
|
32
|
+
@command_parameters.should include("/provider")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "includes connection" do
|
36
|
+
@command_parameters.should include("/connection")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "Optional options" do
|
41
|
+
before :all do
|
42
|
+
@migrator.namespace = 'namespace'
|
43
|
+
@migrator.output = 'output.txt'
|
44
|
+
@migrator.preview = 1
|
45
|
+
@migrator.steps = 1
|
46
|
+
@migrator.task = 'migrate:up'
|
47
|
+
@migrator.version = '001'
|
48
|
+
@migrator.verbose = 1
|
49
|
+
@migrator.script_directory = 'c:\scripts'
|
50
|
+
@migrator.profile = 'MyProfile'
|
51
|
+
@migrator.timeout = 90
|
52
|
+
@command_parameters = @migrator.get_command_parameters
|
53
|
+
end
|
54
|
+
|
55
|
+
it "includes ns" do
|
56
|
+
@command_parameters.should include('/ns')
|
57
|
+
end
|
58
|
+
|
59
|
+
it "includes ouy" do
|
60
|
+
@command_parameters.should include('/out')
|
61
|
+
end
|
62
|
+
|
63
|
+
it "includes preview" do
|
64
|
+
@command_parameters.should include('/preview')
|
65
|
+
end
|
66
|
+
|
67
|
+
it "includes steps" do
|
68
|
+
@command_parameters.should include('/steps')
|
69
|
+
end
|
70
|
+
|
71
|
+
it "includes task" do
|
72
|
+
@command_parameters.should include('/task')
|
73
|
+
end
|
74
|
+
|
75
|
+
it "includes version" do
|
76
|
+
@command_parameters.should include('/version')
|
77
|
+
end
|
78
|
+
|
79
|
+
it "includes verbose" do
|
80
|
+
@command_parameters.should include('/verbose')
|
81
|
+
end
|
82
|
+
|
83
|
+
it "includes wd" do
|
84
|
+
@command_parameters.should include('/wd')
|
85
|
+
end
|
86
|
+
|
87
|
+
it "includes profile" do
|
88
|
+
@command_parameters.should include('/profile')
|
89
|
+
end
|
90
|
+
|
91
|
+
it "includes timeout" do
|
92
|
+
@command_parameters.should include('/timeout')
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe FluentMigratorRunner, "the command line string for an fluentmigrator runner" do
|
98
|
+
it_should_behave_like "fluentmigrator paths"
|
99
|
+
|
100
|
+
before :all do
|
101
|
+
migrator = FluentMigratorRunner.new(@fluent_migrator_path)
|
102
|
+
migrator.target = @test_assembly
|
103
|
+
|
104
|
+
@command_line = migrator.get_command_line
|
105
|
+
@command_parameters = migrator.get_command_parameters
|
106
|
+
end
|
107
|
+
|
108
|
+
it "starts with the path to the command" do
|
109
|
+
@command_line.should =~ /^#{@fluent_migrator_path}.*$/
|
110
|
+
end
|
111
|
+
|
112
|
+
it "includes the command parameters" do
|
113
|
+
@command_line.downcase.should include(@command_parameters.downcase)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe FluentMigratorRunner, "when using the configuration command and not providing a command in the intializer" do
|
118
|
+
it_should_behave_like "fluentmigrator paths"
|
119
|
+
|
120
|
+
before :all do
|
121
|
+
Albacore.configure do |config|
|
122
|
+
config.fluentmigrator.command = "configured command"
|
123
|
+
end
|
124
|
+
@migrator = FluentMigratorRunner.new
|
125
|
+
end
|
126
|
+
|
127
|
+
it "uses the configuration command" do
|
128
|
+
@migrator.command.should == "configured command"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe FluentMigratorRunner, "when the command has been set through configuration and providing a command in the intializer" do
|
133
|
+
it_should_behave_like "fluentmigrator paths"
|
134
|
+
|
135
|
+
before :all do
|
136
|
+
Albacore.configure do |config|
|
137
|
+
config.fluentmigrator.command = "configured command"
|
138
|
+
end
|
139
|
+
@migrator = FluentMigratorRunner.new("initializer command")
|
140
|
+
end
|
141
|
+
|
142
|
+
it "uses the initializer command" do
|
143
|
+
@migrator.command.should == "initializer command"
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
describe FluentMigratorRunner, "when configuration has been provided" do
|
148
|
+
before :all do
|
149
|
+
Albacore.configure do |config|
|
150
|
+
config.fluentmigrator do |migrator|
|
151
|
+
migrator.target = 'target.dll'
|
152
|
+
migrator.provider = 'provider'
|
153
|
+
migrator.connection = 'connection'
|
154
|
+
migrator.namespace = 'namespace'
|
155
|
+
migrator.output = 'output.txt'
|
156
|
+
migrator.preview = true
|
157
|
+
migrator.steps = 1
|
158
|
+
migrator.task = 'migrate:up'
|
159
|
+
migrator.version = '001'
|
160
|
+
migrator.verbose = true
|
161
|
+
migrator.script_directory = 'c:\scripts'
|
162
|
+
migrator.profile = 'MyProfile'
|
163
|
+
migrator.timeout = 90
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
@migrator = FluentMigratorRunner.new
|
168
|
+
end
|
169
|
+
|
170
|
+
it "uses the provided configuration" do
|
171
|
+
@migrator.target.should == 'target.dll'
|
172
|
+
@migrator.provider.should == 'provider'
|
173
|
+
@migrator.connection.should == 'connection'
|
174
|
+
@migrator.namespace.should == 'namespace'
|
175
|
+
@migrator.output.should == 'output.txt'
|
176
|
+
@migrator.preview.should == true
|
177
|
+
@migrator.steps.should == 1
|
178
|
+
@migrator.task.should == 'migrate:up'
|
179
|
+
@migrator.version.should == '001'
|
180
|
+
@migrator.verbose.should == true
|
181
|
+
@migrator.script_directory.should == 'c:\scripts'
|
182
|
+
@migrator.profile.should == 'MyProfile'
|
183
|
+
@migrator.timeout.should == 90
|
184
|
+
end
|
185
|
+
end
|
data/spec/nchurn_spec.rb
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'albacore/nchurn'
|
3
|
+
require 'patches/system_patch'
|
4
|
+
|
5
|
+
class NChurn
|
6
|
+
attr_accessor :failure_message
|
7
|
+
|
8
|
+
def fail_with_message(m)
|
9
|
+
@failure_message = m
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class NChurnTestData
|
14
|
+
attr_reader :nchurn_command
|
15
|
+
attr_reader :output_text
|
16
|
+
def initialize
|
17
|
+
@nchurn_command = File.join(File.dirname(__FILE__), 'support', 'Tools', 'NChurn-v0.4', 'nchurn.exe')
|
18
|
+
@output_text = 'nchurn-test.txt'
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
def remove!
|
23
|
+
FileUtils.rm @output_text if File.exist? @output_text
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe NChurn, "when running nchurn" do
|
28
|
+
before :all do
|
29
|
+
@nchurn = NChurn.new
|
30
|
+
@nchurn.extend SystemPatch
|
31
|
+
@test_data = NChurnTestData.new
|
32
|
+
@test_data.remove!
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
before :each do
|
37
|
+
@nchurn.failure_message = nil
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should fail with no command" do
|
41
|
+
@nchurn.execute
|
42
|
+
@nchurn.failure_message.should eql('Churn Analysis Failed. See Build Log For Detail.')
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should succeed and redirect to file" do
|
46
|
+
@nchurn.command = NChurnTestData.new.nchurn_command
|
47
|
+
@nchurn.output @test_data.output_text
|
48
|
+
|
49
|
+
@nchurn.execute
|
50
|
+
@nchurn.failure_message.should be_nil
|
51
|
+
File.exist?(@test_data.output_text).should be_true
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should pass all parameters correctly" do
|
55
|
+
@nchurn.command = "nchurn.exe"
|
56
|
+
@nchurn.disable_system = true
|
57
|
+
@nchurn.output @test_data.output_text
|
58
|
+
@nchurn.input "file.txt"
|
59
|
+
|
60
|
+
@nchurn.churn_precent 30
|
61
|
+
@nchurn.top 10
|
62
|
+
@nchurn.report_as :xml
|
63
|
+
@nchurn.env_path 'c:/tools'
|
64
|
+
@nchurn.adapter :git
|
65
|
+
@nchurn.exclude "exe"
|
66
|
+
@nchurn.include "foo"
|
67
|
+
|
68
|
+
@nchurn.execute
|
69
|
+
@nchurn.failure_message.should be_nil
|
70
|
+
cmd = %{"nchurn.exe" -i "file.txt" -c 0.3 -t 10 -r xml -p "c:/tools" -a git -x "exe" -n "foo" > "nchurn-test.txt"}
|
71
|
+
@nchurn.system_command.should eql(cmd)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
data/spec/nuspec_spec.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'spec_helper.rb'
|
3
|
+
require 'albacore/nuspec.rb'
|
4
|
+
|
5
|
+
if IS_IRONRUBY
|
6
|
+
require 'support\ironruby_validator'
|
7
|
+
else
|
8
|
+
require 'support\nokogiri_validator'
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Nuspec, 'when creating a file with minimum requirements' do
|
12
|
+
let(:working_dir) do
|
13
|
+
wd = File.expand_path(File.join(File.dirname(__FILE__), 'support/nuspec/output'))
|
14
|
+
FileUtils.mkdir(wd) unless File.exist?(wd)
|
15
|
+
wd
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:nuspec_output) { File.join(working_dir, 'nuspec_test.nuspec') }
|
19
|
+
let(:schema_file) { File.expand_path(File.join(working_dir, '../', 'nuspec.xsd')) }
|
20
|
+
|
21
|
+
let(:nuspec) do
|
22
|
+
nuspec = Nuspec.new
|
23
|
+
nuspec.id="nuspec_test"
|
24
|
+
nuspec.output_file = "nuspec_test.nuspec"
|
25
|
+
nuspec.version = "1.2.3"
|
26
|
+
nuspec.authors = "Author Name"
|
27
|
+
nuspec.description = "test_xml_document"
|
28
|
+
nuspec.working_directory = working_dir
|
29
|
+
nuspec
|
30
|
+
end
|
31
|
+
|
32
|
+
before do
|
33
|
+
nuspec.execute
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should produce the nuspec xml" do
|
37
|
+
File.exist?(nuspec_output).should be_true
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should produce a valid xml file" do
|
41
|
+
is_valid = XmlValidator.validate(nuspec_output, schema_file)
|
42
|
+
is_valid.should be_true
|
43
|
+
end
|
44
|
+
end
|