ceedling 0.22.0 → 0.24.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.
- checksums.yaml +4 -4
- data/Gemfile +3 -2
- data/Gemfile.lock +0 -1
- data/README.md +31 -100
- data/bin/ceedling +29 -9
- data/ceedling.gemspec +1 -1
- data/docs/CeedlingPacket.md +7 -59
- data/lib/ceedling/configurator.rb +55 -55
- data/lib/ceedling/version.rb +1 -1
- data/lib/ceedling/version.rb.erb +1 -1
- data/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +4 -0
- data/vendor/c_exception/vendor/unity/src/unity.c +4 -4
- data/vendor/cmock/vendor/c_exception/vendor/unity/auto/generate_test_runner.rb +4 -0
- data/vendor/cmock/vendor/c_exception/vendor/unity/src/unity.c +4 -4
- data/vendor/cmock/vendor/unity/auto/generate_test_runner.rb +4 -0
- data/vendor/cmock/vendor/unity/src/unity.c +4 -4
- data/vendor/unity/auto/generate_test_runner.rb +4 -0
- data/vendor/unity/src/unity.c +4 -4
- metadata +2 -17
- data/ceedling-0.21.0.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 300e156b4f9cbd9bfbea4221b4773dbe3cf122f8
|
|
4
|
+
data.tar.gz: 823a00ec8ef37579f01e9d444d45d01b6a9cd0f0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8ffe3c8e7a34b6f1cbfd3571a6fd47af2312b7d11a2be722a95587e6cacc4282683614d7e976e7114d442ab0f2efd4ef4fc0a7e6868a7d050c21bb73e7ef84f9
|
|
7
|
+
data.tar.gz: c9fe93d947af1d5dea5d4f0b3af34f922ed21467364371bd6c2d83c2ec407f9d211baf71a2fe47578cbe7656147c6ed81435b0d0fd1a3ac13e003b211a93a05a
|
data/Gemfile
CHANGED
|
@@ -9,7 +9,8 @@ gem "constructor"
|
|
|
9
9
|
gem "diy"
|
|
10
10
|
gem "rr"
|
|
11
11
|
gem "thor"
|
|
12
|
-
gem "curses"
|
|
13
12
|
|
|
13
|
+
#these will be used if present, but ignored otherwise
|
|
14
|
+
#gem "curses"
|
|
14
15
|
#gem "pty", :platforms => [ :ruby ] #automatically included on *nix platforms
|
|
15
|
-
gem "popen4", :platforms => [ :mswin ]
|
|
16
|
+
#gem "popen4", :platforms => [ :mswin ]
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -29,107 +29,38 @@ If bundler isn't installed on your system or you run into problems, you might ha
|
|
|
29
29
|
|
|
30
30
|
> sudo gem install bundler
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
Pulling Ceedling inside a Project
|
|
33
|
+
=================================
|
|
34
34
|
|
|
35
35
|
Ceedling can deploy all of its guts into a folder. This allows it
|
|
36
36
|
to be used without having to worry about external dependencies.
|
|
37
|
+
You don't have to worry about Ceedling changing for this particular
|
|
38
|
+
project just because you updated your gems.
|
|
39
|
+
|
|
40
|
+
ceedling new YourNewProjectName
|
|
41
|
+
|
|
42
|
+
This will install all of Unity, CMock, and Ceedling into a new folder
|
|
43
|
+
named YourNewProjectName. It will also create a simple directory structure
|
|
44
|
+
for you with src and test folders. SCORE! It's also creates a simple
|
|
45
|
+
rakefile and project.yml file that you can tweak to your own needs.
|
|
46
|
+
|
|
47
|
+
It'll also include documentation for all of these tools, unless you
|
|
48
|
+
specify --nodocs at when you issue the command above... then it skips
|
|
49
|
+
that step for you.
|
|
50
|
+
|
|
51
|
+
Using Ceedling From A Ruby Gem
|
|
52
|
+
==============================
|
|
53
|
+
|
|
54
|
+
Ceedling can also be used as a gem. By installing it this way, you
|
|
55
|
+
can automatically update to the latest version of Ceedling, Unity,
|
|
56
|
+
and CMock just by running an update on your gems. Use this if you
|
|
57
|
+
are only running one project OR if you feel you want to keep all
|
|
58
|
+
your projects up to date.
|
|
59
|
+
|
|
60
|
+
ceedling new YourNewProjectName --as_gem
|
|
61
|
+
|
|
62
|
+
This creates a new folder named YourNewProjectName. Inside it will be your
|
|
63
|
+
shiny new project file, rakefile, and a couple of src and test directories
|
|
64
|
+
to get you started. You can then tweak all of those things to your heart's
|
|
65
|
+
content.
|
|
37
66
|
|
|
38
|
-
ceedling new [your new project name]
|
|
39
|
-
|
|
40
|
-
Using Ceedling outside of a project as a gem
|
|
41
|
-
============================================
|
|
42
|
-
|
|
43
|
-
Ceedling can also be used as a gem. The following Rakefile is the
|
|
44
|
-
bare minimum required in order to use Ceedling this way:
|
|
45
|
-
|
|
46
|
-
require 'ceedling'
|
|
47
|
-
Ceedling.load_project
|
|
48
|
-
|
|
49
|
-
If you want to load a Ceedling project YAML file other than the default `project.yml` (i.e. `./my_config.yml`), you can do:
|
|
50
|
-
|
|
51
|
-
Ceedling.load_project(config: './my_config.yml')
|
|
52
|
-
|
|
53
|
-
Additionally, a project.yml is required. Here is one to get you
|
|
54
|
-
started:
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
:project:
|
|
58
|
-
:use_exceptions: FALSE
|
|
59
|
-
:use_test_preprocessor: TRUE
|
|
60
|
-
:use_deep_dependencies: TRUE
|
|
61
|
-
:build_root: build
|
|
62
|
-
# :release_build: TRUE
|
|
63
|
-
:test_file_prefix: test_
|
|
64
|
-
|
|
65
|
-
#:release_build:
|
|
66
|
-
# :output: MyApp.out
|
|
67
|
-
# :use_assembly: FALSE
|
|
68
|
-
|
|
69
|
-
:environment:
|
|
70
|
-
|
|
71
|
-
:extension:
|
|
72
|
-
:executable: .out
|
|
73
|
-
|
|
74
|
-
:paths:
|
|
75
|
-
:test:
|
|
76
|
-
- +:test/**
|
|
77
|
-
- -:test/support
|
|
78
|
-
:source:
|
|
79
|
-
- src/**
|
|
80
|
-
:support:
|
|
81
|
-
- test/support
|
|
82
|
-
|
|
83
|
-
:defines:
|
|
84
|
-
# in order to add common defines:
|
|
85
|
-
# 1) remove the trailing [] from the :common: section
|
|
86
|
-
# 2) add entries to the :common: section (e.g. :test: has TEST defined)
|
|
87
|
-
:commmon: &common_defines []
|
|
88
|
-
:test:
|
|
89
|
-
- *common_defines
|
|
90
|
-
- TEST
|
|
91
|
-
:test_preprocess:
|
|
92
|
-
- *common_defines
|
|
93
|
-
- TEST
|
|
94
|
-
|
|
95
|
-
:cmock:
|
|
96
|
-
:when_no_prototypes: :warn
|
|
97
|
-
:enforce_strict_ordering: TRUE
|
|
98
|
-
:plugins:
|
|
99
|
-
- :ignore
|
|
100
|
-
:treat_as:
|
|
101
|
-
uint8: HEX8
|
|
102
|
-
uint16: HEX16
|
|
103
|
-
uint32: UINT32
|
|
104
|
-
int8: INT8
|
|
105
|
-
bool: UINT8
|
|
106
|
-
|
|
107
|
-
#:tools:
|
|
108
|
-
# Ceedling defaults to using gcc for compiling, linking, etc.
|
|
109
|
-
# As [:tools] is blank, gcc will be used (so long as it's in your system path)
|
|
110
|
-
# See documentation to configure a given toolchain for use
|
|
111
|
-
|
|
112
|
-
:plugins:
|
|
113
|
-
:load_paths:
|
|
114
|
-
# This is required to use builtin ceedling plugins
|
|
115
|
-
- "#{Ceedling.load_path}"
|
|
116
|
-
# Uncomment this and create the directory in order to use your own
|
|
117
|
-
# custom ceedling plugins
|
|
118
|
-
# - ceedling_plugins
|
|
119
|
-
:enabled:
|
|
120
|
-
# These plugins ship with Ceedling.
|
|
121
|
-
- stdout_pretty_tests_report
|
|
122
|
-
# - stdout_ide_tests_report # IDE parseable output
|
|
123
|
-
# - teamcity_tests_report # TeamCity CI output (only enabled in TeamCity builds)
|
|
124
|
-
- module_generator # Adds tasks for creating code module files
|
|
125
|
-
...
|
|
126
|
-
|
|
127
|
-
Finally, you'll need to create something like the following directory structure. This one matches the project.yml
|
|
128
|
-
defined above:
|
|
129
|
-
|
|
130
|
-
./test
|
|
131
|
-
./test/support
|
|
132
|
-
./src
|
|
133
|
-
./project.yml
|
|
134
|
-
./Rakefile
|
|
135
|
-
./build
|
data/bin/ceedling
CHANGED
|
@@ -132,6 +132,15 @@ unless (File.exists?("project.yml"))
|
|
|
132
132
|
puts " - Execute 'rake -T' to view available test & build tasks"
|
|
133
133
|
puts ''
|
|
134
134
|
end
|
|
135
|
+
|
|
136
|
+
desc "version", "return the version of the tools installed"
|
|
137
|
+
def version()
|
|
138
|
+
require 'ceedling/version.rb'
|
|
139
|
+
puts " Ceedling:: #{Ceedling::Version::CEEDLING}"
|
|
140
|
+
puts " CMock:: #{Ceedling::Version::CMOCK}"
|
|
141
|
+
puts " Unity:: #{Ceedling::Version::UNITY}"
|
|
142
|
+
puts " CException:: #{Ceedling::Version::CEXCEPTION}"
|
|
143
|
+
end
|
|
135
144
|
end
|
|
136
145
|
|
|
137
146
|
if (ARGV[0] =~ /^\-T$/)
|
|
@@ -184,18 +193,23 @@ else
|
|
|
184
193
|
|
|
185
194
|
#if neither of these libraries were available, we can just shell out to the command and collect results
|
|
186
195
|
def spawn_command(cmd, &block)
|
|
187
|
-
block.call( `#{cmd}` )
|
|
196
|
+
block.call( StringIO.new(`#{cmd}`) )
|
|
188
197
|
end
|
|
189
198
|
end
|
|
190
199
|
|
|
191
200
|
end
|
|
192
201
|
|
|
193
|
-
require 'curses'
|
|
194
202
|
require 'yaml'
|
|
195
203
|
require 'rbconfig'
|
|
196
204
|
|
|
197
|
-
|
|
198
|
-
cols =
|
|
205
|
+
#determine the width of the screen
|
|
206
|
+
cols = 80
|
|
207
|
+
begin
|
|
208
|
+
require 'curses'
|
|
209
|
+
Curses.init_screen()
|
|
210
|
+
cols = Curses.cols
|
|
211
|
+
rescue LoadError
|
|
212
|
+
end
|
|
199
213
|
|
|
200
214
|
#determine platform
|
|
201
215
|
platform = begin
|
|
@@ -230,23 +244,29 @@ else
|
|
|
230
244
|
|
|
231
245
|
#merge in project settings if they can be found here
|
|
232
246
|
yaml_options = YAML.load_file('project.yml')
|
|
233
|
-
options[:pretend_we_are_gtest] = (yaml_options[:plugins][:enabled].include? :stdout_gtestlike_tests_report)
|
|
234
|
-
|
|
247
|
+
options[:pretend_we_are_gtest] = (yaml_options[:plugins][:enabled].include? :stdout_gtestlike_tests_report) if (yaml_options[:plugins] && yaml_options[:plugins][:enabled])
|
|
248
|
+
if (yaml_options[:paths])
|
|
249
|
+
options[:add_path] = yaml_options[:paths][:tools] || []
|
|
250
|
+
else
|
|
251
|
+
options[:add_path] = []
|
|
252
|
+
end
|
|
235
253
|
|
|
236
254
|
#sort through command line options
|
|
237
255
|
options[:args]
|
|
238
256
|
ARGV.each do |v|
|
|
239
257
|
case(v)
|
|
240
|
-
when /^(?:new|examples?)$/
|
|
258
|
+
when /^(?:new|examples?|templates?)$/
|
|
241
259
|
puts "\nOops. You called ceedling with argument '#{v}'.\n" +
|
|
242
260
|
" This is an operation that will create a new project... \n" +
|
|
243
261
|
" but it looks like you're already in a project. If you really \n" +
|
|
244
262
|
" want to do this, try moving to an empty folder.\n\n"
|
|
245
263
|
abort
|
|
246
|
-
when
|
|
264
|
+
when /^--gtest/
|
|
247
265
|
options[:pretend_we_are_gtest] = true
|
|
248
|
-
when
|
|
266
|
+
when /^--debug/
|
|
249
267
|
options[:outfile] = "debug.txt"
|
|
268
|
+
when /^help$/
|
|
269
|
+
options[:args] += "-T "
|
|
250
270
|
else
|
|
251
271
|
options[:args] += v + " "
|
|
252
272
|
end
|
data/ceedling.gemspec
CHANGED
data/docs/CeedlingPacket.md
CHANGED
|
@@ -124,7 +124,7 @@ source file (plus two C header files) and from the nature of its
|
|
|
124
124
|
implementation - Unity will build in any C toolchain and is configurable
|
|
125
125
|
for even the very minimalist of processors.
|
|
126
126
|
|
|
127
|
-
[Unity]: http://
|
|
127
|
+
[Unity]: http://github.com/ThrowTheSwitch/Unity
|
|
128
128
|
[test]: http://en.wikipedia.org/wiki/Unit_testing
|
|
129
129
|
|
|
130
130
|
[CMock] is a tool written in Ruby able to generate entire
|
|
@@ -132,7 +132,7 @@ for even the very minimalist of processors.
|
|
|
132
132
|
functions are invaluable in [interaction-based unit testing][ut].
|
|
133
133
|
CMock's generated C code uses Unity.
|
|
134
134
|
|
|
135
|
-
[CMock]: http://
|
|
135
|
+
[CMock]: http://github.com/ThrowTheSwitch/CMock
|
|
136
136
|
[mock]: http://en.wikipedia.org/wiki/Mock_object
|
|
137
137
|
[ut]: http://martinfowler.com/articles/mocksArentStubs.html
|
|
138
138
|
|
|
@@ -142,7 +142,7 @@ CMock's generated C code uses Unity.
|
|
|
142
142
|
cleaner and preferable alternative to managing and passing error codes
|
|
143
143
|
up your return call trace.
|
|
144
144
|
|
|
145
|
-
[CException]: http://
|
|
145
|
+
[CException]: http://github.com/ThrowTheSwitch/CException
|
|
146
146
|
[exn]: http://en.wikipedia.org/wiki/Exception_handling
|
|
147
147
|
[setjmp]: http://en.wikipedia.org/wiki/Setjmp.h
|
|
148
148
|
|
|
@@ -164,74 +164,22 @@ As a [Ruby gem](http://docs.rubygems.org/read/chapter/1):
|
|
|
164
164
|
|
|
165
165
|
1. [Download and install Ruby](http://www.ruby-lang.org/en/downloads/)
|
|
166
166
|
|
|
167
|
-
2. Use Ruby's command line gem package manager to install
|
|
168
|
-
`gem install rake`
|
|
169
|
-
|
|
170
|
-
3. Use Ruby's command line gem package manager to install Ceedling:
|
|
167
|
+
2. Use Ruby's command line gem package manager to install Ceedling:
|
|
171
168
|
`gem install ceedling` {text:line-break} (Unity, CMock,
|
|
172
169
|
and CException come along with Ceedling for free)
|
|
173
170
|
|
|
174
|
-
|
|
171
|
+
3. Execute Ceedling at command line to create example project
|
|
175
172
|
or an empty Ceedling project in your filesystem (executing
|
|
176
173
|
`ceedling help` first is, well, helpful).
|
|
177
174
|
|
|
178
175
|
Gem install notes:
|
|
179
176
|
|
|
180
|
-
1. Steps 1-
|
|
181
|
-
When steps 1-
|
|
177
|
+
1. Steps 1-2 are a one time affair for your local environment.
|
|
178
|
+
When steps 1-2 are completed once, only step 3 is needed for
|
|
182
179
|
each new project.
|
|
183
180
|
|
|
184
181
|
|
|
185
182
|
|
|
186
|
-
Alternatively, from scratch:
|
|
187
|
-
|
|
188
|
-
1. [Download and install Ruby](http://www.ruby-lang.org/en/downloads/)
|
|
189
|
-
|
|
190
|
-
2. Use Ruby's command line gem package manager to install Rake:
|
|
191
|
-
`gem install rake`
|
|
192
|
-
|
|
193
|
-
3. Grab the Ceedling package (from sourceforge as download
|
|
194
|
-
or from svn) and place in your filesystem {text:line-break}
|
|
195
|
-
(it already contains Unity, CMock, and CException)
|
|
196
|
-
|
|
197
|
-
4. Create an empty build directory for your project {text:line-break}
|
|
198
|
-
(Ceedling will fill out the directory structure below the
|
|
199
|
-
build root when executed)
|
|
200
|
-
|
|
201
|
-
5. Create a simple Rakefile (`rakefile.rb`) that contains
|
|
202
|
-
a load call to Ceedling on your filesystem and a default task
|
|
203
|
-
(tasks available to tie to `default` are listed in the next
|
|
204
|
-
section):
|
|
205
|
-
|
|
206
|
-
```ruby
|
|
207
|
-
load '<path>/ceedling/lib/rakefile.rb'
|
|
208
|
-
# ex. run all tests & build release artifact
|
|
209
|
-
task :default => ['test:all', :release]
|
|
210
|
-
# namespaced tasks must be quoted
|
|
211
|
-
# top-level tasks are Ruby symbols denoted by a leading ':'`
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
6. Create your project YAML file (more on this later in this document).
|
|
215
|
-
`project.yml` is the default file name Ceedling recognizes
|
|
216
|
-
in the working directory from which Rake is run (Rake is the
|
|
217
|
-
tool we actually use to take advantage of what Ceedling provides).
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
From scratch install notes:
|
|
221
|
-
|
|
222
|
-
1. Steps 1-3 are a one time affair for your local environment.
|
|
223
|
-
When steps 1-3 are completed once, only steps 4-6 are needed
|
|
224
|
-
for each new project.
|
|
225
|
-
|
|
226
|
-
2. See the sample starter project for a working setup. When steps
|
|
227
|
-
1-3 are complete and assuming you have gcc in your path (Ceedling's
|
|
228
|
-
default toolchain), you will only need to edit the path within
|
|
229
|
-
the sample Rakefile (see step 5 above) to yield a working,
|
|
230
|
-
albeit simple, project. The default task need not be defined,
|
|
231
|
-
but it's not a bad idea to do so.
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
183
|
General notes:
|
|
236
184
|
|
|
237
185
|
1. Certain advanced features of Ceedling rely on gcc and cpp
|
|
@@ -9,14 +9,14 @@ class Configurator
|
|
|
9
9
|
|
|
10
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
|
|
14
14
|
@project_logging = false
|
|
15
15
|
@project_debug = false
|
|
16
16
|
@project_verbosity = Verbosity::NORMAL
|
|
17
17
|
@sanity_checks = TestResultsSanityChecks::NORMAL
|
|
18
18
|
end
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
def setup
|
|
21
21
|
# special copy of cmock config to provide to cmock for construction
|
|
22
22
|
@cmock_config_hash = {}
|
|
@@ -25,23 +25,23 @@ class Configurator
|
|
|
25
25
|
# in eval() statements in build() have something of proper scope and persistence to reference
|
|
26
26
|
@project_config_hash = {}
|
|
27
27
|
@project_config_hash_backup = {}
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
@script_plugins = []
|
|
30
30
|
@rake_plugins = []
|
|
31
31
|
end
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
|
|
33
|
+
|
|
34
34
|
def replace_flattened_config(config)
|
|
35
35
|
@project_config_hash.merge!(config)
|
|
36
36
|
@configurator_setup.build_constants_and_accessors(@project_config_hash, binding())
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
def store_config
|
|
41
41
|
@project_config_hash_backup = @project_config_hash.clone
|
|
42
42
|
end
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
|
|
44
|
+
|
|
45
45
|
def restore_config
|
|
46
46
|
@project_config_hash = @project_config_hash_backup
|
|
47
47
|
@configurator_setup.build_constants_and_accessors(@project_config_hash, binding())
|
|
@@ -72,13 +72,13 @@ class Configurator
|
|
|
72
72
|
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_TEST )
|
|
73
73
|
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_TEST_PREPROCESSORS ) if (config[:project][:use_test_preprocessor])
|
|
74
74
|
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_TEST_DEPENDENCIES ) if (config[:project][:use_deep_dependencies])
|
|
75
|
-
|
|
75
|
+
|
|
76
76
|
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_RELEASE ) if (config[:project][:release_build])
|
|
77
77
|
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_RELEASE_ASSEMBLER ) if (config[:project][:release_build] and config[:release_build][:use_assembly])
|
|
78
78
|
@configurator_builder.populate_defaults( config, DEFAULT_TOOLS_RELEASE_DEPENDENCIES ) if (config[:project][:release_build] and config[:project][:use_deep_dependencies])
|
|
79
79
|
end
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
|
|
81
|
+
|
|
82
82
|
def populate_unity_defaults(config)
|
|
83
83
|
unity = config[:unity] || {}
|
|
84
84
|
@runner_config = unity.merge(@runner_config || config[:test_runner] || {})
|
|
@@ -92,10 +92,10 @@ class Configurator
|
|
|
92
92
|
|
|
93
93
|
# yes, we're duplicating the default mock_prefix in cmock, but it's because we need CMOCK_MOCK_PREFIX always available in Ceedling's environment
|
|
94
94
|
cmock[:mock_prefix] = 'Mock' if (cmock[:mock_prefix].nil?)
|
|
95
|
-
|
|
95
|
+
|
|
96
96
|
# just because strict ordering is the way to go
|
|
97
97
|
cmock[:enforce_strict_ordering] = true if (cmock[:enforce_strict_ordering].nil?)
|
|
98
|
-
|
|
98
|
+
|
|
99
99
|
cmock[:mock_path] = File.join(config[:project][:build_root], TESTS_BASE_PATH, 'mocks') if (cmock[:mock_path].nil?)
|
|
100
100
|
cmock[:verbosity] = @project_verbosity if (cmock[:verbosity].nil?)
|
|
101
101
|
|
|
@@ -105,7 +105,7 @@ class Configurator
|
|
|
105
105
|
cmock[:plugins].uniq!
|
|
106
106
|
|
|
107
107
|
cmock[:unity_helper] = false if (cmock[:unity_helper].nil?)
|
|
108
|
-
|
|
108
|
+
|
|
109
109
|
if (cmock[:unity_helper])
|
|
110
110
|
cmock[:includes] << File.basename(cmock[:unity_helper])
|
|
111
111
|
cmock[:includes].uniq!
|
|
@@ -115,8 +115,8 @@ class Configurator
|
|
|
115
115
|
|
|
116
116
|
@cmock_builder.manufacture(cmock)
|
|
117
117
|
end
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
|
|
119
|
+
|
|
120
120
|
def get_runner_config
|
|
121
121
|
@runner_config
|
|
122
122
|
end
|
|
@@ -128,7 +128,7 @@ class Configurator
|
|
|
128
128
|
config[:tools].each_key do |name|
|
|
129
129
|
tool = config[:tools][name]
|
|
130
130
|
|
|
131
|
-
# populate name if not given
|
|
131
|
+
# populate name if not given
|
|
132
132
|
tool[:name] = name.to_s if (tool[:name].nil?)
|
|
133
133
|
|
|
134
134
|
# handle inline ruby string substitution in executable
|
|
@@ -146,8 +146,8 @@ class Configurator
|
|
|
146
146
|
tool[:optional] = false if (tool[:optional].nil?)
|
|
147
147
|
end
|
|
148
148
|
end
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
|
|
150
|
+
|
|
151
151
|
def tools_supplement_arguments(config)
|
|
152
152
|
tools_name_prefix = 'tools_'
|
|
153
153
|
config[:tools].each_key do |name|
|
|
@@ -171,49 +171,49 @@ class Configurator
|
|
|
171
171
|
path.replace(@system_wrapper.module_eval(path)) if (path =~ RUBY_STRING_REPLACEMENT_PATTERN)
|
|
172
172
|
FilePathUtils::standardize(path)
|
|
173
173
|
end
|
|
174
|
-
|
|
174
|
+
|
|
175
175
|
paths_hash = @configurator_plugins.add_load_paths(config)
|
|
176
|
-
|
|
176
|
+
|
|
177
177
|
@rake_plugins = @configurator_plugins.find_rake_plugins(config)
|
|
178
178
|
@script_plugins = @configurator_plugins.find_script_plugins(config)
|
|
179
179
|
config_plugins = @configurator_plugins.find_config_plugins(config)
|
|
180
180
|
plugin_defaults = @configurator_plugins.find_plugin_defaults(config)
|
|
181
|
-
|
|
181
|
+
|
|
182
182
|
config_plugins.each do |plugin|
|
|
183
183
|
config.deep_merge( @yaml_wrapper.load(plugin) )
|
|
184
184
|
end
|
|
185
|
-
|
|
185
|
+
|
|
186
186
|
plugin_defaults.each do |defaults|
|
|
187
187
|
@configurator_builder.populate_defaults( config, @yaml_wrapper.load(defaults) )
|
|
188
188
|
end
|
|
189
|
-
|
|
189
|
+
|
|
190
190
|
# special plugin setting for results printing
|
|
191
191
|
config[:plugins][:display_raw_test_results] = true if (config[:plugins][:display_raw_test_results].nil?)
|
|
192
|
-
|
|
192
|
+
|
|
193
193
|
paths_hash.each_pair { |name, path| config[:plugins][name] = path }
|
|
194
194
|
end
|
|
195
195
|
|
|
196
|
-
|
|
196
|
+
|
|
197
197
|
def eval_environment_variables(config)
|
|
198
198
|
config[:environment].each do |hash|
|
|
199
199
|
key = hash.keys[0]
|
|
200
200
|
value = hash[key]
|
|
201
201
|
items = []
|
|
202
|
-
|
|
202
|
+
|
|
203
203
|
interstitial = ((key == :path) ? File::PATH_SEPARATOR : '')
|
|
204
204
|
items = ((value.class == Array) ? hash[key] : [value])
|
|
205
|
-
|
|
205
|
+
|
|
206
206
|
items.each { |item| item.replace( @system_wrapper.module_eval( item ) ) if (item =~ RUBY_STRING_REPLACEMENT_PATTERN) }
|
|
207
207
|
hash[key] = items.join( interstitial )
|
|
208
|
-
|
|
208
|
+
|
|
209
209
|
@system_wrapper.env_set( key.to_s.upcase, hash[key] )
|
|
210
210
|
end
|
|
211
211
|
end
|
|
212
212
|
|
|
213
|
-
|
|
213
|
+
|
|
214
214
|
def eval_paths(config)
|
|
215
215
|
# [:plugins]:[load_paths] already handled
|
|
216
|
-
|
|
216
|
+
|
|
217
217
|
paths = [ # individual paths that don't follow convention processed below
|
|
218
218
|
config[:project][:build_root],
|
|
219
219
|
config[:release_build][:artifacts]]
|
|
@@ -223,16 +223,16 @@ class Configurator
|
|
|
223
223
|
config[:paths].each_pair { |collection, paths| eval_path_list( paths ) }
|
|
224
224
|
|
|
225
225
|
config[:files].each_pair { |collection, files| eval_path_list( files ) }
|
|
226
|
-
|
|
226
|
+
|
|
227
227
|
# all other paths at secondary hash key level processed by convention:
|
|
228
228
|
# ex. [:toplevel][:foo_path] & [:toplevel][:bar_paths] are evaluated
|
|
229
|
-
config.each_pair { |parent, child| eval_path_list( collect_path_list( child ) ) }
|
|
229
|
+
config.each_pair { |parent, child| eval_path_list( collect_path_list( child ) ) }
|
|
230
230
|
end
|
|
231
|
-
|
|
232
|
-
|
|
231
|
+
|
|
232
|
+
|
|
233
233
|
def standardize_paths(config)
|
|
234
234
|
# [:plugins]:[load_paths] already handled
|
|
235
|
-
|
|
235
|
+
|
|
236
236
|
paths = [ # individual paths that don't follow convention processed below
|
|
237
237
|
config[:project][:build_root],
|
|
238
238
|
config[:release_build][:artifacts]] # cmock path in case it was explicitly set in config
|
|
@@ -247,45 +247,45 @@ class Configurator
|
|
|
247
247
|
|
|
248
248
|
config[:files].each_pair { |collection, files| files.each{ |path| FilePathUtils::standardize( path ) } }
|
|
249
249
|
|
|
250
|
-
config[:tools].each_pair { |tool, config| FilePathUtils::standardize( config[:executable] ) }
|
|
251
|
-
|
|
250
|
+
config[:tools].each_pair { |tool, config| FilePathUtils::standardize( config[:executable] ) if (config.include? :executable) }
|
|
251
|
+
|
|
252
252
|
# all other paths at secondary hash key level processed by convention:
|
|
253
253
|
# ex. [:toplevel][:foo_path] & [:toplevel][:bar_paths] are standardized
|
|
254
254
|
config.each_pair do |parent, child|
|
|
255
255
|
collect_path_list( child ).each { |path| FilePathUtils::standardize( path ) }
|
|
256
|
-
end
|
|
256
|
+
end
|
|
257
257
|
end
|
|
258
258
|
|
|
259
259
|
|
|
260
260
|
def validate(config)
|
|
261
261
|
# collect felonies and go straight to jail
|
|
262
262
|
raise if (not @configurator_setup.validate_required_sections( config ))
|
|
263
|
-
|
|
263
|
+
|
|
264
264
|
# collect all misdemeanors, everybody on probation
|
|
265
265
|
blotter = []
|
|
266
266
|
blotter << @configurator_setup.validate_required_section_values( config )
|
|
267
267
|
blotter << @configurator_setup.validate_paths( config )
|
|
268
268
|
blotter << @configurator_setup.validate_tools( config )
|
|
269
269
|
blotter << @configurator_setup.validate_plugins( config )
|
|
270
|
-
|
|
270
|
+
|
|
271
271
|
raise if (blotter.include?( false ))
|
|
272
272
|
end
|
|
273
|
-
|
|
274
|
-
|
|
273
|
+
|
|
274
|
+
|
|
275
275
|
# create constants and accessors (attached to this object) from given hash
|
|
276
276
|
def build(config, *keys)
|
|
277
277
|
# create flattened & expanded configuration hash
|
|
278
278
|
built_config = @configurator_setup.build_project_config( config, @configurator_builder.flattenify( config ) )
|
|
279
|
-
|
|
279
|
+
|
|
280
280
|
@project_config_hash = built_config.clone
|
|
281
281
|
store_config()
|
|
282
282
|
|
|
283
283
|
@configurator_setup.build_constants_and_accessors(built_config, binding())
|
|
284
|
-
|
|
284
|
+
|
|
285
285
|
# top-level keys disappear when we flatten, so create global constants & accessors to any specified keys
|
|
286
286
|
keys.each do |key|
|
|
287
287
|
hash = { key => config[key] }
|
|
288
|
-
@configurator_setup.build_constants_and_accessors(hash, binding())
|
|
288
|
+
@configurator_setup.build_constants_and_accessors(hash, binding())
|
|
289
289
|
end
|
|
290
290
|
end
|
|
291
291
|
|
|
@@ -297,30 +297,30 @@ class Configurator
|
|
|
297
297
|
|
|
298
298
|
# flatten our addition hash
|
|
299
299
|
config_more_flattened = @configurator_builder.flattenify( config_more )
|
|
300
|
-
|
|
300
|
+
|
|
301
301
|
# merge our flattened hash with built hash from previous build
|
|
302
302
|
@project_config_hash.deep_merge!( config_more_flattened )
|
|
303
303
|
store_config()
|
|
304
304
|
|
|
305
305
|
# create more constants and accessors
|
|
306
306
|
@configurator_setup.build_constants_and_accessors(config_more_flattened, binding())
|
|
307
|
-
|
|
307
|
+
|
|
308
308
|
# recreate constants & update accessors with new merged, base values
|
|
309
309
|
config_more.keys.each do |key|
|
|
310
310
|
hash = { key => config_base[key] }
|
|
311
311
|
@configurator_setup.build_constants_and_accessors(hash, binding())
|
|
312
312
|
end
|
|
313
313
|
end
|
|
314
|
-
|
|
315
|
-
|
|
314
|
+
|
|
315
|
+
|
|
316
316
|
def insert_rake_plugins(plugins)
|
|
317
317
|
plugins.each do |plugin|
|
|
318
318
|
@project_config_hash[:project_rakefile_component_files] << plugin
|
|
319
319
|
end
|
|
320
320
|
end
|
|
321
|
-
|
|
321
|
+
|
|
322
322
|
### private ###
|
|
323
|
-
|
|
323
|
+
|
|
324
324
|
private
|
|
325
325
|
|
|
326
326
|
def collect_path_list( container )
|
|
@@ -328,12 +328,12 @@ class Configurator
|
|
|
328
328
|
container.each_key { |key| paths << container[key] if (key.to_s =~ /_path(s)?$/) } if (container.class == Hash)
|
|
329
329
|
return paths.flatten
|
|
330
330
|
end
|
|
331
|
-
|
|
331
|
+
|
|
332
332
|
def eval_path_list( paths )
|
|
333
333
|
paths.flatten.each do |path|
|
|
334
334
|
path.replace( @system_wrapper.module_eval( path ) ) if (path =~ RUBY_STRING_REPLACEMENT_PATTERN)
|
|
335
335
|
end
|
|
336
336
|
end
|
|
337
|
-
|
|
338
|
-
|
|
337
|
+
|
|
338
|
+
|
|
339
339
|
end
|
data/lib/ceedling/version.rb
CHANGED
data/lib/ceedling/version.rb.erb
CHANGED
|
@@ -23,6 +23,7 @@ class UnityTestRunnerGenerator
|
|
|
23
23
|
def self.default_options
|
|
24
24
|
{
|
|
25
25
|
:includes => [],
|
|
26
|
+
:defines => [],
|
|
26
27
|
:plugins => [],
|
|
27
28
|
:framework => :unity,
|
|
28
29
|
:test_prefix => "test|spec|should",
|
|
@@ -167,6 +168,9 @@ class UnityTestRunnerGenerator
|
|
|
167
168
|
output.puts('#include <setjmp.h>')
|
|
168
169
|
output.puts('#include <stdio.h>')
|
|
169
170
|
output.puts('#include "CException.h"') if @options[:plugins].include?(:cexception)
|
|
171
|
+
if (@options[:defines] && !@options[:defines].empty?)
|
|
172
|
+
@options[:defines].each {|d| output.puts("#define #{d}")}
|
|
173
|
+
end
|
|
170
174
|
if (@options[:header_file] && !@options[:header_file].empty?)
|
|
171
175
|
output.puts("#include \"#{File.basename(@options[:header_file])}\"")
|
|
172
176
|
else
|
|
@@ -733,13 +733,13 @@ void UnityAssertFloatSpecial(const _UF actual,
|
|
|
733
733
|
|
|
734
734
|
case UNITY_FLOAT_IS_NAN:
|
|
735
735
|
case UNITY_FLOAT_IS_NOT_NAN:
|
|
736
|
-
is_trait = isnan(actual);
|
|
736
|
+
is_trait = isnan(actual) ? 1 : 0;
|
|
737
737
|
break;
|
|
738
738
|
|
|
739
739
|
/* A determinate number is non infinite and not NaN. (therefore the opposite of the two above) */
|
|
740
740
|
case UNITY_FLOAT_IS_DET:
|
|
741
741
|
case UNITY_FLOAT_IS_NOT_DET:
|
|
742
|
-
if (isinf(actual)
|
|
742
|
+
if (isinf(actual) || isnan(actual))
|
|
743
743
|
is_trait = 0;
|
|
744
744
|
else
|
|
745
745
|
is_trait = 1;
|
|
@@ -876,13 +876,13 @@ void UnityAssertDoubleSpecial(const _UD actual,
|
|
|
876
876
|
|
|
877
877
|
case UNITY_FLOAT_IS_NAN:
|
|
878
878
|
case UNITY_FLOAT_IS_NOT_NAN:
|
|
879
|
-
is_trait = isnan(actual);
|
|
879
|
+
is_trait = isnan(actual) ? 1 : 0;
|
|
880
880
|
break;
|
|
881
881
|
|
|
882
882
|
/* A determinate number is non infinite and not NaN. (therefore the opposite of the two above) */
|
|
883
883
|
case UNITY_FLOAT_IS_DET:
|
|
884
884
|
case UNITY_FLOAT_IS_NOT_DET:
|
|
885
|
-
if (isinf(actual)
|
|
885
|
+
if (isinf(actual) || isnan(actual))
|
|
886
886
|
is_trait = 0;
|
|
887
887
|
else
|
|
888
888
|
is_trait = 1;
|
|
@@ -23,6 +23,7 @@ class UnityTestRunnerGenerator
|
|
|
23
23
|
def self.default_options
|
|
24
24
|
{
|
|
25
25
|
:includes => [],
|
|
26
|
+
:defines => [],
|
|
26
27
|
:plugins => [],
|
|
27
28
|
:framework => :unity,
|
|
28
29
|
:test_prefix => "test|spec|should",
|
|
@@ -167,6 +168,9 @@ class UnityTestRunnerGenerator
|
|
|
167
168
|
output.puts('#include <setjmp.h>')
|
|
168
169
|
output.puts('#include <stdio.h>')
|
|
169
170
|
output.puts('#include "CException.h"') if @options[:plugins].include?(:cexception)
|
|
171
|
+
if (@options[:defines] && !@options[:defines].empty?)
|
|
172
|
+
@options[:defines].each {|d| output.puts("#define #{d}")}
|
|
173
|
+
end
|
|
170
174
|
if (@options[:header_file] && !@options[:header_file].empty?)
|
|
171
175
|
output.puts("#include \"#{File.basename(@options[:header_file])}\"")
|
|
172
176
|
else
|
|
@@ -733,13 +733,13 @@ void UnityAssertFloatSpecial(const _UF actual,
|
|
|
733
733
|
|
|
734
734
|
case UNITY_FLOAT_IS_NAN:
|
|
735
735
|
case UNITY_FLOAT_IS_NOT_NAN:
|
|
736
|
-
is_trait = isnan(actual);
|
|
736
|
+
is_trait = isnan(actual) ? 1 : 0;
|
|
737
737
|
break;
|
|
738
738
|
|
|
739
739
|
/* A determinate number is non infinite and not NaN. (therefore the opposite of the two above) */
|
|
740
740
|
case UNITY_FLOAT_IS_DET:
|
|
741
741
|
case UNITY_FLOAT_IS_NOT_DET:
|
|
742
|
-
if (isinf(actual)
|
|
742
|
+
if (isinf(actual) || isnan(actual))
|
|
743
743
|
is_trait = 0;
|
|
744
744
|
else
|
|
745
745
|
is_trait = 1;
|
|
@@ -876,13 +876,13 @@ void UnityAssertDoubleSpecial(const _UD actual,
|
|
|
876
876
|
|
|
877
877
|
case UNITY_FLOAT_IS_NAN:
|
|
878
878
|
case UNITY_FLOAT_IS_NOT_NAN:
|
|
879
|
-
is_trait = isnan(actual);
|
|
879
|
+
is_trait = isnan(actual) ? 1 : 0;
|
|
880
880
|
break;
|
|
881
881
|
|
|
882
882
|
/* A determinate number is non infinite and not NaN. (therefore the opposite of the two above) */
|
|
883
883
|
case UNITY_FLOAT_IS_DET:
|
|
884
884
|
case UNITY_FLOAT_IS_NOT_DET:
|
|
885
|
-
if (isinf(actual)
|
|
885
|
+
if (isinf(actual) || isnan(actual))
|
|
886
886
|
is_trait = 0;
|
|
887
887
|
else
|
|
888
888
|
is_trait = 1;
|
|
@@ -23,6 +23,7 @@ class UnityTestRunnerGenerator
|
|
|
23
23
|
def self.default_options
|
|
24
24
|
{
|
|
25
25
|
:includes => [],
|
|
26
|
+
:defines => [],
|
|
26
27
|
:plugins => [],
|
|
27
28
|
:framework => :unity,
|
|
28
29
|
:test_prefix => "test|spec|should",
|
|
@@ -167,6 +168,9 @@ class UnityTestRunnerGenerator
|
|
|
167
168
|
output.puts('#include <setjmp.h>')
|
|
168
169
|
output.puts('#include <stdio.h>')
|
|
169
170
|
output.puts('#include "CException.h"') if @options[:plugins].include?(:cexception)
|
|
171
|
+
if (@options[:defines] && !@options[:defines].empty?)
|
|
172
|
+
@options[:defines].each {|d| output.puts("#define #{d}")}
|
|
173
|
+
end
|
|
170
174
|
if (@options[:header_file] && !@options[:header_file].empty?)
|
|
171
175
|
output.puts("#include \"#{File.basename(@options[:header_file])}\"")
|
|
172
176
|
else
|
|
@@ -733,13 +733,13 @@ void UnityAssertFloatSpecial(const _UF actual,
|
|
|
733
733
|
|
|
734
734
|
case UNITY_FLOAT_IS_NAN:
|
|
735
735
|
case UNITY_FLOAT_IS_NOT_NAN:
|
|
736
|
-
is_trait = isnan(actual);
|
|
736
|
+
is_trait = isnan(actual) ? 1 : 0;
|
|
737
737
|
break;
|
|
738
738
|
|
|
739
739
|
/* A determinate number is non infinite and not NaN. (therefore the opposite of the two above) */
|
|
740
740
|
case UNITY_FLOAT_IS_DET:
|
|
741
741
|
case UNITY_FLOAT_IS_NOT_DET:
|
|
742
|
-
if (isinf(actual)
|
|
742
|
+
if (isinf(actual) || isnan(actual))
|
|
743
743
|
is_trait = 0;
|
|
744
744
|
else
|
|
745
745
|
is_trait = 1;
|
|
@@ -876,13 +876,13 @@ void UnityAssertDoubleSpecial(const _UD actual,
|
|
|
876
876
|
|
|
877
877
|
case UNITY_FLOAT_IS_NAN:
|
|
878
878
|
case UNITY_FLOAT_IS_NOT_NAN:
|
|
879
|
-
is_trait = isnan(actual);
|
|
879
|
+
is_trait = isnan(actual) ? 1 : 0;
|
|
880
880
|
break;
|
|
881
881
|
|
|
882
882
|
/* A determinate number is non infinite and not NaN. (therefore the opposite of the two above) */
|
|
883
883
|
case UNITY_FLOAT_IS_DET:
|
|
884
884
|
case UNITY_FLOAT_IS_NOT_DET:
|
|
885
|
-
if (isinf(actual)
|
|
885
|
+
if (isinf(actual) || isnan(actual))
|
|
886
886
|
is_trait = 0;
|
|
887
887
|
else
|
|
888
888
|
is_trait = 1;
|
|
@@ -23,6 +23,7 @@ class UnityTestRunnerGenerator
|
|
|
23
23
|
def self.default_options
|
|
24
24
|
{
|
|
25
25
|
:includes => [],
|
|
26
|
+
:defines => [],
|
|
26
27
|
:plugins => [],
|
|
27
28
|
:framework => :unity,
|
|
28
29
|
:test_prefix => "test|spec|should",
|
|
@@ -167,6 +168,9 @@ class UnityTestRunnerGenerator
|
|
|
167
168
|
output.puts('#include <setjmp.h>')
|
|
168
169
|
output.puts('#include <stdio.h>')
|
|
169
170
|
output.puts('#include "CException.h"') if @options[:plugins].include?(:cexception)
|
|
171
|
+
if (@options[:defines] && !@options[:defines].empty?)
|
|
172
|
+
@options[:defines].each {|d| output.puts("#define #{d}")}
|
|
173
|
+
end
|
|
170
174
|
if (@options[:header_file] && !@options[:header_file].empty?)
|
|
171
175
|
output.puts("#include \"#{File.basename(@options[:header_file])}\"")
|
|
172
176
|
else
|
data/vendor/unity/src/unity.c
CHANGED
|
@@ -733,13 +733,13 @@ void UnityAssertFloatSpecial(const _UF actual,
|
|
|
733
733
|
|
|
734
734
|
case UNITY_FLOAT_IS_NAN:
|
|
735
735
|
case UNITY_FLOAT_IS_NOT_NAN:
|
|
736
|
-
is_trait = isnan(actual);
|
|
736
|
+
is_trait = isnan(actual) ? 1 : 0;
|
|
737
737
|
break;
|
|
738
738
|
|
|
739
739
|
/* A determinate number is non infinite and not NaN. (therefore the opposite of the two above) */
|
|
740
740
|
case UNITY_FLOAT_IS_DET:
|
|
741
741
|
case UNITY_FLOAT_IS_NOT_DET:
|
|
742
|
-
if (isinf(actual)
|
|
742
|
+
if (isinf(actual) || isnan(actual))
|
|
743
743
|
is_trait = 0;
|
|
744
744
|
else
|
|
745
745
|
is_trait = 1;
|
|
@@ -876,13 +876,13 @@ void UnityAssertDoubleSpecial(const _UD actual,
|
|
|
876
876
|
|
|
877
877
|
case UNITY_FLOAT_IS_NAN:
|
|
878
878
|
case UNITY_FLOAT_IS_NOT_NAN:
|
|
879
|
-
is_trait = isnan(actual);
|
|
879
|
+
is_trait = isnan(actual) ? 1 : 0;
|
|
880
880
|
break;
|
|
881
881
|
|
|
882
882
|
/* A determinate number is non infinite and not NaN. (therefore the opposite of the two above) */
|
|
883
883
|
case UNITY_FLOAT_IS_DET:
|
|
884
884
|
case UNITY_FLOAT_IS_NOT_DET:
|
|
885
|
-
if (isinf(actual)
|
|
885
|
+
if (isinf(actual) || isnan(actual))
|
|
886
886
|
is_trait = 0;
|
|
887
887
|
else
|
|
888
888
|
is_trait = 1;
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ceedling
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.24.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mike Karlesky, Mark VanderVoord
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2016-
|
|
13
|
+
date: 2016-11-16 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: thor
|
|
@@ -40,20 +40,6 @@ dependencies:
|
|
|
40
40
|
- - '>='
|
|
41
41
|
- !ruby/object:Gem::Version
|
|
42
42
|
version: 0.8.7
|
|
43
|
-
- !ruby/object:Gem::Dependency
|
|
44
|
-
name: curses
|
|
45
|
-
requirement: !ruby/object:Gem::Requirement
|
|
46
|
-
requirements:
|
|
47
|
-
- - '>='
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version: 1.0.0
|
|
50
|
-
type: :runtime
|
|
51
|
-
prerelease: false
|
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
53
|
-
requirements:
|
|
54
|
-
- - '>='
|
|
55
|
-
- !ruby/object:Gem::Version
|
|
56
|
-
version: 1.0.0
|
|
57
43
|
description: Ceedling provides a set of tools to deploy its guts in a folder or which
|
|
58
44
|
can be required in a Rakefile
|
|
59
45
|
email:
|
|
@@ -75,7 +61,6 @@ files:
|
|
|
75
61
|
- assets/rakefile_with_guts.rb
|
|
76
62
|
- assets/test_example_file.c
|
|
77
63
|
- bin/ceedling
|
|
78
|
-
- ceedling-0.21.0.gem
|
|
79
64
|
- ceedling.gemspec
|
|
80
65
|
- config/test_environment.rb
|
|
81
66
|
- docs/CeedlingPacket.md
|
data/ceedling-0.21.0.gem
DELETED
|
Binary file
|