albacore 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. data/README.markdown +84 -81
  2. data/VERSION +1 -1
  3. data/install_dependencies.rb +10 -10
  4. data/lib/albacore.rb +10 -2
  5. data/lib/albacore/assemblyinfo.rb +100 -100
  6. data/lib/albacore/assemblyinfolanguages/csharpengine.rb +14 -0
  7. data/lib/albacore/assemblyinfolanguages/vbnetengine.rb +14 -0
  8. data/lib/albacore/docu.rb +39 -0
  9. data/lib/albacore/exec.rb +23 -0
  10. data/lib/albacore/expandtemplates.rb +73 -71
  11. data/lib/albacore/msbuild.rb +56 -61
  12. data/lib/albacore/mspectestrunner.rb +44 -42
  13. data/lib/albacore/nant.rb +39 -0
  14. data/lib/albacore/ncoverconsole.rb +68 -61
  15. data/lib/albacore/ncoverreport.rb +56 -55
  16. data/lib/albacore/ncoverreports/assemblyfilter.rb +7 -7
  17. data/lib/albacore/ncoverreports/branchcoverage.rb +7 -7
  18. data/lib/albacore/ncoverreports/classfilter.rb +5 -5
  19. data/lib/albacore/ncoverreports/codecoveragebase.rb +22 -22
  20. data/lib/albacore/ncoverreports/cyclomaticcomplexity.rb +19 -19
  21. data/lib/albacore/ncoverreports/documentfilter.rb +5 -5
  22. data/lib/albacore/ncoverreports/fullcoveragereport.rb +17 -17
  23. data/lib/albacore/ncoverreports/methodcoverage.rb +7 -7
  24. data/lib/albacore/ncoverreports/methodfilter.rb +5 -5
  25. data/lib/albacore/ncoverreports/namespacefilter.rb +5 -5
  26. data/lib/albacore/ncoverreports/reportfilterbase.rb +23 -23
  27. data/lib/albacore/ncoverreports/summaryreport.rb +18 -18
  28. data/lib/albacore/ncoverreports/symbolcoverage.rb +6 -7
  29. data/lib/albacore/ndepend.rb +35 -0
  30. data/lib/albacore/nunittestrunner.rb +36 -35
  31. data/lib/albacore/plink.rb +48 -0
  32. data/lib/albacore/sftp.rb +33 -31
  33. data/lib/albacore/sqlcmd.rb +54 -51
  34. data/lib/albacore/ssh.rb +35 -33
  35. data/lib/albacore/support/albacore_helper.rb +1 -4
  36. data/lib/albacore/support/attrmethods.rb +25 -0
  37. data/lib/albacore/support/failure.rb +17 -17
  38. data/lib/albacore/support/globalconfig.rb +6 -0
  39. data/lib/albacore/support/logging.rb +30 -28
  40. data/lib/albacore/support/runcommand.rb +41 -41
  41. data/lib/albacore/support/yamlconfig.rb +23 -27
  42. data/lib/albacore/unzip.rb +28 -0
  43. data/lib/albacore/xbuild.rb +54 -0
  44. data/lib/albacore/xunittestrunner.rb +40 -43
  45. data/lib/albacore/zipdirectory.rb +72 -63
  46. data/lib/rake/assemblyinfotask.rb +12 -11
  47. data/lib/rake/docutask.rb +17 -0
  48. data/lib/rake/exectask.rb +18 -0
  49. data/lib/rake/expandtemplatestask.rb +12 -11
  50. data/lib/rake/msbuildtask.rb +13 -12
  51. data/lib/rake/mspectask.rb +12 -11
  52. data/lib/rake/nanttask.rb +17 -0
  53. data/lib/rake/ncoverconsoletask.rb +12 -11
  54. data/lib/rake/ncoverreporttask.rb +12 -11
  55. data/lib/rake/ndependtask.rb +23 -0
  56. data/lib/rake/nunittask.rb +12 -11
  57. data/lib/rake/plinktask.rb +23 -0
  58. data/lib/rake/renametask.rb +15 -15
  59. data/lib/rake/sftptask.rb +11 -10
  60. data/lib/rake/sqlcmdtask.rb +13 -12
  61. data/lib/rake/sshtask.rb +11 -10
  62. data/lib/rake/support/albacoretask.rb +16 -15
  63. data/lib/rake/unziptask.rb +17 -0
  64. data/lib/rake/xbuildtask.rb +22 -0
  65. data/lib/rake/xunittask.rb +12 -11
  66. data/lib/rake/ziptask.rb +12 -11
  67. data/rakefile.rb +255 -204
  68. data/spec/assemblyinfo_spec.rb +426 -221
  69. data/spec/assemblyinfotask_spec.rb +21 -21
  70. data/spec/docu_spec.rb +70 -0
  71. data/spec/docutask_spec.rb +39 -0
  72. data/spec/exec_spec.rb +23 -0
  73. data/spec/exectask_spec.rb +31 -0
  74. data/spec/expandtemplates_spec.rb +149 -148
  75. data/spec/expandtemplatestask_spec.rb +21 -21
  76. data/spec/msbuild_spec.rb +150 -139
  77. data/spec/msbuildtask_spec.rb +21 -21
  78. data/spec/mspectask_spec.rb +21 -21
  79. data/spec/nant_spec.rb +101 -0
  80. data/spec/nanttask_spec.rb +31 -0
  81. data/spec/ncoverconsole_spec.rb +253 -221
  82. data/spec/ncoverconsoletask_spec.rb +21 -21
  83. data/spec/ncoverreport_spec.rb +538 -523
  84. data/spec/ncoverreporttask_spec.rb +21 -21
  85. data/spec/ndepend_spec.rb +49 -0
  86. data/spec/{commandtask_spec.rb → ndependtask_spec.rb} +10 -10
  87. data/spec/nunittask_spec.rb +21 -21
  88. data/spec/nunittestrunner_spec.rb +6 -6
  89. data/spec/patches/docu_patch.rb +13 -0
  90. data/spec/patches/system_patch.rb +18 -18
  91. data/spec/patches/tasklib_patch.rb +10 -10
  92. data/spec/plink_spec.rb +61 -0
  93. data/spec/plinktask_spec.rb +31 -0
  94. data/spec/renametask_spec.rb +21 -21
  95. data/spec/sftp_spec.rb +24 -24
  96. data/spec/sftptask_spec.rb +31 -31
  97. data/spec/sqlcmd_spec.rb +118 -120
  98. data/spec/sqlcmdtask_spec.rb +21 -21
  99. data/spec/ssh_spec.rb +36 -37
  100. data/spec/sshtask_spec.rb +29 -29
  101. data/spec/support/TestSolution/NDependProject.xml +315 -0
  102. data/spec/support/TestSolution/TestSolution.XUnitTests/Class1.cs +12 -12
  103. data/spec/support/TestSolution/TestSolution.XUnitTests/FailingTestFixture.cs +14 -0
  104. data/spec/support/TestSolution/TestSolution.XUnitTests/TestSolution.XUnitTests.csproj +1 -0
  105. data/spec/support/TestSolution/TestSolution.build +25 -0
  106. data/spec/support/assemblyinfotester.rb +40 -38
  107. data/spec/support/expandtemplatestestdata.rb +73 -73
  108. data/spec/support/msbuildtestdata.rb +28 -28
  109. data/spec/support/nanttestdata.rb +33 -0
  110. data/spec/support/ncoverconsoletestdata.rb +18 -0
  111. data/spec/support/ncoverreporttestdata.rb +24 -24
  112. data/spec/support/spec_helper.rb +2 -1
  113. data/spec/support/yamlconfig/msbuild.yml +3 -0
  114. data/spec/support/yamlconfig/yaml_autoconfig_test.yml +1 -0
  115. data/spec/support/ziptestdata.rb +11 -6
  116. data/spec/xunit_spec.rb +63 -0
  117. data/spec/xunittask_spec.rb +19 -19
  118. data/spec/yamlconfig_spec.rb +38 -52
  119. data/spec/zip_spec.rb +56 -11
  120. data/spec/ziptask_spec.rb +22 -22
  121. metadata +53 -8
  122. data/lib/albacore/command.rb +0 -23
  123. data/lib/rake/commandtask.rb +0 -16
  124. data/spec/command_spec.rb +0 -23
