ceedling 0.21.0 → 0.22.0

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.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/bin/ceedling +3 -5
  4. data/ceedling-0.21.0.gem +0 -0
  5. data/ceedling.gemspec +1 -0
  6. data/lib/ceedling/configurator.rb +7 -1
  7. data/lib/ceedling/configurator_plugins.rb +21 -21
  8. data/lib/ceedling/generator_test_runner.rb +3 -46
  9. data/lib/ceedling/setupinator.rb +1 -0
  10. data/lib/ceedling/version.rb +4 -4
  11. data/plugins/module_generator/lib/module_generator.rb +14 -127
  12. data/plugins/module_generator/module_generator.rake +15 -3
  13. data/spec/spec_system_helper.rb +1 -1
  14. data/vendor/c_exception/release/build.info +1 -1
  15. data/vendor/c_exception/release/version.info +1 -1
  16. data/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -146
  17. data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +1 -1
  18. data/vendor/c_exception/vendor/unity/examples/example_1/makefile +1 -1
  19. data/vendor/c_exception/vendor/unity/examples/example_2/makefile +1 -1
  20. data/vendor/c_exception/vendor/unity/examples/unity_config.h +11 -19
  21. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +22 -26
  22. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +9 -9
  23. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +15 -6
  24. data/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +15 -15
  25. data/vendor/c_exception/vendor/unity/extras/fixture/test/Makefile +7 -13
  26. data/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +6 -6
  27. data/vendor/c_exception/vendor/unity/extras/fixture/test/template_fixture_tests.c +6 -6
  28. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +36 -29
  29. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +6 -6
  30. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +6 -6
  31. data/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +6 -6
  32. data/vendor/c_exception/vendor/unity/release/build.info +1 -1
  33. data/vendor/c_exception/vendor/unity/release/version.info +1 -1
  34. data/vendor/c_exception/vendor/unity/src/unity.c +45 -72
  35. data/vendor/c_exception/vendor/unity/src/unity.h +3 -4
  36. data/vendor/c_exception/vendor/unity/src/unity_internals.h +71 -109
  37. data/vendor/c_exception/vendor/unity/test/Makefile +25 -13
  38. data/vendor/c_exception/vendor/unity/test/targets/gcc_32.yml +0 -1
  39. data/vendor/c_exception/vendor/unity/test/targets/gcc_64.yml +0 -1
  40. data/vendor/c_exception/vendor/unity/test/tests/testparameterized.c +11 -5
  41. data/vendor/c_exception/vendor/unity/test/tests/testunity.c +32 -29
  42. data/vendor/cmock/docs/CMock_Summary.md +4 -0
  43. data/vendor/cmock/lib/cmock_config.rb +7 -2
  44. data/vendor/cmock/lib/cmock_generator.rb +9 -1
  45. data/vendor/cmock/release/build.info +1 -1
  46. data/vendor/cmock/release/version.info +1 -1
  47. data/vendor/cmock/test/unit/cmock_generator_main_test.rb +7 -0
  48. data/vendor/cmock/vendor/c_exception/release/build.info +1 -1
  49. data/vendor/cmock/vendor/c_exception/release/version.info +1 -1
  50. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_module.rb +202 -146
  51. data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +1 -1
  52. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_1/makefile +1 -1
  53. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/example_2/makefile +1 -1
  54. data/vendor/cmock/vendor/c_exception/vendor/unity/examples/unity_config.h +11 -19
  55. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.c +22 -26
  56. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture.h +9 -9
  57. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_internals.h +15 -6
  58. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +15 -15
  59. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/Makefile +7 -13
  60. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/main/AllTests.c +6 -6
  61. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/template_fixture_tests.c +6 -6
  62. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_Test.c +36 -29
  63. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +6 -6
  64. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.c +6 -6
  65. data/vendor/cmock/vendor/c_exception/vendor/unity/extras/fixture/test/unity_output_Spy.h +6 -6
  66. data/vendor/cmock/vendor/c_exception/vendor/unity/release/build.info +1 -1
  67. data/vendor/cmock/vendor/c_exception/vendor/unity/release/version.info +1 -1
  68. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.c +45 -72
  69. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.h +3 -4
  70. data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity_internals.h +71 -109
  71. data/vendor/cmock/vendor/c_exception/vendor/unity/test/Makefile +25 -13
  72. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_32.yml +0 -1
  73. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_64.yml +0 -1
  74. data/vendor/cmock/vendor/c_exception/vendor/unity/test/tests/testparameterized.c +11 -5
  75. data/vendor/cmock/vendor/c_exception/vendor/unity/test/tests/testunity.c +32 -29
  76. data/vendor/cmock/vendor/unity/auto/generate_module.rb +202 -146
  77. data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +1 -1
  78. data/vendor/cmock/vendor/unity/examples/example_1/makefile +1 -1
  79. data/vendor/cmock/vendor/unity/examples/example_2/makefile +1 -1
  80. data/vendor/cmock/vendor/unity/examples/unity_config.h +11 -19
  81. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.c +22 -26
  82. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture.h +9 -9
  83. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_internals.h +15 -6
  84. data/vendor/cmock/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +15 -15
  85. data/vendor/cmock/vendor/unity/extras/fixture/test/Makefile +7 -13
  86. data/vendor/cmock/vendor/unity/extras/fixture/test/main/AllTests.c +6 -6
  87. data/vendor/cmock/vendor/unity/extras/fixture/test/template_fixture_tests.c +6 -6
  88. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_Test.c +36 -29
  89. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +6 -6
  90. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.c +6 -6
  91. data/vendor/cmock/vendor/unity/extras/fixture/test/unity_output_Spy.h +6 -6
  92. data/vendor/cmock/vendor/unity/release/build.info +1 -1
  93. data/vendor/cmock/vendor/unity/release/version.info +1 -1
  94. data/vendor/cmock/vendor/unity/src/unity.c +45 -72
  95. data/vendor/cmock/vendor/unity/src/unity.h +3 -4
  96. data/vendor/cmock/vendor/unity/src/unity_internals.h +71 -109
  97. data/vendor/cmock/vendor/unity/test/Makefile +25 -13
  98. data/vendor/cmock/vendor/unity/test/targets/gcc_32.yml +0 -1
  99. data/vendor/cmock/vendor/unity/test/targets/gcc_64.yml +0 -1
  100. data/vendor/cmock/vendor/unity/test/tests/testparameterized.c +11 -5
  101. data/vendor/cmock/vendor/unity/test/tests/testunity.c +32 -29
  102. data/vendor/unity/auto/generate_module.rb +202 -146
  103. data/vendor/unity/auto/generate_test_runner.rb +1 -1
  104. data/vendor/unity/examples/example_1/makefile +1 -1
  105. data/vendor/unity/examples/example_2/makefile +1 -1
  106. data/vendor/unity/examples/unity_config.h +11 -19
  107. data/vendor/unity/extras/fixture/src/unity_fixture.c +22 -26
  108. data/vendor/unity/extras/fixture/src/unity_fixture.h +9 -9
  109. data/vendor/unity/extras/fixture/src/unity_fixture_internals.h +15 -6
  110. data/vendor/unity/extras/fixture/src/unity_fixture_malloc_overrides.h +15 -15
  111. data/vendor/unity/extras/fixture/test/Makefile +7 -13
  112. data/vendor/unity/extras/fixture/test/main/AllTests.c +6 -6
  113. data/vendor/unity/extras/fixture/test/template_fixture_tests.c +6 -6
  114. data/vendor/unity/extras/fixture/test/unity_fixture_Test.c +36 -29
  115. data/vendor/unity/extras/fixture/test/unity_fixture_TestRunner.c +6 -6
  116. data/vendor/unity/extras/fixture/test/unity_output_Spy.c +6 -6
  117. data/vendor/unity/extras/fixture/test/unity_output_Spy.h +6 -6
  118. data/vendor/unity/release/build.info +1 -1
  119. data/vendor/unity/release/version.info +1 -1
  120. data/vendor/unity/src/unity.c +45 -72
  121. data/vendor/unity/src/unity.h +3 -4
  122. data/vendor/unity/src/unity_internals.h +71 -109
  123. data/vendor/unity/test/Makefile +25 -13
  124. data/vendor/unity/test/targets/gcc_32.yml +0 -1
  125. data/vendor/unity/test/targets/gcc_64.yml +0 -1
  126. data/vendor/unity/test/tests/testparameterized.c +11 -5
  127. data/vendor/unity/test/tests/testunity.c +32 -29
  128. metadata +17 -6
  129. data/vendor/c_exception/vendor/unity/test/targets/gcc_auto_sizeof.yml +0 -48
  130. data/vendor/cmock/vendor/c_exception/vendor/unity/test/targets/gcc_auto_sizeof.yml +0 -48
  131. data/vendor/cmock/vendor/unity/test/targets/gcc_auto_sizeof.yml +0 -48
  132. data/vendor/unity/test/targets/gcc_auto_sizeof.yml +0 -48
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fef79035eb5bbe9732905e831e227da8e2a8b788
4
- data.tar.gz: 6c9c2c4b267ecec0395ef6c0028a4595f12dc8a7
3
+ metadata.gz: fa78f4edc69d44667b522fa8d6774b5cba64bd1d
4
+ data.tar.gz: a00d68217deb360e479bd5689c87facd4dedfbe0
5
5
  SHA512:
6
- metadata.gz: 95336d639633c43a5ecb27745fd4452645bd53a81b45715891f056aa660a581329f9fc7f326d1366ce2082a780fcd8ae74824a1eea91d9930f8c464b5e1059d2
7
- data.tar.gz: b27f3cc0aef83627c2669ac2b0f23e4583906a724e30cfb58809cad4675ac37f8f2cde09710606383c06564558c7561eb8be33b85279063a0a1c1480e58bfb06
6
+ metadata.gz: 3ae2e3a928a4d7bce315ec4670d2fbe2d214f94fb17738d3e02e294687b80f3157cabbc9c94cbbf4339ad29edd933b31a063bfebceabcdd820bc6be7dfe154d1
7
+ data.tar.gz: baae9e8307806303c0f5fbf511102930a772e7c574e1e69662cc858f840aa5a57f3ecbfce47ea8c1b1e263507507be22b0900226814dd3ff39514c03f492a6e6
data/Gemfile CHANGED
@@ -9,6 +9,7 @@ gem "constructor"
9
9
  gem "diy"
10
10
  gem "rr"
11
11
  gem "thor"
12
+ gem "curses"
12
13
 
13
14
  #gem "pty", :platforms => [ :ruby ] #automatically included on *nix platforms
14
15
  gem "popen4", :platforms => [ :mswin ]
