bozo-scripts 0.4.4 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ODM2NjU1NWE1MjhlMjc1ZTVmYzYyODAwNDVlYjVkNWEyNDMwOWU1Yg==
5
+ data.tar.gz: !binary |-
6
+ ZjlmMWM3MjJlOTIxYzg3NWE1YmNjOWIzNmYyMDcyMGEyOGM2NTE5ZA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MDhmOWY0Y2I1YjBlM2Q3MDZjMWUyNjRhNTQ5ODZhNmVkOTQ4OTc0ZjBmMmVm
10
+ MDE0ZTgyODhmNWM3MmEwZTFiZDk3YWViOGY2NWQ0M2MyZjgxZTliZmNiY2Nl
11
+ ODc1Y2JiNjU0ZTU0Yzc4NmU5Y2UwZWQwNWY5NTJjYTRjMmRjMTM=
12
+ data.tar.gz: !binary |-
13
+ ZjZhMTAzYzRiOGU4YTQyMGY5MjgzYjJhYTA1ZjIwZmZkYWZkYWZkODE4NDNl
14
+ ZTljYWI2MGZjMTc3ZGVlNzY5ZjljZWIyZDY3M2UzYjU3YzE1YzMwZjdiMDU1
15
+ ZjI5NGVmMzcxN2JhNzRkNTliNjU4MzcwOTcyNjE1ZDkwNTdjZjI=
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.4
1
+ 0.5.0
@@ -16,7 +16,7 @@ module Bozo::Hooks
16
16
  program_files_path = ENV['ProgramFiles(x86)']
17
17
  end
18
18
 
19
- File.join(program_files_path, 'Microsoft Fxcop 10.0', 'fxcopcmd.exe') unless program_files_path.nil?
19
+ File.join(program_files_path, 'Microsoft Fxcop 10.0', 'FxCopCmd.exe') unless program_files_path.nil?
20
20
  end
21
21
 
22
22
  def initialize
@@ -52,8 +52,8 @@ module Bozo::Hooks
52
52
  def post_compile
53
53
  config = config_with_defaults
54
54
 
55
- raise no_executable_path_specified if path.nil?
56
- raise no_executable_exists unless File.exists?(path)
55
+ raise no_executable_path_specified if config[:path].nil?
56
+ raise no_executable_exists unless File.exists?(config[:path])
57
57
 
58
58
  if config[:project].nil?
59
59
  execute_projects config
@@ -80,11 +80,11 @@ module Bozo::Hooks
80
80
  # @param [Hash] config
81
81
  # The fxcop configuration
82
82
  def execute_projects(config)
83
- log_debug "Executing projects with '#{path}'" if config[:framework_versions].any?
83
+ log_debug "Executing projects with '#{config[:path]}'" if config[:framework_versions].any?
84
84
 
85
85
  config[:framework_versions].each do |framework_version|
86
86
  args = []
87
- args << '"' + path + '"'
87
+ args << '"' + config[:path] + '"'
88
88
  args << "/out:#{output_path}\\#{Time.now.to_i}-#{framework_version}-FxCop-report.xml"
89
89
  args << "/types:" + config[:types].join(',') unless config[:types].empty?
90
90
 
@@ -108,12 +108,16 @@ module Bozo::Hooks
108
108
  def execute_fxcop_project(config)
109
109
  log_debug "Executing fxcop project '#{config[:project]}' with '#{path}'"
110
110
 
111
+ output_file = File.join(out_path, File.basename(config[:project], '.*') + '-FxCop-report.xml' )
112
+
111
113
  args = []
112
- args << '"' + path + '"'
113
- args << "/out:\"#{output_path}\\#{File.basename(config[:project], '.*')}-FxCop-report.xml\""
114
+ args << '"' + config[:path] + '"'
115
+ args << "/out:\"#{output_file}\""
114
116
  args << "/project:\"#{config[:project]}\""
115
117
  args << "/types:" + config[:types].join(',') unless config[:types].empty?
116
118
 
119
+ FileUtils.mkdir_p(output_path)
120
+
117
121
  execute_command :fx_cop, args
118
122
  end
119
123
 