@@ -2,41 +2,43 @@ require 'albacore/support/albacore_helper'
2
2
  require 'net/ssh'
3
3
 
4
4
  class Ssh
5
- include YAMLConfig
6
- include Logging
7
-
8
- attr_accessor :server, :username, :password, :commands, :port, :key, :debug
9
-
10
- def initialize
11
- @commands = []
12
- super()
13
- end
5
+ extend AttrMethods
6
+ include YAMLConfig
7
+ include Logging
14
8
 
15
- def get_connection_options
16
- options = {}
17
- options[:verbose] = :debug if @debug == true
18
- options[:password] = @password if @password
19
- options[:port] = @port if @port
20
- options[:keys] = [@key] if @key
21
- options
22
- end
23
-
24
- def execute()
25
- warn_about_key if @key
9
+ attr_accessor :server, :username, :password, :port, :key, :debug
10
+ attr_array :commands
26
11
 
27
- Net::SSH.start(@server, @username, get_connection_options) do |ssh|
28
- @commands.each{|cmd|
29
- @logger.info "Executing remote command: #{cmd}"
30
- output = ssh.exec!(cmd)
31
- @logger.info 'SSH output: '
32
- @logger.info output
33
- }
34
- end
35
- end
12
+ def initialize
13
+ @commands = []
14
+ super()
15
+ end
36
16
 