data/bin/ceedling CHANGED
@@ -164,7 +164,7 @@ else
164
164
  end
165
165
  end
166
166
 
167
- rescue
167
+ rescue LoadError
168
168
 
169
169
  begin
170
170
 
@@ -180,7 +180,7 @@ else
180
180
  end
181
181
  end
182
182
 
183
- rescue
183
+ rescue LoadError
184
184
 
185
185
  #if neither of these libraries were available, we can just shell out to the command and collect results
186
186
  def spawn_command(cmd, &block)
@@ -269,7 +269,6 @@ else
269
269
  end
270
270
 
271
271
  #run rake and capture all the output
272
- okay_to_print = !(options[:pretend_we_are_gtest])
273
272
  options[:cmd] = if (options[:pretest].nil? || options[:pretest].empty?)
274
273
  "rake #{options[:args]}"
275
274
  else
@@ -277,8 +276,7 @@ else
277
276
  end
278
277
  spawn_command(options[:cmd]) do |stdout|
279
278
  stdout.each do |line|
280
- okay_to_print = true if ((options[:pretend_we_are_gtest]) && (line.match(/\[\=+\]/)))
281
- if (okay_to_print)
279
+ if (!options[:pretend_we_are_gtest] || (line.match(/^\[.*\]/)) || (line.match(/\d+ FAILED TESTS/)))
282
280
  f.puts(line) if (options[:outfile])
283
281
  if (options[:args].strip == "-T")
284
282
  line.gsub!(/(?<!\w)rake(?!\w)/,'ceedling')
Binary file
data/ceedling.gemspec CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |s|
16
16
 
17
17
  s.add_dependency "thor", ">= 0.14.5"
18
18
  s.add_dependency "rake", ">= 0.8.7"
19
+ s.add_dependency "curses", ">= 1.0.0"
19
20
 
