albacore 0.1.5 → 0.2.0.preview1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. data/.autotest +4 -0
  2. data/README.markdown +1 -1
  3. data/VERSION +1 -1
  4. data/install_dependencies.rb +2 -3
  5. data/lib/albacore.rb +1 -0
  6. data/lib/albacore/albacoremodel.rb +28 -0
  7. data/lib/albacore/assemblyinfo.rb +5 -4
  8. data/lib/albacore/config/assemblyinfoconfig.rb +21 -0
  9. data/lib/albacore/config/config.rb +14 -0
  10. data/lib/albacore/config/cscconfig.rb +33 -0
  11. data/lib/albacore/config/docuconfig.rb +25 -0
  12. data/lib/albacore/config/execconfig.rb +22 -0
  13. data/lib/albacore/config/msbuildconfig.rb +32 -0
  14. data/lib/albacore/config/mspecconfig.rb +21 -0
  15. data/lib/albacore/config/nantconfig.rb +22 -0
  16. data/lib/albacore/config/ncoverconsoleconfig.rb +22 -0
  17. data/lib/albacore/config/ncoverreportconfig.rb +22 -0
  18. data/lib/albacore/config/ndependconfig.rb +22 -0
  19. data/lib/albacore/config/netversion.rb +23 -0
  20. data/lib/albacore/config/nunitconfig.rb +20 -0
  21. data/lib/albacore/config/specflowreportconfig.rb +27 -0
  22. data/lib/albacore/config/sqlcmdconfig.rb +22 -0
  23. data/lib/albacore/config/unzipconfig.rb +22 -0
  24. data/lib/albacore/config/xbuildconfig.rb +22 -0
  25. data/lib/albacore/config/xunitconfig.rb +22 -0
  26. data/lib/albacore/config/zipconfig.rb +22 -0
  27. data/lib/albacore/csc.rb +31 -0
  28. data/lib/albacore/docu.rb +8 -6
  29. data/lib/albacore/exec.rb +9 -3
  30. data/lib/albacore/msbuild.rb +5 -12
  31. data/lib/albacore/mspectestrunner.rb +9 -7
  32. data/lib/albacore/nant.rb +5 -4
  33. data/lib/albacore/ncoverconsole.rb +6 -9
  34. data/lib/albacore/ncoverreport.rb +8 -6
  35. data/lib/albacore/ncoverreports/codecoveragebase.rb +4 -4
  36. data/lib/albacore/ncoverreports/cyclomaticcomplexity.rb +4 -4
  37. data/lib/albacore/ncoverreports/fullcoveragereport.rb +3 -3
  38. data/lib/albacore/ncoverreports/reportfilterbase.rb +4 -4
  39. data/lib/albacore/ncoverreports/summaryreport.rb +3 -3
  40. data/lib/albacore/ndepend.rb +12 -9
  41. data/lib/albacore/nunittestrunner.rb +9 -7
  42. data/lib/albacore/specflowreport.rb +62 -0
  43. data/lib/albacore/sqlcmd.rb +8 -6
  44. data/lib/albacore/support/attrmethods.rb +7 -8
  45. data/lib/albacore/support/logging.rb +8 -4
  46. data/lib/albacore/support/openstruct.rb +13 -0
  47. data/lib/albacore/support/runcommand.rb +24 -24
  48. data/lib/albacore/support/supportlinux.rb +23 -0
  49. data/lib/albacore/support/yamlconfig.rb +2 -10
  50. data/lib/albacore/unzip.rb +14 -12
  51. data/lib/albacore/xbuild.rb +6 -5
  52. data/lib/albacore/xunittestrunner.rb +8 -6
  53. data/lib/albacore/zipdirectory.rb +27 -6
  54. data/lib/rake/csctask.rb +3 -0
  55. data/lib/rake/specflowreporttask.rb +3 -0
  56. data/lib/rake/unziptask.rb +1 -1
  57. data/rakefile.rb +21 -54
  58. data/spec/albacoremodel_spec.rb +35 -0
  59. data/spec/assemblyinfo_spec.rb +17 -0
  60. data/spec/attrmethods_spec.rb +17 -1
  61. data/spec/config_spec.rb +19 -0
  62. data/spec/createtask_spec.rb +45 -4
  63. data/spec/csc_spec.rb +87 -0
  64. data/spec/csctask_spec.rb +1 -0
  65. data/spec/docu_spec.rb +43 -1
  66. data/spec/exec_spec.rb +16 -1
  67. data/spec/msbuild_spec.rb +30 -18
  68. data/spec/mspec_spec.rb +28 -0
  69. data/spec/nant_spec.rb +20 -12
  70. data/spec/ncoverconsole_spec.rb +25 -13
  71. data/spec/ncoverreport_spec.rb +31 -18
  72. data/spec/ndepend_spec.rb +23 -2
  73. data/spec/nunittestrunner_spec.rb +48 -0
  74. data/spec/runcommand_spec.rb +59 -32
  75. data/spec/specflowreport_spec.rb +146 -0
  76. data/spec/specflowreporttask_spec.rb +48 -0
  77. data/spec/sqlcmd_spec.rb +18 -5
  78. data/spec/support/SpecFlow/TechTalk.SpecFlow.dll +0 -0
  79. data/spec/support/SpecFlow/TestSolution.SpecFlow.dll +0 -0
  80. data/spec/support/SpecFlow/TestSolution.SpecFlow.pdb +0 -0
  81. data/spec/support/SpecFlow/TestSolution.dll +0 -0
  82. data/spec/support/SpecFlow/TestSolution.pdb +0 -0
  83. data/spec/support/SpecFlow/nunit.framework.dll +0 -0
  84. data/spec/support/TestSolution/TestSolution.5.0.ReSharper.user +27 -0
  85. data/spec/support/TestSolution/TestSolution.SpecFlow/OneFeature.feature +8 -0
  86. data/spec/support/TestSolution/TestSolution.SpecFlow/OneFeature.feature.cs +73 -0
  87. data/spec/support/TestSolution/TestSolution.SpecFlow/Properties/AssemblyInfo.cs +36 -0
  88. data/spec/support/TestSolution/TestSolution.SpecFlow/StepDefinition.cs +30 -0
  89. data/spec/support/TestSolution/TestSolution.SpecFlow/TestSolution.SpecFlow.csproj +84 -0
  90. data/spec/support/TestSolution/TestSolution.sln +6 -0
  91. data/spec/support/csc/File1.cs +9 -0
  92. data/spec/support/csc/File2.cs +9 -0
  93. data/spec/support/csc/output/ignorethis.txt +1 -0
  94. data/spec/support/msbuildtestdata.rb +3 -3
  95. data/spec/support/ncoverreporttestdata.rb +2 -2
  96. data/spec/support/spec_helper.rb +2 -1
  97. data/spec/support/yamlconfig/yaml_autoconfig_test.yml +1 -1
  98. data/spec/unzip_spec.rb +15 -0
  99. data/spec/xbuild_spec.rb +15 -0
  100. data/spec/xunit_spec.rb +16 -2
  101. data/spec/yamlconfig_spec.rb +7 -6
  102. data/spec/zip_spec.rb +50 -9
  103. data/watchrtesting.rb +8 -0
  104. metadata +99 -91
  105. data/lib/albacore/expandtemplates.rb +0 -81
  106. data/lib/albacore/plink.rb +0 -49
  107. data/lib/albacore/renamer.rb +0 -17
  108. data/lib/albacore/sftp.rb +0 -42
  109. data/lib/albacore/ssh.rb +0 -44
  110. data/lib/albacore/support/albacore_helper.rb +0 -1
  111. data/lib/albacore/support/globalconfig.rb +0 -6
  112. data/lib/rake/expandtemplatestask.rb +0 -3
  113. data/lib/rake/plinktask.rb +0 -3
  114. data/lib/rake/renametask.rb +0 -3
  115. data/lib/rake/sftptask.rb +0 -3
  116. data/lib/rake/sshtask.rb +0 -3
  117. data/spec/expandtemplates_spec.rb +0 -180
  118. data/spec/expandtemplatestask_spec.rb +0 -46
  119. data/spec/plink_spec.rb +0 -62
  120. data/spec/plinktask_spec.rb +0 -46
  121. data/spec/renametask_spec.rb +0 -32
  122. data/spec/sftp_spec.rb +0 -30
  123. data/spec/sftptask_spec.rb +0 -42
  124. data/spec/ssh_spec.rb +0 -47
  125. data/spec/sshtask_spec.rb +0 -40
  126. data/spec/support/expandtemplates/datafiles/multiplevalues.yml +0 -3
  127. data/spec/support/expandtemplates/datafiles/multitemplate-specificfile.yml +0 -11
  128. data/spec/support/expandtemplates/datafiles/multitemplate.yml +0 -4
  129. data/spec/support/expandtemplates/datafiles/sample.yml +0 -1
  130. data/spec/support/expandtemplates/datafiles/sample_with_include.yml +0 -2
  131. data/spec/support/expandtemplates/datafiles/template_specific_data_file_with_include.yml +0 -5
  132. data/spec/support/expandtemplates/datafiles/template_specific_include.yml +0 -3
  133. data/spec/support/expandtemplates/templates/multipleinstance.config +0 -4
  134. data/spec/support/expandtemplates/templates/multiplevalues.config +0 -1
  135. data/spec/support/expandtemplates/templates/sample.config +0 -1
  136. data/spec/support/expandtemplatestestdata.rb +0 -77