37
- def warn_about_key()
38
- info.debug 'When using a key, you need an SSH-Agent running to manage the keys.'
39
- info.debug 'On Windows, a recommended agent is called Pageant, downloadable from the Putty site.'
40
- end
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
41
43
 
42
44
  end
@@ -1,4 +1 @@
1
- require File.join(File.dirname(__FILE__), 'logging')
2
- require File.join(File.dirname(__FILE__), 'failure')
3
- require File.join(File.dirname(__FILE__), 'runcommand')
4
- require File.join(File.dirname(__FILE__), 'yamlconfig')
1
+ Dir.glob(File.join(File.dirname(__FILE__), '*.rb')).reject{|f| f == __FILE__}.each {|f| require f }
@@ -0,0 +1,25 @@
1
+ module AttrMethods
2
+
3
+ def attr_array(*names)
4
+ names.each do |n|
5
+ self.send :define_method, n do |*value|
6
+ instance_variable_set "@#{n}", value
7
+ end
8
+ self.send :define_method, "#{n}=" do |value|
9
+ instance_variable_set "@#{n}", value
10
+ end
11
+ end
12
+ end
13
+
14
+ def attr_hash(*names)
15
+ names.each do |n|
16
+ self.send :define_method, n do |value|
17
+ instance_variable_set "@#{n}", value
18
+ end
19
+ self.send :define_method, "#{n}=" do |value|
20
+ instance_variable_set "@#{n}", value
21
+ end
22
+ end
23
+ end
24
+
25
+ end
@@ -1,22 +1,22 @@
1
1
  require 'albacore/support/logging'
2
2
 
3
3
  module Failure
4
- include Logging
5
-
6
- attr_accessor :failed
7
-
8
- def initialize
9
- super()
10
- @failed = false
11
- end
12
-
13
- def fail
14
- @failed = true
15
- end
16
-
17
- def fail_with_message(msg)
18
- @logger.fatal msg
19
- fail
20
- end
4
+ include Logging
5
+
6
+ attr_accessor :failed
7
+
8
+ def initialize
9
+ @failed = false
10
+ super()
11
+ end
12
+
13
+ def fail
14
+ @failed = true
15
+ end
16
+
17
+ def fail_with_message(msg)
18
+ @logger.fatal msg
19
+ fail
20
+ end
21
21
  end
22
22
 
@@ -0,0 +1,6 @@
1
+ module Albacore
2
+ class << self
3
+ attr_accessor :yaml_config_folder
4
+ attr_accessor :log_level
5
+ end
6
+ end
@@ -1,32 +1,34 @@
1
1
  require 'logger'
2
2
 
3
3
  module Logging