20
21
  # Files needed from submodules
21
22
  s.files = []
@@ -79,6 +79,11 @@ class Configurator
79
79
  end
80
80
 
81
81
 
82
+ def populate_unity_defaults(config)
83
+ unity = config[:unity] || {}
84
+ @runner_config = unity.merge(@runner_config || config[:test_runner] || {})
85
+ end
86
+
82
87
  def populate_cmock_defaults(config)
83
88
  # cmock has its own internal defaults handling, but we need to set these specific values
84
89
  # so they're present for the build environment to access;
@@ -106,7 +111,8 @@ class Configurator
106
111
  cmock[:includes].uniq!
107
112
  end
108
113
 
109
- @runner_config = cmock.merge(config[:test_runner] || {})
114
+ @runner_config = cmock.merge(@runner_config || config[:test_runner] || {})
115
+
110
116
  @cmock_builder.manufacture(cmock)
111
117
  end
112
118
 
@@ -10,13 +10,13 @@ class ConfiguratorPlugins
10
10
  @script_plugins = []
11
11
  end
12
12
 
13
-
13
+
14
14
  def add_load_paths(config)
15
15
  plugin_paths = {}
16
-
16
+
17
17
  config[:plugins][:load_paths].each do |root|
18
18
  @system_wrapper.add_load_path( root ) if ( not @file_wrapper.directory_listing( File.join( root, '*.rb' ) ).empty? )
19
-
19
+
20
20
  config[:plugins][:enabled].each do |plugin|
21
21
  path = File.join(root, plugin, "lib")
22
22
 
@@ -26,15 +26,15 @@ class ConfiguratorPlugins
26
26
  end
27
27
  end
28
28
  end
29
-
29
+
30
30
  return plugin_paths
31
31
  end
32
-
33
-
32
+
33
+
34
34
  # gather up and return .rake filepaths that exist on-disk
35
35
  def find_rake_plugins(config)
36
36
  plugins_with_path = []
37
-
37
+
38
38
  config[:plugins][:load_paths].each do |root|
39
39
  config[:plugins][:enabled].each do |plugin|
40
40
  rake_plugin_path = File.join(root, plugin, "#{plugin}.rake")
@@ -44,7 +44,7 @@ class ConfiguratorPlugins
44
44
  end
45
45
  end
46
46
  end
47
-
47
+
48
48
  return plugins_with_path
49
49
  end
50
50
 
@@ -56,21 +56,21 @@ class ConfiguratorPlugins
56
56
  script_plugin_path = File.join(root, plugin, "lib", "#{plugin}.rb")
57
57
 
58
58
 
59
- if @file_wrapper.exist?(script_plugin_path) or @file_wrapper.exist?(old_script_plugin_path)
60
- @script_plugins << plugin
59
+ if @file_wrapper.exist?(script_plugin_path)
60
+ @script_plugins << plugin
61
61
  end
62
62
 
63
63
  end
64
64
  end
65
-
66
- return @script_plugins
65
+
66
+ return @script_plugins
67
67
  end
68
-
69
-
68
+
69
+
70
70
  # gather up and return configuration .yml filepaths that exist on-disk
71
71
  def find_config_plugins(config)
72
72
  plugins_with_path = []
73
-
73
+
74
74
  config[:plugins][:load_paths].each do |root|
75
75
  config[:plugins][:enabled].each do |plugin|
76
76
  config_plugin_path = File.join(root, plugin, "config", "#{plugin}.yml")
@@ -81,15 +81,15 @@ class ConfiguratorPlugins
81
81
  end
82
82
  end
83
83
  end
84
-
85
- return plugins_with_path
84
+
85
+ return plugins_with_path
86
86
  end
87
87
 
88
-
88
+
89
89
  # gather up and return default .yml filepaths that exist on-disk
90
90
  def find_plugin_defaults(config)
91
91
  defaults_with_path = []
92
-
92
+
93
93
  config[:plugins][:load_paths].each do |root|
94
94
  config[:plugins][:enabled].each do |plugin|
95
95
  default_path = File.join(root, plugin, 'config', 'defaults.yml')
@@ -100,7 +100,7 @@ class ConfiguratorPlugins
100
100
  end
101
101
  end