@@ -0,0 +1,137 @@
1
+ require 'nokogiri'
2
+
3
+ module Bozo::TestRunners
4
+
5
+ # Adds a code coverage test runner using openCover
6
+ #
7
+ # The default configuration looks for openCover in the ProgramFiles(x86) path
8
+ #
9
+ # Test runners can be defined foropenCover to run against. Each runner
10
+ # produces a separate dotcover output
11
+ class OpenCover
12
+ def self.default_path
13
+ File.join('build', 'tools', 'OpenCover', 'OpenCover.Console.exe')
14
+ end
15
+
16
+ def initialize
17
+ @@defaults = {
18
+ :path => OpenCover.default_path,
19
+ :required => true
20
+ }
21
+
22
+ @config = {}
23
+ @runners = []
24
+ end
25
+
26
+ # Returns whether opencover is installed at the configured path
27
+ def opencover_installed?
28
+ path = configuration[:path]
29
+
30
+ return false if path.nil?
31
+
32
+ File.exist? path
33
+ end
34
+
35
+ # Returns the build tools required for this dependency resolver to run
36
+ # successfully.
37
+ def required_tools
38
+ :open_cover
39
+ end
40
+
41
+ # Adds a test runner
42
+ #
43
+ # @param [Symbol] runner
44
+ # A test runner to wrap with opencover
45
+ def runner(runner, &block)
46
+ add_instance runner, block
47
+ end
48
+
49
+ # Specifies whether covering with opencover is required
50
+ #
51
+ # If it is not required, and opencover cannot be found, then test runners
52
+ # are executed without coverage. If opencover is required but cannot be
53
+ # found then an error will occur.
54
+ #
55
+ # @param [boolean] required
56
+ # Whether opencover coverage is required
57
+ def required?(required = nil)
58
+ @config[:required] = required unless required.nil?
59
+
60
+ @config[:required]
61
+ end
62
+
63
+ def execute
64
+ if required? or opencover_installed?
65
+ @runners.each {|runner| execute_with_coverage runner}
66
+ else
67
+ @runners.each {|runner| execute_without_coverage(runner)}
68
+ end
69
+ end
70
+
71
+ private
72
+
73
+ # Resolves the named class within the given namespace and then created an
74
+ # instance of the class before adding it to the given collection and
75
+ # yielding it to the configuration block when one is provided.
76
+ #
77
+ # @param [Symbol] type
78
+ # The name of the step executor.
79
+ # @param [Proc] block
80
+ # Optional block to refine the configuration of the step executor.
81
+ def add_instance(type, block)
82
+ instance = Bozo::TestRunners.const_get(to_class_name(type)).new
83
+ instance.extend Bozo::Runner
84
+ @runners << instance
85
+ block.call instance if block
86
+ end
87
+
88
+ # Converts a symbol into a Pascal Case class name.
89
+ #
90
+ # eg. `:single` => `"Single"`, `:two_words` => `"TwoWords"`.
91
+ #
92
+ # @param [Symbol] type
93
+ # The name of a step executor.
94
+ def to_class_name(type)
95
+ type.to_s.split('_').map{|word| word.capitalize}.join
96
+ end
97
+
98
+ def execute_without_coverage(runner)
99
+ log_debug 'Running ' + runner.class.to_s + ' without coverage'
100
+ runner.execute
101
+ end
102
+
103
+ def execute_with_coverage(runner)
104
+ if required? & !opencover_installed?
105
+ log_fatal "Attempting to run with coverage but opencover could not be found at #{configuration[:path]}"
106
+ end
107
+
108
+ log_debug "Running #{runner.class} with coverage"
109
+
110
+ config = configuration
111
+ opencover_path = config[:path]
112
+ output_file = File.expand_path(File.join('temp', 'opencover', "#{Time.now.to_i}-opencover-report.xml")).gsub(/\//, '\\')
113
+
114
+ FileUtils.mkdir_p(File.join('temp', 'opencover'))
115
+
116
+ args = []
117
+ args << '"' + opencover_path + '"'
118
+ args << ' -target:' + runner.runner_path
119
+ args << ' -targetargs:"' + runner.runner_args.flatten.join(' ') + ' /noshadow"'
120
+ args << ' -register:user'
121
+ args << " -output:#{output_file}"
122
+
123
+ log_debug 'Running opencover from "' + opencover_path + '"'
124
+ execute_command :open_cover, args
125
+ end
126
+
127
+ def configuration
128
+ config_with_defaults
129
+ end
130
+
131
+ def config_with_defaults
132
+ @@defaults.merge @config
133
+ end
134
+
135
+ end
136
+
137
+ end
@@ -0,0 +1,47 @@
1
+ require 'open-uri'
2
+ require 'zip/zipfilesystem'
3
+
4
+ module Bozo::Tools
5
+ class OpenCover
6
+
7
+ # Creates a new instance.
8
+ def initialize
9
+ @url = 'https://github.com/OpenCover/opencover/releases/download/4.6.166/opencover.4.6.166.zip'
10
+ end
11
+
12
+ # Sets the source url for the nuget tool to be retreived from
13
+ #
14
+ # @param [String] url
15
+ # A web server hosting the OpenCover tool
16
+ def source(url)
17
+ @url = url
18
+ end
19
+
20
+ # Retreives the OpenCover tool exe from the path
21
+ def retrieve(destination_path)
22
+ zip_file_path = download_path('opencover.4.6.166.zip')
23
+
24
+ open(zip_file_path, 'wb') do |file|
25
+ file << open(@url).read
26
+ end
27
+
28
+ extract_zip(zip_file_path, destination_path)
29
+ end
30
+
31
+ private
32
+ def extract_zip(source, destination_path)
33
+ Zip::ZipFile.open(source) do |zip_file|
34
+ zip_file.each { |f|
35
+ f_path = File.join(destination_path, f.name)
36
+ FileUtils.mkdir_p(File.dirname(f_path))
37
+ zip_file.extract(f, f_path) unless File.exist?(f_path)
38
+ }
39
+ end
40
+ end
41
+
42
+ def download_path(source_name)
43
+ FileUtils.mkdir_p('temp')
44
+ File.join('temp', source_name)
45
+ end
46
+ end
47
+ end
data/lib/bozo_scripts.rb CHANGED
@@ -24,9 +24,11 @@ require 'bozo/publishers/file_copy'
24
24
  require 'bozo/publishers/nuget'
25
25
  require 'bozo/publishers/rubygems'
26
26
  require 'bozo/test_runners/dotcover'
27
+ require 'bozo/test_runners/opencover'
27
28
  require 'bozo/test_runners/nunit'
28
29
  require 'bozo/test_runners/runit'
29
30
  require 'bozo/configuration'
30
31
  require 'bozo/erubis_templating_coordinator'
31
32
  require 'bozo/version'
32
33
  require 'bozo/tools/nuget'
34
+ require 'bozo/tools/opencover'
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bozo-scripts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
5
- prerelease:
4
+ version: 0.5.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Garry Shutler
@@ -10,12 +9,11 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2015-06-04 00:00:00.000000000 Z
12
+ date: 2015-07-22 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: nokogiri
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - ~>
21
19
  - !ruby/object:Gem::Version
@@ -23,7 +21,6 @@ dependencies:
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
25
  - - ~>
29
26
  - !ruby/object:Gem::Version
@@ -31,7 +28,6 @@ dependencies:
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: erubis
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
32
  - - ~>
37
33
  - !ruby/object:Gem::Version
@@ -39,7 +35,6 @@ dependencies:
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
39
  - - ~>
45
40
  - !ruby/object:Gem::Version
@@ -47,7 +42,6 @@ dependencies:
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: test-unit
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
46
  - - ~>
53
47
  - !ruby/object:Gem::Version
@@ -55,7 +49,6 @@ dependencies:
55
49
  type: :runtime
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
53
  - - ~>
61
54
  - !ruby/object:Gem::Version
@@ -63,7 +56,6 @@ dependencies:
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: bozo
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
60
  - - ~>
69
61
  - !ruby/object:Gem::Version
@@ -71,7 +63,6 @@ dependencies:
71
63
  type: :runtime
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
67
  - - ~>
77
68
  - !ruby/object:Gem::Version
@@ -79,7 +70,6 @@ dependencies:
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: zip
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
74
  - - ~>
85
75
  - !ruby/object:Gem::Version
@@ -87,7 +77,6 @@ dependencies:
87
77
  type: :runtime
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
81
  - - ~>
93
82
  - !ruby/object:Gem::Version
@@ -100,6 +89,8 @@ executables: []
100
89
  extensions: []
101
90
  extra_rdoc_files: []
102
91
  files:
92
+ - LICENSE
93
+ - VERSION
103
94
  - lib/bozo/compilers/msbuild.rb
104
95
  - lib/bozo/configuration.rb
105
96
  - lib/bozo/dependency_resolvers/bundler.rb
@@ -123,40 +114,33 @@ files:
123
114
  - lib/bozo/publishers/rubygems.rb
124
115
  - lib/bozo/test_runners/dotcover.rb
125
116
  - lib/bozo/test_runners/nunit.rb
117
+ - lib/bozo/test_runners/opencover.rb
126
118
  - lib/bozo/test_runners/runit.rb
127
119
  - lib/bozo/tools/nuget.rb
120
+ - lib/bozo/tools/opencover.rb
128
121
  - lib/bozo/version.rb
129
122
  - lib/bozo_scripts.rb
130
- - VERSION
131
- - LICENSE
132
123
  homepage: https://github.com/zopaUK/bozo-scripts
133
124
  licenses: []
125
+ metadata: {}
134
126
  post_install_message:
135
127
  rdoc_options: []
136
128
  require_paths:
137
129
  - lib
138
130
  required_ruby_version: !ruby/object:Gem::Requirement
139
- none: false
140
131
  requirements:
141
132
  - - ! '>='
142
133
  - !ruby/object:Gem::Version
143
134
  version: '0'
144
- segments:
145
- - 0
146
- hash: -193942349
147
135
  required_rubygems_version: !ruby/object:Gem::Requirement
148
- none: false
149
136
  requirements:
150
137
  - - ! '>='
151
138
  - !ruby/object:Gem::Version
152
139
  version: '0'
153
- segments:
154
- - 0
155
- hash: -193942349
156
140
  requirements: []
157
141
  rubyforge_project: bozo-scripts
158
- rubygems_version: 1.8.29
142
+ rubygems_version: 2.4.6
159
143
  signing_key:
160
- specification_version: 3
144
+ specification_version: 4
161
145
  summary: Zopa build system scripts
162
146
  test_files: []