4
-
5
- attr_accessor :logger, :current_log_device
6
-
7
- def initialize
8
- super()
9
- create_logger(STDOUT, Logger::INFO)
10
- end
11
-
12
- def log_device=(logdev)
13
- level = @logger.level
14
- create_logger(logdev, level)
15
- end
16
-
17
- def log_level=(level)
18
- if (level == :verbose)
19
- loglevel = Logger::DEBUG
20
- else
21
- loglevel = Logger::INFO
22
- end
23
- create_logger(@current_log_device, loglevel)
24
- end
25
-
26
- def create_logger(device, level)
27
- @current_log_device = device
28
- @logger = Logger.new(device)
29
- @logger.level = level
30
- end
31
-
4
+
5
+ attr_accessor :logger, :current_log_device
6
+
7
+ def initialize
8
+ create_logger(STDOUT, Logger::INFO)
9
+ super()
10
+ end
11
+
12
+ def log_device=(logdev)
13
+ level = @logger.level
14
+ create_logger(logdev, level)
15
+ end
16
+
17
+ def log_level=(level)
18
+ if (level == :verbose)
19
+ loglevel = Logger::DEBUG
20
+ else
21
+ loglevel = Logger::INFO
22
+ end
23
+ create_logger(@current_log_device, loglevel)
24
+ end
25
+
26
+ def create_logger(device, level)
27
+ @current_log_device = device
28
+ @logger = Logger.new(device)
29
+
30
+ level = Logger::DEBUG if Albacore::log_level == :verbose
31
+ @logger.level = level
32
+ end
33
+
32
34
  end
@@ -1,45 +1,45 @@
1
1
  require 'albacore/support/failure'
2
2
 
3
3
  module RunCommand
4
- include Failure
5
-
6
- attr_accessor :path_to_command, :require_valid_command, :command_directory
7
-
8
- def initialize
9
- super()
10
- @require_valid_command = true
11
- @command_directory = Dir.pwd
12
- end
13
-
14
- def run_command(command_name="Command Line", command_parameters="")
15
- if @require_valid_command
16
- return false unless valid_command_exists
17
- end
18
-
19
- command = "\"#{@path_to_command}\" #{command_parameters}"
20
- @logger.debug "Executing #{command_name}: #{command}"
21
-
22
- set_working_directory
23
- result = system command
24
- reset_working_directory
25
-
26
- result
27
- end
28
-
29
- def valid_command_exists
30
- return true if File.exist?(@path_to_command)
31
- msg = 'Command not found: ' + @path_to_command
32
- @logger.fatal msg
33
- end
34
-
35
- def set_working_directory
36
- @original_directory = Dir.pwd
37
- return if @command_directory == @original_directory
38
- Dir.chdir(@command_directory)
39
- end
40
-
41
- def reset_working_directory
42
- return if Dir.pwd == @original_directory
43
- Dir.chdir(@original_directory)
44
- end
4
+ include Failure
5
+
6
+ attr_accessor :path_to_command, :require_valid_command, :command_directory
7
+
8
+ def initialize
9
+ @require_valid_command = true
10
+ @command_directory = Dir.pwd
11
+ super()
12
+ end
13
+
14
+ def run_command(command_name="Command Line", command_parameters="")
15
+ if @require_valid_command
16
+ return false unless valid_command_exists
17
+ end
18
+
19
+ command = "\"#{@path_to_command}\" #{command_parameters}"
20
+ @logger.debug "Executing #{command_name}: #{command}"
21
+
22
+ set_working_directory
23
+ result = system command
24
+ reset_working_directory
25
+
26
+ result
27
+ end
28
+
29
+ def valid_command_exists
30
+ return true if File.exist?(@path_to_command || "")
31
+ msg = "Command not found: #{@path_to_command}"
32
+ @logger.fatal msg
33
+ end
34
+
35
+ def set_working_directory
36
+ @original_directory = Dir.pwd
37
+ return if @command_directory == @original_directory
38
+ Dir.chdir(@command_directory)
39
+ end
40
+
41
+ def reset_working_directory
42
+ return if Dir.pwd == @original_directory
43
+ Dir.chdir(@original_directory)
44
+ end
45
45
  end
@@ -1,30 +1,26 @@
1
1
  require 'yaml'
2
2
 