102
102
 
103
- return defaults_with_path
103
+ return defaults_with_path
104
104
  end
105
-
105
+
106
106
  end
@@ -4,52 +4,9 @@ class GeneratorTestRunner
4
4
  constructor :configurator, :file_path_utils, :file_wrapper
5
5
 
6
6
  def find_test_cases(test_file)
7
- tests = []
8
- tests_and_line_numbers = []
9
- lines = []
10
-
11
- # if we don't have preprocessor assistance, do some basic preprocessing of our own
12
- if (not @configurator.project_use_test_preprocessor)
13
- source = @file_wrapper.read(test_file)
14
-
15
- # remove line comments
16
- source = source.gsub(/\/\/.*$/, '')
17
- # remove block comments
18
- source = source.gsub(/\/\*.*?\*\//m, '')
19
-
20
- # treat preprocessor directives as a logical line
21
- lines = source.split(/(^\s*\#.*$) | (;|\{|\}) /x) # match ;, {, and } as end of lines
22
- # otherwise, read the preprocessed file raw
23
- else
24
- lines = @file_wrapper.read( @file_path_utils.form_preprocessed_file_filepath(test_file) ).split(/;|\{|\}/)
25
- end
26
-
27
- # step 1. find test functions in (possibly preprocessed) file
28
- # (note that lines are not broken up at end of lines)
29
- lines.each do |line|
30
- if (line =~ /^\s*void\s+((T|t)est.*)\s*\(\s*(void)?\s*\)/m)
31
- tests << ($1.strip)
32
- end
33
- end
34
-
35
- # step 2. associate test functions with line numbers in (non-preprocessed) original file
36
- # (note that this time we must scan file contents broken up by end of lines)
37
- raw_lines = @file_wrapper.read(test_file).split("\n")
38
- raw_index = 0
39
-
40
- tests.each do |test|
41
- raw_lines[raw_index..-1].each_with_index do |line, index|
42
- # test function might be declared across lines; look for it by its name followed
43
- # by a few tell-tale signs
44
- if (line =~ /#{test}\s*($|\(|\()/)
45
- raw_index += (index + 1)
46
- tests_and_line_numbers << {:test => test, :line_number => raw_index}
47
- break
48
- end
49
- end
50
- end
51
-
52
- return tests_and_line_numbers
7
+ require 'generate_test_runner.rb'
8
+ @test_runner_generator ||= UnityTestRunnerGenerator.new( @configurator.get_runner_config )
9
+ return @test_runner_generator.find_tests(@file_wrapper.read(test_file))
53
10
  end
54
11
 
55
12
  def generate(module_name, runner_filepath, test_cases, mock_list, test_file_includes=[])
@@ -21,6 +21,7 @@ class Setupinator
21
21
  # note: configurator modifies the cmock section of the hash with a couple defaults to tie
22
22
  # project together - the modified hash is used to build cmock object
23
23
  @ceedling[:configurator].populate_defaults( config_hash )
24
+ @ceedling[:configurator].populate_unity_defaults( config_hash )
24
25
  @ceedling[:configurator].populate_cmock_defaults( config_hash )
25
26
  @ceedling[:configurator].find_and_merge_plugins( config_hash )
26
27
  @ceedling[:configurator].tools_setup( config_hash )
@@ -2,14 +2,14 @@
2
2
  module Ceedling
3
3
  module Version
4
4
  # @private
5
- GEM = "0.21.0"
5
+ GEM = "0.22.0"
6
6
  # @private
7
7
  CEEDLING = GEM
8
8
  # @private
9
- CEXCEPTION = "1.3.17"
9
+ CEXCEPTION = "1.3.1"
10
10
  # @private
11
- CMOCK = "2.4.2"
11
+ CMOCK = "2.4.3"
12
12
  # @private
13
- UNITY = "2.3.2"
13
+ UNITY = "2.4.0"
14
14
  end
15
15
  end
@@ -7,139 +7,26 @@ class ModuleGenerator < Plugin
7
7
 
8
8
  attr_reader :config
9
9
 
10
- def setup
11
-
12
- #---- New module templates
13
-
14
- @test_template = (<<-EOS).left_margin
15
- #include "unity.h"
16
- <%if defined?(MODULE_GENERATOR_TEST_INCLUDES) && (MODULE_GENERATOR_TEST_INCLUDES.class == Array) && !MODULE_GENERATOR_TEST_INCLUDES.empty?%>
17
- <%MODULE_GENERATOR_TEST_INCLUDES.each do |header_file|%>
18
- #include "<%=header_file%>"
19
- <%end%>
20
- <%end%>
21
- #include "<%=@context[:headername]%>"
22
-
23
- void setUp(void)
24
- {
25
- }
26
-
27
- void tearDown(void)
28
- {
29
- }
30
-
31
- void test_<%=name%>_needs_to_be_implemented(void)
32
- {
33
- <%="\t"%>TEST_IGNORE_MESSAGE("Implement me!");
34
- }
35
- EOS
10
+ def create(module_name, optz={})
36
11
 
37
- @source_template = (<<-EOS).left_margin
38
- <%if defined?(MODULE_GENERATOR_SOURCE_INCLUDES) && (MODULE_GENERATOR_SOURCE_INCLUDES.class == Array) && !MODULE_GENERATOR_SOURCE_INCLUDES.empty?%>
39
- <%MODULE_GENERATOR_SOURCE_INCLUDES.each do |header_file|%>
40
- #include "<%=header_file%>"
41
- <%end%>
42
- <%end%>
43
- #include "<%=@context[:headername]%>"
44
- EOS
12
+ require "generate_module.rb" #From Unity Scripts
45
13
 
46
- @header_template = (<<-EOS).left_margin
47
- #ifndef <%=@context[:name]%>_H
48
- #define <%=@context[:name]%>_H
49
-
50
- <%if defined?(MODULE_GENERATOR_HEADER_INCLUDES) && (MODULE_GENERATOR_HEADER_INCLUDES.class == Array) && !MODULE_GENERATOR_HEADER_INCLUDES.empty?%>
51
- <%MODULE_GENERATOR_HEADER_INCLUDES.each do |header_file|%>
52
- #include "<%=header_file%>"
53
- <%end%>
54
- <%end%>
55
-
56
- #endif // <%=@context[:name]%>_H
57
- EOS
58
- end
59
-
60
- def create(path, optz={})
61
-
62
- extract_context(path, optz)
63
-
64
- if !optz.nil? && (optz[:destroy] == true)
65
- @ceedling[:streaminator].stdout_puts "Destroying '#{path}'..."
66
- @files.each do |file|
67
- if File.exist?(file[:path])
68
- File.delete(file[:path])
69
- @ceedling[:streaminator].stdout_puts "File #{file[:path]} deleted"
70
- else
71
- @ceedling[:streaminator].stdout_puts "File #{file[:path]} does not exist!"
72
- end
73
- end
74
- exit
14
+ if ((!optz.nil?) && (optz[:destroy]))
15
+ UnityModuleGenerator.new( divine_options(optz) ).destroy(module_name)
16
+ else
17
+ UnityModuleGenerator.new( divine_options(optz) ).generate(module_name)
75
18
  end
76
-
77
- @ceedling[:streaminator].stdout_puts "Generating '#{path}'..."
78
-
79
- [File.dirname(@files[0][:path]), File.dirname(@files[1][:path])].each do |dir|
80
- makedirs(dir, {:verbose => true})
81
- end
82
-
83
- # define_name = headername.gsub(/\.h$/, '_H').upcase
84
-
85
- @files[0][:template] = @test_template
86
- @files[1][:template] = @source_template
87
- @files[2][:template] = @header_template
88
-
89
- @files.each do |file|
90
- if File.exist?(file[:path])
91
- @ceedling[:streaminator].stdout_puts "File #{file[:path]} already exists!"
92
- else
93
- File.open(file[:path], 'w') do |new_file|
94
- new_file << ERB.new(file[:template], 0, "<>").result(binding)
95
- end
96
- @ceedling[:streaminator].stdout_puts "File #{file[:path]} created"
97
- end
98
- end
99
-
100
19
  end
101
-
20
+
102
21
  private
103
-
104
- def extract_context(path, optz={})
105
- if (!defined?(MODULE_GENERATOR_PROJECT_ROOT) ||
106
- !defined?(MODULE_GENERATOR_SOURCE_ROOT) ||
107
- !defined?(MODULE_GENERATOR_TEST_ROOT))
108
- raise "You must have ':module_generator:project_root:', ':module_generator:source_root:' and ':module_generator:test_root:' defined in your Ceedling configuration file"
109
- end
110
-
111
- @context = {}
112
22
 
113
- @context[:paths] = {
114
- :base => @ceedling[:file_wrapper].get_expanded_path(MODULE_GENERATOR_PROJECT_ROOT).gsub('\\', '/').sub(/^\//, '').sub(/\/$/, ''),
115
- :src => MODULE_GENERATOR_SOURCE_ROOT.gsub('\\', '/').sub(/^\//, '').sub(/\/$/, ''),
116
- :test => MODULE_GENERATOR_TEST_ROOT.gsub('\\', '/').sub(/^\//, '').sub(/\/$/, '')
23
+ def divine_options(optz={})
24
+ {
25
+ :path_src => MODULE_GENERATOR_SOURCE_ROOT.gsub('\\', '/').sub(/^\//, '').sub(/\/$/, ''),
26
+ :path_inc => MODULE_GENERATOR_SOURCE_ROOT.gsub('\\', '/').sub(/^\//, '').sub(/\/$/, ''),
27
+ :path_tst => MODULE_GENERATOR_TEST_ROOT.gsub('\\', '/').sub(/^\//, '').sub(/\/$/, ''),
28
+ :pattern => optz[:pattern],
117
29
  }
118
-
119
- location = File.dirname(path.gsub('\\', '/'))
120
- location.sub!(/^\/?#{Regexp.escape(@context[:paths][:base])}\/?/i, '')
121
- location.sub!(/^\/?#{Regexp.escape(@context[:paths][:src])}\/?/i, '')
122
- location.sub!(/^\/?#{Regexp.escape(@context[:paths][:test])}\/?/i, '')
123
-
124
- @context[:location] = location
125
-
126
- @context[:name] = File.basename(path).sub(/\.[ch]$/, '')
127
-
128
- # p @context[:name]
129
-
130
- @context[:testname] = "test_#{@context[:name]}.c"
131
- @context[:sourcename] = "#{@context[:name]}.c"
132
- @context[:headername] = "#{@context[:name]}.h"
133
-
134
- # p @context
135
-
136
- @files = [
137
- {:path => File.join(MODULE_GENERATOR_PROJECT_ROOT, @context[:paths][:test], location, @context[:testname])},
138
- {:path => File.join(MODULE_GENERATOR_PROJECT_ROOT, @context[:paths][:src], location, @context[:sourcename])},
139
- {:path => File.join(MODULE_GENERATOR_PROJECT_ROOT, @context[:paths][:src], location, @context[:headername])}
140
- ]
141
-
142
- # p @files
143
30
  end
144
-
31
+
145
32
  end
@@ -2,13 +2,25 @@
2
2
  namespace :module do
3
3
 
4
4
  desc "Generate module (source, header and test files)"
5
- task :create, :module_path do |t, args|
6
- args[:module_path].split(/,/).each {|v| @ceedling[:module_generator].create(v) }
5
+ task :create, :module_path do |t, args|
6
+ files = [args[:module_path]] + (args.extras || [])
7
+ optz = {}
8
+ ["dh", "dih", "mch", "mvp"].each do |pat|
9
+ p = files.delete(pat)
10
+ optz[:pattern] = p unless p.nil?
11
+ end
12
+ files.each {|v| @ceedling[:module_generator].create(v, optz) }
7
13
  end
8
14
 
9
15
  desc "Destroy module (source, header and test files)"
10
16
  task :destroy, :module_path do |t, args|
11
- args[:module_path].split(/,/).each {|v| @ceedling[:module_generator].create(v, {:destroy => true}) }
17
+ files = [args[:module_path]] + (args.extras || [])
18
+ optz = { :destroy => true }
19
+ ["dh", "dih", "mch", "mvp"].each do |pat|
20
+ p = files.delete(pat)
21
+ optz[:pattern] = p unless p.nil?
22
+ end
23
+ files.each {|v| @ceedling[:module_generator].create(v, optz) }
12
24
  end
13
25
 
14
26
  end