ceedling 0.0.3 → 0.0.4
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/Rakefile +55 -6
- data/examples/temp_sensor/project.yml +2 -2
- data/lib/ceedling/version.rb +3 -3
- data/lib/ceedling/version.rb.erb +1 -1
- data/new_project_template/project.yml +1 -1
- data/new_project_template/vendor/ceedling/{vendor/c_exception/docs → docs}/CExceptionSummary.pdf +0 -0
- data/new_project_template/vendor/ceedling/vendor/cmock/docs/CMock Summary.pdf b/data/new_project_template/vendor/ceedling/docs/CMock → Summary.pdf +0 -0
- data/new_project_template/vendor/ceedling/vendor/c_exception/vendor/unity/docs/Unity Summary.pdf b/data/new_project_template/vendor/ceedling/docs/Unity → Summary.pdf +0 -0
- data/new_project_template/vendor/ceedling/lib/configurator.rb +65 -16
- data/new_project_template/vendor/ceedling/lib/configurator_builder.rb +1 -8
- data/new_project_template/vendor/ceedling/lib/configurator_plugins.rb +8 -1
- data/new_project_template/vendor/ceedling/lib/configurator_setup.rb +30 -34
- data/new_project_template/vendor/ceedling/lib/configurator_validator.rb +32 -5
- data/new_project_template/vendor/ceedling/lib/constants.rb +17 -4
- data/new_project_template/vendor/ceedling/lib/defaults.rb +120 -106
- data/new_project_template/vendor/ceedling/lib/file_path_utils.rb +1 -1
- data/new_project_template/vendor/ceedling/lib/generator.rb +14 -6
- data/new_project_template/vendor/ceedling/lib/objects.yml +5 -0
- data/new_project_template/vendor/ceedling/lib/plugin.rb +2 -1
- data/new_project_template/vendor/ceedling/lib/plugin_manager.rb +6 -1
- data/new_project_template/vendor/ceedling/lib/preprocessinator_file_handler.rb +2 -2
- data/new_project_template/vendor/ceedling/lib/preprocessinator_includes_handler.rb +2 -2
- data/new_project_template/vendor/ceedling/lib/rules_cmock.rake +1 -1
- data/new_project_template/vendor/ceedling/lib/rules_preprocess.rake +2 -2
- data/new_project_template/vendor/ceedling/lib/rules_release.rake +4 -4
- data/new_project_template/vendor/ceedling/lib/rules_release_aux_dependencies.rake +1 -1
- data/new_project_template/vendor/ceedling/lib/rules_tests.rake +5 -5
- data/new_project_template/vendor/ceedling/lib/rules_tests_aux_dependencies.rake +1 -1
- data/new_project_template/vendor/ceedling/lib/setupinator.rb +10 -3
- data/new_project_template/vendor/ceedling/lib/system_utils.rb +32 -0
- data/new_project_template/vendor/ceedling/lib/system_wrapper.rb +13 -5
- data/new_project_template/vendor/ceedling/lib/tasks_base.rake +2 -2
- data/new_project_template/vendor/ceedling/lib/tasks_release.rake +1 -1
- data/new_project_template/vendor/ceedling/lib/tasks_tests.rake +1 -1
- data/new_project_template/vendor/ceedling/lib/tool_executor.rb +38 -10
- data/new_project_template/vendor/ceedling/lib/tool_executor_helper.rb +68 -10
- data/new_project_template/vendor/ceedling/plugins/bullseye/bullseye.rake +142 -0
- data/new_project_template/vendor/ceedling/plugins/bullseye/bullseye.rb +145 -0
- data/new_project_template/vendor/ceedling/plugins/bullseye/defaults.yml +49 -0
- data/new_project_template/vendor/ceedling/plugins/bullseye/template.erb +15 -0
- data/new_project_template/vendor/ceedling/plugins/gcov/defaults.yml +34 -0
- data/new_project_template/vendor/ceedling/plugins/gcov/gcov.rake +136 -0
- data/new_project_template/vendor/ceedling/plugins/gcov/gcov.rb +115 -0
- data/new_project_template/vendor/ceedling/plugins/gcov/template.erb +15 -0
- data/new_project_template/vendor/ceedling/plugins/stdout_ide_tests_report/stdout_ide_tests_report.rb +1 -1
- data/new_project_template/vendor/ceedling/plugins/stdout_pretty_tests_report/stdout_pretty_tests_report.rb +3 -63
- data/new_project_template/vendor/ceedling/plugins/stdout_pretty_tests_report/template.erb +59 -0
- data/new_project_template/vendor/ceedling/plugins/warnings_report/warnings_report.rb +71 -0
- data/new_project_template/vendor/ceedling/release/build.info +1 -1
- data/new_project_template/vendor/ceedling/vendor/c_exception/release/version.info +1 -1
- data/new_project_template/vendor/ceedling/vendor/unity/src/unity.c +30 -21
- metadata +18 -27
- data/new_project_template/vendor/ceedling/docs/Ceedling Packet.odt +0 -0
- data/new_project_template/vendor/ceedling/docs/CeedlingLogo.png +0 -0
- data/new_project_template/vendor/ceedling/rakefile.rb +0 -59
- data/new_project_template/vendor/ceedling/rakefile_helper.rb +0 -23
- data/new_project_template/vendor/ceedling/vendor/c_exception/docs/CExceptionSummary.odt +0 -0
- data/new_project_template/vendor/ceedling/vendor/c_exception/docs/license.txt +0 -30
- data/new_project_template/vendor/ceedling/vendor/c_exception/docs/readme.txt +0 -236
- data/new_project_template/vendor/ceedling/vendor/c_exception/vendor/unity/docs/Unity Summary.txt +0 -217
- data/new_project_template/vendor/ceedling/vendor/cmock/docs/CMock Summary.odt +0 -0
- data/new_project_template/vendor/ceedling/vendor/cmock/docs/license.txt +0 -31
- data/new_project_template/vendor/ceedling/vendor/deep_merge/MIT-LICENSE +0 -20
- data/new_project_template/vendor/ceedling/vendor/deep_merge/README +0 -94
- data/new_project_template/vendor/ceedling/vendor/deep_merge/Rakefile +0 -28
- data/new_project_template/vendor/ceedling/vendor/deep_merge/test/test_deep_merge.rb +0 -553
- data/new_project_template/vendor/ceedling/vendor/diy/History.txt +0 -28
- data/new_project_template/vendor/ceedling/vendor/diy/README.rdoc +0 -233
- data/new_project_template/vendor/ceedling/vendor/unity/docs/Unity Summary.odt +0 -0
- data/new_project_template/vendor/ceedling/vendor/unity/docs/Unity Summary.pdf +0 -0
- data/new_project_template/vendor/ceedling/vendor/unity/docs/Unity Summary.txt +0 -217
- data/new_project_template/vendor/ceedling/vendor/unity/docs/license.txt +0 -31
data/Rakefile
CHANGED
@@ -1,18 +1,67 @@
|
|
1
|
-
require
|
1
|
+
require "bundler"
|
2
2
|
Bundler::GemHelper.install_tasks
|
3
3
|
require "./lib/ceedling"
|
4
|
+
require "fileutils"
|
5
|
+
require "erb"
|
4
6
|
|
5
|
-
desc "update
|
6
|
-
task :
|
7
|
+
desc "update all the tools from sourceforge and update version info"
|
8
|
+
task :update_tools do
|
9
|
+
|
10
|
+
puts "\nRetrieving ceedling content from SourceForge..."
|
11
|
+
rm_rf "temp"
|
12
|
+
mkdir "temp"
|
13
|
+
cd "temp" do
|
14
|
+
svn_checkout_command = 'svn co http://ceedling.svn.sourceforge.net/svnroot/ceedling/trunk .'
|
15
|
+
puts svn_checkout_command
|
16
|
+
`#{svn_checkout_command}`
|
17
|
+
rm_rf Dir["./**/.svn/"], :verbose => false # remove svn artifacts
|
18
|
+
end
|
19
|
+
|
20
|
+
# define mapping for pruning content from sourceforge
|
21
|
+
mapping = [
|
22
|
+
{:src => 'lib/', :dest => ''},
|
23
|
+
{:src => 'plugins/', :dest => ''},
|
24
|
+
{:src => 'release/', :dest => ''},
|
25
|
+
{:src => 'vendor/c_exception/lib/', :dest => 'vendor/c_exception/'},
|
26
|
+
{:src => 'vendor/c_exception/release/', :dest => 'vendor/c_exception/'},
|
27
|
+
{:src => 'vendor/cmock/config/', :dest => 'vendor/cmock/'},
|
28
|
+
{:src => 'vendor/cmock/lib/', :dest => 'vendor/cmock/'},
|
29
|
+
{:src => 'vendor/cmock/release/', :dest => 'vendor/cmock/'},
|
30
|
+
{:src => 'vendor/cmock/src/', :dest => 'vendor/cmock/'},
|
31
|
+
{:src => 'vendor/constructor/lib/', :dest => 'vendor/constructor/'},
|
32
|
+
{:src => 'vendor/deep_merge/lib/', :dest => 'vendor/deep_merge/'},
|
33
|
+
{:src => 'vendor/diy/lib', :dest => 'vendor/diy/'},
|
34
|
+
{:src => 'vendor/unity/release/', :dest => 'vendor/unity/'},
|
35
|
+
{:src => 'vendor/unity/src/', :dest => 'vendor/unity/'},
|
36
|
+
{:src => 'vendor/c_exception/docs/CExceptionSummary.pdf', :dest => 'docs/', :is_file => true},
|
37
|
+
{:src => 'vendor/cmock/docs/CMock Summary.pdf', :dest => 'docs/', :is_file => true},
|
38
|
+
{:src => 'docs/Ceedling Packet.pdf', :dest => 'docs/', :is_file => true},
|
39
|
+
{:src => 'vendor/unity/docs/Unity Summary.pdf', :dest => 'docs/', :is_file => true},
|
40
|
+
]
|
41
|
+
|
42
|
+
puts "\nUpdating tools with the latest goods..."
|
43
|
+
rm_rf "new_project_template/vendor/**"
|
44
|
+
mapping.each do |path|
|
45
|
+
dest = "new_project_template/vendor/ceedling/#{path[:dest]}"
|
46
|
+
dir = dest.sub(/\w+$/, '')
|
47
|
+
if !File.exist?(dir)
|
48
|
+
mkdir_p dest
|
49
|
+
end
|
50
|
+
puts "temp/#{path[:src]} -> #{dest}"
|
51
|
+
FileUtils.cp_r "temp/#{path[:src]}", "#{dest}"
|
52
|
+
end
|
53
|
+
rm_rf "temp"
|
54
|
+
|
55
|
+
puts "\nUpdating version info..."
|
7
56
|
versions = {}
|
8
|
-
# There's an extra line of junk at the beginning, but who cares.
|
9
57
|
full_version_info = nil
|
10
58
|
Dir.chdir(Ceedling::NEW_PROJECT_DIR) { full_version_info = `rake version` }
|
59
|
+
puts full_version_info
|
11
60
|
full_version_info.each_line do |line|
|
12
61
|
line = line.split("::")
|
13
62
|
versions[line.first.strip.upcase] = line.last.strip
|
14
63
|
end
|
15
|
-
require "erb"
|
16
64
|
result = ERB.new(File.read("lib/ceedling/version.rb.erb")).result(binding)
|
17
65
|
File.open("lib/ceedling/version.rb", "wb+") { |f| f.puts result }
|
18
|
-
|
66
|
+
|
67
|
+
end
|
data/lib/ceedling/version.rb
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
module Ceedling
|
3
3
|
module Version
|
4
4
|
# @private
|
5
|
-
GEM = "0.0.
|
5
|
+
GEM = "0.0.4"
|
6
6
|
|
7
7
|
# @private
|
8
|
-
CEEDLING = "0.9.
|
8
|
+
CEEDLING = "0.9.172"
|
9
9
|
# @private
|
10
|
-
CEXCEPTION = "1.2.
|
10
|
+
CEXCEPTION = "1.2.16"
|
11
11
|
# @private
|
12
12
|
CMOCK = "2.0.209"
|
13
13
|
# @private
|
data/lib/ceedling/version.rb.erb
CHANGED
data/new_project_template/vendor/ceedling/{vendor/c_exception/docs → docs}/CExceptionSummary.pdf
RENAMED
File without changes
|
File without changes
|
File without changes
|
@@ -7,7 +7,7 @@ require 'deep_merge'
|
|
7
7
|
|
8
8
|
class Configurator
|
9
9
|
|
10
|
-
attr_reader :project_config_hash, :
|
10
|
+
attr_reader :project_config_hash, :script_plugins, :rake_plugins
|
11
11
|
attr_accessor :project_logging, :project_debug, :project_verbosity, :sanity_checks
|
12
12
|
|
13
13
|
constructor(:configurator_setup, :configurator_builder, :configurator_plugins, :cmock_builder, :yaml_wrapper, :system_wrapper) do
|
@@ -17,14 +17,10 @@ class Configurator
|
|
17
17
|
@sanity_checks = TestResultsSanityChecks::NORMAL
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
20
|
def setup
|
22
21
|
# special copy of cmock config to provide to cmock for construction
|
23
22
|
@cmock_config_hash = {}
|
24
23
|
|
25
|
-
# capture our source config for later merge operations
|
26
|
-
@source_config_hash = {}
|
27
|
-
|
28
24
|
# note: project_config_hash is an instance variable so constants and accessors created
|
29
25
|
# in eval() statements in build() have something of proper scope and persistence to reference
|
30
26
|
@project_config_hash = {}
|
@@ -33,7 +29,7 @@ class Configurator
|
|
33
29
|
@script_plugins = []
|
34
30
|
@rake_plugins = []
|
35
31
|
end
|
36
|
-
|
32
|
+
|
37
33
|
|
38
34
|
def replace_flattened_config(config)
|
39
35
|
@project_config_hash.merge!(config)
|
@@ -69,13 +65,13 @@ class Configurator
|
|
69
65
|
|
70
66
|
|
71
67
|
def populate_defaults(config)
|
72
|
-
new_config = DEFAULT_CEEDLING_CONFIG.
|
68
|
+
new_config = DEFAULT_CEEDLING_CONFIG.deep_clone
|
73
69
|
new_config.deep_merge!(config)
|
74
70
|
config.replace(new_config)
|
75
71
|
|
76
72
|
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_TEST )
|
77
73
|
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_TEST_PREPROCESSORS ) if (config[:project][:use_test_preprocessor])
|
78
|
-
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_TEST_DEPENDENCIES )
|
74
|
+
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_TEST_DEPENDENCIES ) if (config[:project][:use_auxiliary_dependencies])
|
79
75
|
|
80
76
|
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_RELEASE ) if (config[:project][:release_build])
|
81
77
|
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_RELEASE_ASSEMBLER ) if (config[:project][:release_build] and config[:release_build][:use_assembly])
|
@@ -131,18 +127,39 @@ class Configurator
|
|
131
127
|
|
132
128
|
|
133
129
|
# grab tool names from yaml and insert into tool structures so available for error messages
|
134
|
-
|
130
|
+
# set up default values
|
131
|
+
def tools_setup(config)
|
135
132
|
config[:tools].each_key do |name|
|
136
133
|
tool = config[:tools][name]
|
137
|
-
|
134
|
+
|
138
135
|
# populate name if not given
|
139
136
|
tool[:name] = name.to_s if (tool[:name].nil?)
|
140
137
|
|
141
138
|
# populate stderr redirect option
|
142
139
|
tool[:stderr_redirect] = StdErrRedirect::NONE if (tool[:stderr_redirect].nil?)
|
140
|
+
|
141
|
+
# populate background execution option
|
142
|
+
tool[:background_exec] = BackgroundExec::NONE if (tool[:background_exec].nil?)
|
143
|
+
|
144
|
+
# populate optional option to control verification of executable in search paths
|
145
|
+
tool[:optional] = false if (tool[:optional].nil?)
|
143
146
|
end
|
144
147
|
end
|
145
148
|
|
149
|
+
def tools_supplement_arguments(config)
|
150
|
+
config[:tools].each_key do |name|
|
151
|
+
tool = @project_config_hash[('tools_' + name.to_s).to_sym]
|
152
|
+
|
153
|
+
# smoosh in extra arguments if specified at top-level of config (useful for plugins & default gcc tools)
|
154
|
+
# arguments are squirted in at beginning of list
|
155
|
+
top_level_tool = ('tool_' + name.to_s).to_sym
|
156
|
+
if (not config[top_level_tool].nil?)
|
157
|
+
# adding and flattening is not a good idea: might over-flatten if there's array nesting in tool args
|
158
|
+
# use _with_index to preserve order
|
159
|
+
config[top_level_tool][:arguments].each_with_index { |arg, index| tool[:arguments].insert( index, arg ) }
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
146
163
|
|
147
164
|
def find_and_merge_plugins(config)
|
148
165
|
# plugins must be loaded before generic path evaluation & magic that happen later: perform path magic here as discrete step
|
@@ -151,7 +168,7 @@ class Configurator
|
|
151
168
|
FilePathUtils::standardize(path)
|
152
169
|
end
|
153
170
|
|
154
|
-
@configurator_plugins.add_load_paths(config)
|
171
|
+
paths_hash = @configurator_plugins.add_load_paths(config)
|
155
172
|
|
156
173
|
@rake_plugins = @configurator_plugins.find_rake_plugins(config)
|
157
174
|
@script_plugins = @configurator_plugins.find_script_plugins(config)
|
@@ -168,6 +185,8 @@ class Configurator
|
|
168
185
|
|
169
186
|
# special plugin setting for results printing
|
170
187
|
config[:plugins][:display_raw_test_results] = true if (config[:plugins][:display_raw_test_results].nil?)
|
188
|
+
|
189
|
+
paths_hash.each_pair { |name, path| config[:plugins][name] = path }
|
171
190
|
end
|
172
191
|
|
173
192
|
|
@@ -179,7 +198,7 @@ class Configurator
|
|
179
198
|
value_string.replace(@system_wrapper.module_eval(value_string))
|
180
199
|
end
|
181
200
|
@system_wrapper.env_set(key.to_s.upcase, value_string)
|
182
|
-
end
|
201
|
+
end
|
183
202
|
end
|
184
203
|
|
185
204
|
|
@@ -234,14 +253,44 @@ class Configurator
|
|
234
253
|
end
|
235
254
|
|
236
255
|
|
237
|
-
|
238
|
-
|
256
|
+
# create constants and accessors (attached to this object) from given hash
|
257
|
+
def build(config, *keys)
|
258
|
+
# create flattened & expanded configuration hash
|
259
|
+
built_config = @configurator_setup.build_project_config( config, @configurator_builder.flattenify( config ) )
|
239
260
|
|
240
|
-
@
|
241
|
-
@project_config_hash = built_config.clone
|
261
|
+
@project_config_hash = built_config.clone
|
242
262
|
store_config()
|
243
263
|
|
244
264
|
@configurator_setup.build_constants_and_accessors(built_config, binding())
|
265
|
+
|
266
|
+
# top-level keys disappear when we flatten, so create global constants & accessors to any specified keys
|
267
|
+
keys.each do |key|
|
268
|
+
hash = { key => config[key] }
|
269
|
+
@configurator_setup.build_constants_and_accessors(hash, binding())
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
|
274
|
+
# add to constants and accessors as post build step
|
275
|
+
def build_supplement(config_base, config_more)
|
276
|
+
# merge in our post-build additions to base configuration hash
|
277
|
+
config_base.deep_merge!( config_more )
|
278
|
+
|
279
|
+
# flatten our addition hash
|
280
|
+
config_more_flattened = @configurator_builder.flattenify( config_more )
|
281
|
+
|
282
|
+
# merge our flattened hash with built hash from previous build
|
283
|
+
@project_config_hash.deep_merge!( config_more_flattened )
|
284
|
+
store_config()
|
285
|
+
|
286
|
+
# create more constants and accessors
|
287
|
+
@configurator_setup.build_constants_and_accessors(config_more_flattened, binding())
|
288
|
+
|
289
|
+
# recreate constants & update accessors with new merged, base values
|
290
|
+
config_more.keys.each do |key|
|
291
|
+
hash = { key => config_base[key] }
|
292
|
+
@configurator_setup.build_constants_and_accessors(hash, binding())
|
293
|
+
end
|
245
294
|
end
|
246
295
|
|
247
296
|
|
@@ -64,7 +64,7 @@ class ConfiguratorBuilder
|
|
64
64
|
def populate_defaults(config, defaults)
|
65
65
|
defaults.keys.sort.each do |section|
|
66
66
|
defaults[section].keys.sort.each do |entry|
|
67
|
-
config[section][entry] = defaults[section][entry] if (config[section].nil? or config[section][entry].nil?)
|
67
|
+
config[section][entry] = defaults[section][entry].deep_clone if (config[section].nil? or config[section][entry].nil?)
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
@@ -192,13 +192,6 @@ class ConfiguratorBuilder
|
|
192
192
|
end
|
193
193
|
|
194
194
|
|
195
|
-
def collect_environment_variables(in_hash)
|
196
|
-
return {
|
197
|
-
:collection_environment => in_hash[:environment]
|
198
|
-
}
|
199
|
-
end
|
200
|
-
|
201
|
-
|
202
195
|
def collect_project_options(in_hash)
|
203
196
|
options = []
|
204
197
|
|
@@ -11,14 +11,21 @@ class ConfiguratorPlugins
|
|
11
11
|
|
12
12
|
|
13
13
|
def add_load_paths(config)
|
14
|
+
plugin_paths = {}
|
15
|
+
|
14
16
|
config[:plugins][:load_paths].each do |root|
|
15
17
|
@system_wrapper.add_load_path( root ) if ( not @file_wrapper.directory_listing( File.join( root, '*.rb' ) ).empty? )
|
16
18
|
|
17
19
|
config[:plugins][:enabled].each do |plugin|
|
18
20
|
path = File.join( root, plugin )
|
19
|
-
|
21
|
+
if ( not @file_wrapper.directory_listing( File.join( path, '*.rb' ) ).empty? )
|
22
|
+
plugin_paths[(plugin + '_path').to_sym] = path
|
23
|
+
@system_wrapper.add_load_path( path )
|
24
|
+
end
|
20
25
|
end
|
21
26
|
end
|
27
|
+
|
28
|
+
return plugin_paths
|
22
29
|
end
|
23
30
|
|
24
31
|
|
@@ -14,40 +14,36 @@ class ConfiguratorSetup
|
|
14
14
|
constructor :configurator_builder, :configurator_validator
|
15
15
|
|
16
16
|
|
17
|
-
def build_project_config(config)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
# flesh out config
|
22
|
-
@configurator_builder.clean(new_config)
|
17
|
+
def build_project_config(config, flattened_config)
|
18
|
+
### flesh out config
|
19
|
+
@configurator_builder.clean(flattened_config)
|
23
20
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
new_config.merge!(@configurator_builder.collect_environment_variables(config))
|
21
|
+
### add to hash values we build up from configuration & file system contents
|
22
|
+
flattened_config.merge!(@configurator_builder.set_build_paths(flattened_config))
|
23
|
+
flattened_config.merge!(@configurator_builder.set_force_build_filepaths(flattened_config))
|
24
|
+
flattened_config.merge!(@configurator_builder.set_rakefile_components(flattened_config))
|
25
|
+
flattened_config.merge!(@configurator_builder.set_library_build_info_filepaths(flattened_config))
|
26
|
+
flattened_config.merge!(@configurator_builder.set_release_target(flattened_config))
|
27
|
+
flattened_config.merge!(@configurator_builder.collect_project_options(flattened_config))
|
32
28
|
|
33
|
-
|
34
|
-
|
29
|
+
### iterate through all entries in paths section and expand any & all globs to actual paths
|
30
|
+
flattened_config.merge!(@configurator_builder.expand_all_path_globs(flattened_config))
|
35
31
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
return
|
32
|
+
flattened_config.merge!(@configurator_builder.collect_source_and_include_paths(flattened_config))
|
33
|
+
flattened_config.merge!(@configurator_builder.collect_source_include_vendor_paths(flattened_config))
|
34
|
+
flattened_config.merge!(@configurator_builder.collect_test_support_source_include_paths(flattened_config))
|
35
|
+
flattened_config.merge!(@configurator_builder.collect_test_support_source_include_vendor_paths(flattened_config))
|
36
|
+
flattened_config.merge!(@configurator_builder.collect_tests(flattened_config))
|
37
|
+
flattened_config.merge!(@configurator_builder.collect_assembly(flattened_config))
|
38
|
+
flattened_config.merge!(@configurator_builder.collect_source(flattened_config))
|
39
|
+
flattened_config.merge!(@configurator_builder.collect_headers(flattened_config))
|
40
|
+
flattened_config.merge!(@configurator_builder.collect_all_existing_compilation_input(flattened_config))
|
41
|
+
flattened_config.merge!(@configurator_builder.collect_test_and_vendor_defines(flattened_config))
|
42
|
+
flattened_config.merge!(@configurator_builder.collect_release_and_vendor_defines(flattened_config))
|
43
|
+
flattened_config.merge!(@configurator_builder.collect_release_artifact_extra_link_objects(flattened_config))
|
44
|
+
flattened_config.merge!(@configurator_builder.collect_test_fixture_extra_link_objects(flattened_config))
|
45
|
+
|
46
|
+
return flattened_config
|
51
47
|
end
|
52
48
|
|
53
49
|
|
@@ -79,8 +75,8 @@ class ConfiguratorSetup
|
|
79
75
|
def validate_paths(config)
|
80
76
|
validation = []
|
81
77
|
|
82
|
-
validation << @configurator_validator.validate_filepath(config,
|
83
|
-
validation << @configurator_validator.validate_filepath(config,
|
78
|
+
validation << @configurator_validator.validate_filepath(config, :project, :build_root)
|
79
|
+
validation << @configurator_validator.validate_filepath(config, :cmock, :unity_helper) if config[:cmock][:unity_helper]
|
84
80
|
|
85
81
|
config[:project][:options_paths].each do |path|
|
86
82
|
validation << @configurator_validator.validate_filepath_simple( path, :project, :options_paths )
|
@@ -103,7 +99,7 @@ class ConfiguratorSetup
|
|
103
99
|
|
104
100
|
config[:tools].keys.sort.each do |key|
|
105
101
|
validation << @configurator_validator.exists?(config, :tools, key, :executable)
|
106
|
-
validation << @configurator_validator.
|
102
|
+
validation << @configurator_validator.validate_executable_filepath(config, :tools, key, :executable) if (not config[:tools][key][:optional])
|
107
103
|
validation << @configurator_validator.validate_tool_stderr_redirect(config, :tools, key)
|
108
104
|
end
|
109
105
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake' # for ext()
|
1
3
|
require 'constants'
|
2
4
|
require 'tool_executor' # for argument replacement pattern
|
3
5
|
require 'file_path_utils' # for glob handling class methods
|
@@ -63,12 +65,32 @@ class ConfiguratorValidator
|
|
63
65
|
|
64
66
|
return true
|
65
67
|
end
|
66
|
-
|
67
68
|
|
68
69
|
# walk into config hash. verify specified file exists.
|
69
|
-
def validate_filepath(config,
|
70
|
-
hash
|
71
|
-
filepath
|
70
|
+
def validate_filepath(config, *keys)
|
71
|
+
hash = retrieve_value(config, keys)
|
72
|
+
filepath = hash[:value]
|
73
|
+
|
74
|
+
# return early if we couldn't walk into hash and find a value
|
75
|
+
return false if (filepath.nil?)
|
76
|
+
|
77
|
+
# skip everything if we've got an argument replacement pattern
|
78
|
+
return true if (filepath =~ TOOL_EXECUTOR_ARGUMENT_REPLACEMENT_PATTERN)
|
79
|
+
|
80
|
+
if (not @file_wrapper.exist?(filepath))
|
81
|
+
# no verbosity checking since this is lowest level anyhow & verbosity checking depends on configurator
|
82
|
+
@stream_wrapper.stderr_puts("ERROR: Config filepath #{format_key_sequence(keys, hash[:depth])}['#{filepath}'] does not exist on disk.")
|
83
|
+
return false
|
84
|
+
end
|
85
|
+
|
86
|
+
return true
|
87
|
+
end
|
88
|
+
|
89
|
+
# walk into config hash. verify specified file exists.
|
90
|
+
def validate_executable_filepath(config, *keys)
|
91
|
+
exe_extension = config[:extension][:executable]
|
92
|
+
hash = retrieve_value(config, keys)
|
93
|
+
filepath = hash[:value]
|
72
94
|
|
73
95
|
# return early if we couldn't walk into hash and find a value
|
74
96
|
return false if (filepath.nil?)
|
@@ -77,7 +99,7 @@ class ConfiguratorValidator
|
|
77
99
|
return true if (filepath =~ TOOL_EXECUTOR_ARGUMENT_REPLACEMENT_PATTERN)
|
78
100
|
|
79
101
|
# if there's no path included, verify file exists somewhere in system search paths
|
80
|
-
if (not filepath.include?('/')
|
102
|
+
if (not filepath.include?('/'))
|
81
103
|
exists = false
|
82
104
|
|
83
105
|
@system_wrapper.search_paths.each do |path|
|
@@ -85,6 +107,11 @@ class ConfiguratorValidator
|
|
85
107
|
exists = true
|
86
108
|
break
|
87
109
|
end
|
110
|
+
|
111
|
+
if (@file_wrapper.exist?( (File.join(path, filepath)).ext( exe_extension ) ))
|
112
|
+
exists = true
|
113
|
+
break
|
114
|
+
end
|
88
115
|
end
|
89
116
|
|
90
117
|
if (not exists)
|