3
- module YAMLConfig
4
- def initialize
5
- super()
6
- configure_if_config_exists(self.class.to_s.downcase)
7
- end
8
-
9
- def YAMLConfig.extend_object(obj)
10
- obj.configure_if_config_exists(obj.class.to_s.downcase)
11
- end
12
-
13
- def configure_if_config_exists(task_name)
14
- task_config = task_name + '.yml'
15
- configure(task_config) if File.exists?(task_config)
16
- end
17
-
18
- def configure(yml_file)
19
- config = YAML::load(File.open(yml_file))
20
- parse_config config
21
- end
22
-
23
- def parse_config(config)
24
- config.each do |key, value|
25
- setter = "#{key}="
26
- self.class.send(:attr_accessor, key) if !respond_to?(setter)
27
- send setter, value
28
- end
29
- end
3
+ module YAMLConfig
4
+ def initialize
5
+ super()
6
+ end
7
+
8
+ def load_config_by_task_name(task_name)
9
+ task_config = "#{task_name}.yml"
10
+ task_config = File.join(Albacore::yaml_config_folder, task_config) unless Albacore::yaml_config_folder.nil?
11
+ configure(task_config) if File.exists?(task_config)
12
+ end
13
+
14
+ def configure(yml_file)
15
+ config = YAML::load(File.open(yml_file))
16
+ parse_config config
17
+ end
18
+
19
+ def parse_config(config)
20
+ config.each do |key, value|
21
+ setter = "#{key}="
22
+ self.class.send(:attr_accessor, key) if !respond_to?(setter)
23
+ send setter, value
24
+ end
25
+ end
30
26
  end
@@ -0,0 +1,28 @@
1
+ require 'albacore/support/albacore_helper'
2
+ require 'zip/zip'
3
+ require 'zip/zipfilesystem'
4
+ include Zip
5
+
6
+ class Unzip
7
+ include YAMLConfig
8
+ include Failure
9
+
10
+ attr_accessor :unzip_path, :zip_file
11
+
12
+ def initialize
13
+ super()
14
+ end
15
+
16
+ def unzip()
17
+ fail_with_message 'Zip File cannot be empty' if @zip_file.nil?
18
+ return if @zip_file.nil?
19
+
20
+ Zip::ZipFile.open(@zip_file) do |zip_file|
21
+ zip_file.each do |file|
22
+ out_path = File.join(@unzip_path, file.name)
23
+ FileUtils.mkdir_p(File.dirname(out_path))
24
+ zip_file.extract(file, out_path) unless File.exist?(out_path)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,54 @@
1
+ require 'albacore/support/albacore_helper'
2
+
3
+ class XBuild
4
+ extend AttrMethods
5
+ include RunCommand
6
+ include YAMLConfig
7
+ include Logging
8
+
9
+ attr_accessor :solution, :verbosity
10
+ attr_array :targets
11
+ attr_hash :properties
12
+
13
+ def initialize
14
+ @path_to_command = 'xbuild'
15
+ super()
16
+ end
17
+
18
+ def build
19
+ build_solution(@solution)
20
+ end
21
+
22
+ def build_solution(solution)
23
+ check_solution solution
24
+
25
+ command_parameters = []
26
+ command_parameters << "\"#{solution}\""
27
+ command_parameters << "\"/verbosity:#{@verbosity}\"" if @verbosity != nil
28
+ command_parameters << build_properties if @properties != nil
29
+ command_parameters << "\"/target:#{build_targets}\"" if @targets != nil
30
+
31
+ result = run_command "xBuild", command_parameters.join(" ")
32
+
33
+ failure_message = 'xBuild Failed. See Build Log For Detail'
34
+ fail_with_message failure_message if !result
35
+ end
36
+
37
+ def check_solution(file)
38
+ return if file
39
+ msg = 'solution cannot be nil'
40
+ fail_with_message msg
41
+ end
42
+
43
+ def build_targets
44
+ @targets.join ";"
45
+ end
46
+
47
+ def build_properties
48
+ option_text = []
49
+ @properties.each do |key, value|
50
+ option_text << "/p:#{key}\=\"#{value}\""
51
+ end
52
+ option_text.join(" ")
53
+ end
54
+ end