@@ -1,81 +0,0 @@
1
- require 'albacore/support/albacore_helper'
2
- require 'yaml'
3
-
4
- class ExpandTemplates
5
- extend AttrMethods
6
- include YAMLConfig
7
- include Logging
8
-
9
- attr_accessor :data_file
10
- attr_hash :expand_files
11
-
12
- def initialize
13
- @expand_files = {}
14
- super()
15
- end
16
-
17
- def expand
18
- return if @data_file.nil?
19
- return if @expand_files.empty?
20
-
21
- config = read_config(@data_file)
22
- @expand_files.each { |template_file, output_file|
23
- file_config = get_config_for_file config, template_file
24
- expand_template template_file, output_file, file_config
25
- }
26
- end
27
-
28
- private
29
-
30
- def expand_template(template_file, output_file, config)
31
- @logger.info "Parsing #{template_file} into #{output_file}"
32
-
33
- template_data = ''
34
- File.open(template_file, "r") {|f|
35
- template_data = f.read
36
- }
37
- template_data
38
-
39
- template_data.gsub!(/\#\{(.*?)\}/) {|match|
40
- value = config[$1]
41
- @logger.debug "Found \"\#{#{$1}}\": Replacing with \"#{value}\"."
42
- value
43
- }
44
-
45
- File.open(output_file, "w") {|output|
46
- output.write(template_data)
47
- }
48
- end
49
-
50
- def read_config(file)
51
- config = YAML::load(File.open(file, "r"))
52
- if (config.include?("@include"))
53
- include_file = File.join(File.dirname(file), config["@include"])
54
- @logger.debug("Found @include directive. Loading additional data from #{include_file}")
55
- config.reject!{|k,v| k == "@include"}
56
- include_config = read_config(include_file)
57
- config = deep_merge(include_config, config)
58
- end
59
- return config
60
- end
61
-
62
- def deep_merge(first, second)
63
- # From: http://www.ruby-forum.com/topic/142809
64
- # Author: Stefan Rusterholz
65
- merger = proc { |key,v1,v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
66
- first.merge(second, &merger)
67
- end
68
-
69
- def get_config_for_file(original_config, file)
70
- filename = File.basename(file)
71
- file_config = original_config[filename]
72
- if file_config.nil?
73
- @logger.debug "No config data found for #{filename}. Using local data."
74
- new_config = original_config
75
- else
76
- @logger.debug "Found config data for #{filename}."
77
- new_config = original_config.merge(file_config)
78
- end
79
- new_config
80
- end
81
- end
@@ -1,49 +0,0 @@
1
- require 'albacore/support/albacore_helper'
2
-
3
- class PLink
4
- extend AttrMethods
5
- include RunCommand
6
- include YAMLConfig
7
- include Logging
8
-
9
- attr_accessor :host, :port, :user, :key, :verbose
10
- attr_array :commands
11
-
12
- def initialize()
13
- @require_valid_command = false
14
- @port = 22
15
- @verbose = false
16
- @commands = []
17
- super()
18
- end
19
-
20
- def run()
21
- return unless check_command
22
-
23
- parameters = create_parameters
24
- result = run_command "Plink", parameters.join(" ")
25
- failure_message = 'Command Failed. See Build Log For Detail'
26
- fail_with_message failure_message if !result
27
- end
28
-
29
- def create_parameters
30
- parameters = []
31
- parameters << "#{@user}@#{@host} -P #{@port} "
32
- parameters << build_parameter("i", @key) unless @key.nil?
33
- parameters << "-batch"
34
- parameters << "-v" if @verbose
35
- parameters << @commands
36
- @logger.debug "PLink Parameters" + parameters.join(" ")
37
- return parameters
38
- end
39
-
40
- def build_parameter(param_name, param_value)
41
- "-#{param_name} #{param_value}"
42
- end
43
-
44
- def check_command
45
- return true if @path_to_command
46
- fail_with_message 'Plink.path_to_command cannot be nil.'
47
- return false
48
- end
49
- end
@@ -1,17 +0,0 @@
1
- require 'albacore/support/albacore_helper'
2
-
3
- class Renamer
4
- include YAMLConfig
5
- include Failure
6
-
7
- attr_accessor :actual_name, :target_name
8
-
9
- def rename
10
- if (@actual_name.nil? || @target_name.nil?)
11
- fail "actual_name and target_name cannot be nil"
12
- else
13
- File.rename(@actual_name, @target_name)
14
- end
15
- end
16
-
17
- end
data/lib/albacore/sftp.rb DELETED
@@ -1,42 +0,0 @@
1
- require 'albacore/support/albacore_helper'
2
- require 'net/sftp'
3
-
4
- class Sftp
5
- extend AttrMethods
6
- include YAMLConfig
7
- include Logging
8
-
9
- attr_accessor :server, :username, :password, :port, :key, :debug
10
- attr_hash :upload_files
11
-
12
- def initialize
13
- @upload_files = {}
14
- super()
15
- end
16
-
17
- def get_connection_options
18
- options = {}
19
- options[:verbose] = :debug if @debug == true
20
- options[:password] = @password if @password
21
- options[:port] = @port if @port
22
- options[:keys] = [@key] if @key
23
- options
24
- end
25
-
26
- def upload()
27
- warn_about_key if @key
28
-
29
- Net::SFTP.start(@server, @username, get_connection_options) do |sftp|
30
- @logger.debug "Starting File Upload"
31
- @upload_files.each {|local_file, remote_file|
32
- @logger.debug "Uploading #{local_file} to #{remote_file}"
33
- sftp.upload!(local_file, remote_file)
34
- }
35
- end
36
- end
37
-
38
- def warn_about_key()
39
- info.debug 'When using a key, you need an SSH-Agent running to manage the keys.'
40
- info.debug 'On Windows, a recommended agent is called Pageant, downloadable from the Putty site.'
41
- end
42
- end
data/lib/albacore/ssh.rb DELETED
@@ -1,44 +0,0 @@
1
- require 'albacore/support/albacore_helper'
2
- require 'net/ssh'
3
-
4
- class Ssh
5
- extend AttrMethods
6
- include YAMLConfig
7
- include Logging
8
-
9
- attr_accessor :server, :username, :password, :port, :key, :debug
10
- attr_array :commands
11
-
12
- def initialize
13
- @commands = []
14
- super()
15
- end
16
-
17
- def get_connection_options
18
- options = {}
19
- options[:verbose] = :debug if @debug == true
20
- options[:password] = @password if @password
21
- options[:port] = @port if @port
22
- options[:keys] = [@key] if @key
23
- options
24
- end
25
-
26
- def execute()
27
- warn_about_key if @key
28
-
29
- Net::SSH.start(@server, @username, get_connection_options) do |ssh|
30
- @commands.each{|cmd|
31
- @logger.info "Executing remote command: #{cmd}"
32
- output = ssh.exec!(cmd)
33
- @logger.info 'SSH output: '
34
- @logger.info output
35
- }
36
- end
37
- end
38
-
39
- def warn_about_key()
40
- info.debug 'When using a key, you need an SSH-Agent running to manage the keys.'
41
- info.debug 'On Windows, a recommended agent is called Pageant, downloadable from the Putty site.'
42
- end
43
-
44
- end
@@ -1 +0,0 @@
1
- Dir.glob(File.join(File.dirname(__FILE__), '*.rb')).reject{|f| f == __FILE__}.each {|f| require f }
@@ -1,6 +0,0 @@
1
- module Albacore
2
- class << self
3
- attr_accessor :yaml_config_folder
4
- attr_accessor :log_level
5
- end
6
- end
@@ -1,3 +0,0 @@
1
- create_task :expandtemplates, Proc.new { ExpandTemplates.new } do |exp|
2
- exp.expand
3
- end
@@ -1,3 +0,0 @@
1
- create_task :plink, Proc.new { PLink.new() } do |cmd|
2
- cmd.run
3
- end
@@ -1,3 +0,0 @@
1
- create_task :rename, Proc.new { Renamer.new } do |ren|
2
- ren.rename
3
- end
data/lib/rake/sftptask.rb DELETED
@@ -1,3 +0,0 @@
1
- create_task :sftp, Proc.new { Sftp.new } do |cmd|
2
- cmd.upload
3
- end
data/lib/rake/sshtask.rb DELETED
@@ -1,3 +0,0 @@
1
- create_task :ssh, Proc.new { Ssh.new } do |cmd|
2
- cmd.execute
3
- end
@@ -1,180 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'support', 'spec_helper')
2
- require 'albacore/expandtemplates'
3
- require 'expandtemplatestestdata'
4
-
5
- shared_examples_for "prepping the sample templates" do
6
- before :all do
7
- @testdata = ExpandTemplatesTestData.new
8
- @testdata.prep_sample_templates
9
-
10
- @templates = ExpandTemplates.new
11
- @templates.log_level = :verbose
12
- end
13
- end
14
-
15
- describe ExpandTemplates, "when expanding a single value into multiple locations" do
16
- it_should_behave_like "prepping the sample templates"
17
-
18
- before :all do
19
- @templates.expand_files @testdata.multipleinstance_template_file => @testdata.multipleinstance_template_file
20
- @templates.data_file = @testdata.sample_data_file
21
- @templates.expand
22
-
23
- @output_file_data = @testdata.read_file(@testdata.multipleinstance_template_file)
24
- end
25
-
26
- it "should replace the first location" do
27
- @output_file_data.should include("first instance of 'the real value' is here.")
28
- end
29
-
30
- it "should replace the second location" do
31
- @output_file_data.should include("second instance of 'the real value' goes here.")
32
- end
33
- end
34
-
35
- describe ExpandTemplates, "when expanding multiples value into multiple locations" do
36
- it_should_behave_like "prepping the sample templates"
37
-
38
- before :all do
39
- @templates.expand_files @testdata.multiplevalues_template_file => @testdata.multiplevalues_output_file
40
- @templates.data_file = @testdata.multiplevalues_data_file
41
- @templates.expand
42
-
43
- @output_file_data = @testdata.read_file(@testdata.multiplevalues_output_file)
44
- end
45
-
46
- it "should replace the values" do
47
- @output_file_data.should include("this is a template file with multiple values")
48
- end
49
-
50
- it "should write to the specified output file" do
51
- File.exist?(@testdata.multiplevalues_output_file).should be_true
52
- end
53
- end
54
-
55
- describe ExpandTemplates, "when expanding a template file and specifying an output file" do
56
- it_should_behave_like "prepping the sample templates"
57
-
58
- before :all do
59
- @templates.expand_files @testdata.sample_template_file => @testdata.sample_output_file
60
- @templates.data_file = @testdata.sample_data_file
61
- @templates.expand
62
-
63
- @output_file_data = @testdata.read_file(@testdata.sample_output_file)
64
- end
65
-
66
- it "should replace the \#{value} placeholder with 'the real value'" do
67
- @output_file_data.should include("the real value")
68
- end
69
-
70
- it "should write to the specified output file" do
71
- File.exist?(@testdata.sample_output_file).should be_true
72
- end
73
- end
74
-
75
- describe ExpandTemplates, "when expanding multiple template files" do
76
- it_should_behave_like "prepping the sample templates"
77
-
78
- before :all do
79
- @templates.expand_files(
80
- @testdata.multipleinstance_template_file => @testdata.multipleinstance_template_file,
81
- @testdata.sample_template_file => @testdata.sample_output_file,
82
- @testdata.multiplevalues_template_file => @testdata.multiplevalues_output_file
83
- )
84
-
85
- @templates.data_file = @testdata.multitemplate_data_file
86
- @templates.expand
87
-
88
- @output_file_data = @testdata.read_file(@testdata.multipleinstance_template_file)
89
- end
90
-
91
- it "should expand the first template right onto itself" do
92
- @output_file_data.should include("first instance of 'the real value' is here.")
93
- end
94
-
95
- it "should expand the second template to the specified location" do
96
- File.exist?(@testdata.sample_output_file).should be_true
97
- end
98
- end
99
-
100
- describe ExpandTemplates, "when expanding template files and the data file contains entries for specific templates" do
101
- it_should_behave_like "prepping the sample templates"
102
-
103
- before :all do
104
- @templates.expand_files(
105
- @testdata.multipleinstance_template_file => @testdata.multipleinstance_template_file,
106
- @testdata.sample_template_file => @testdata.sample_output_file,
107
- @testdata.multiplevalues_template_file => @testdata.multiplevalues_output_file
108
- )
109
- @templates.data_file = @testdata.multitemplate_specificfile_data_file
110
- @templates.expand
111
-
112
- @multiinstance_file_data = @testdata.read_file(@testdata.multipleinstance_template_file)
113
- @sample_file_data = @testdata.read_file(@testdata.sample_output_file)
114
- end
115
-
116
- it "should expand the specific template with the data specified for it" do
117
- @multiinstance_file_data.should include("first instance of 'the real value' is here.")
118
- @multiinstance_file_data.should include("b has a value of this is a second value")
119
- end
120
-
121
- it "should use the global data when data for a specific template is not found in that templates specific data" do
122
- @multiinstance_file_data.should include("the value of a is a template file")
123
- end
124
-
125
- it "should not use the data from specified templates when the template name does not match" do
126
- @sample_file_data.should include("this is not the right one!!!")
127
- end
128
- end
129
-
130
- describe ExpandTemplates, "when including external data and specified placeholder is not found in local data" do
131
- it_should_behave_like "prepping the sample templates"
132
-
133
- before :all do
134
- @templates.expand_files @testdata.multipleinstance_template_file => @testdata.multipleinstance_template_file
135
- @templates.data_file = @testdata.sample_data_file_with_include
136
- @templates.expand
137
-
138
- @output_file_data = @testdata.read_file(@testdata.multipleinstance_template_file)
139
- end
140
-
141
- it "should use data from the included file" do
142
- @output_file_data.should include("first instance of 'the real value' is here.")
143
- end
144
- end
145
-
146
- describe ExpandTemplates, "when including external data and specified placeholder is found in local data" do
147
- it_should_behave_like "prepping the sample templates"
148
-
149
- before :all do
150
- @templates.expand_files @testdata.multipleinstance_template_file => @testdata.multipleinstance_template_file
151
- @templates.data_file = @testdata.sample_data_file_with_include
152
- @templates.expand
153
-
154
- @output_file_data = @testdata.read_file(@testdata.multipleinstance_template_file)
155
- end
156
-
157
- it "should use data from the local file" do
158
- @output_file_data.should include("the value of a is data")
159
- end
160
- end
161
-
162
- describe ExpandTemplates, "when when external data includes at least part of the data for a specific template" do
163
- it_should_behave_like "prepping the sample templates"
164
-
165
- before :all do
166
- @templates.expand_files @testdata.multipleinstance_template_file => @testdata.multipleinstance_template_file
167
- @templates.data_file = @testdata.template_specific_data_file_with_include
168
- @templates.expand
169
-
170
- @output_file_data = @testdata.read_file(@testdata.multipleinstance_template_file)
171
- end
172
-
173
- it "should use the external data that was supplied" do
174
- @output_file_data.should include("the value of a is data")
175
- end
176
-
177
- it "should override the external data with template specific data from the local file" do
178
- @output_file_data.should include("first instance of 'the real value' is here.")
179
- end
180
- end