move ceedling tests to test/unit-test
This commit is contained in:
119
test/unit-test/vendor/ceedling/plugins/module_generator/README.md
vendored
Normal file
119
test/unit-test/vendor/ceedling/plugins/module_generator/README.md
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
ceedling-module-generator
|
||||
=========================
|
||||
|
||||
## Overview
|
||||
|
||||
The module_generator plugin adds a pair of new commands to Ceedling, allowing
|
||||
you to make or remove modules according to predefined templates. WIth a single call,
|
||||
Ceedling can generate a source, header, and test file for a new module. If given a
|
||||
pattern, it can even create a series of submodules to support specific design patterns.
|
||||
Finally, it can just as easily remove related modules, avoiding the need to delete
|
||||
each individually.
|
||||
|
||||
Let's say, for example, that you want to create a single module named `MadScience`.
|
||||
|
||||
```
|
||||
ceedling module:create[MadScience]
|
||||
```
|
||||
|
||||
It says we're speaking to the module plugin, and we want to create a new module. The
|
||||
name of that module is between the brackets. It will keep this case, unless you have
|
||||
specified a different default (see configuration). It will create three files:
|
||||
`MadScience.c`, `MadScience.h`, and `TestMadScience.c`. *NOTE* that it is important that
|
||||
there are no spaces between the brackets. We know, it's annoying... but it's the rules.
|
||||
|
||||
You can also create an entire pattern of files. To do that, just add a second argument
|
||||
to the pattern ID. Something like this:
|
||||
|
||||
```
|
||||
ceedling module:create[SecretLair,mch]
|
||||
```
|
||||
|
||||
In this example, we'd create 9 files total: 3 headers, 3 source files, and 3 test files. These
|
||||
files would be named `SecretLairModel`, `SecretLairConductor`, and `SecretLairHardware`. Isn't
|
||||
that nice?
|
||||
|
||||
Similarly, you can create stubs for all functions in a header file just by making a single call
|
||||
to your handy `stub` feature, like this:
|
||||
|
||||
```
|
||||
ceedling module:stub[SecretLair]
|
||||
```
|
||||
|
||||
This call will look in SecretLair.h and will generate a file SecretLair.c that contains a stub
|
||||
for each function declared in the header! Even better, if SecretLair.c already exists, it will
|
||||
add only new functions, leaving your existing calls alone so that it doesn't cause any problems.
|
||||
|
||||
## Configuration
|
||||
|
||||
Enable the plugin in your project.yml by adding `module_generator`
|
||||
to the list of enabled plugins.
|
||||
|
||||
Then, like much of Ceedling, you can just run as-is with the defaults, or you can override those
|
||||
defaults for your own needs. For example, new source and header files will be automatically
|
||||
placed in the `src/` folder while tests will go in the `test/` folder. That's great if your project
|
||||
follows the default ceedling structure... but what if you have a different structure?
|
||||
|
||||
```
|
||||
:module_generator:
|
||||
:project_root: ./
|
||||
:source_root: source/
|
||||
:inc_root: includes/
|
||||
:test_root: tests/
|
||||
```
|
||||
|
||||
Now I've redirected the location where modules are going to be generated.
|
||||
|
||||
### Includes
|
||||
|
||||
You can make it so that all of your files are generated with a standard include list. This is done
|
||||
by adding to the `:includes` array. For example:
|
||||
|
||||
```
|
||||
:module_generator:
|
||||
:includes:
|
||||
:tst:
|
||||
- defs.h
|
||||
- board.h
|
||||
:src:
|
||||
- board.h
|
||||
```
|
||||
|
||||
### Boilerplates
|
||||
|
||||
You can specify the actual boilerplate used for each of your files. This is the handy place to
|
||||
put that corporate copyright notice (or maybe a copyleft notice, if that's your perference?)
|
||||
|
||||
```
|
||||
:module_generator:
|
||||
:boilerplates: |
|
||||
/***************************
|
||||
* This file is Awesome. *
|
||||
* That is All. *
|
||||
***************************/
|
||||
```
|
||||
|
||||
### Test Defines
|
||||
|
||||
You can specify the "#ifdef TEST" at the top of the test files with a custom define.
|
||||
This example will put a "#ifdef CEEDLING_TEST" at the top of the test files.
|
||||
|
||||
```
|
||||
:module_generator:
|
||||
:test_define: CEEDLING_TEST
|
||||
```
|
||||
|
||||
### Naming Convention
|
||||
|
||||
Finally, you can force a particular naming convention. Even if someone calls the generator
|
||||
with something like `MyNewModule`, if they have the naming convention set to `:caps`, it will
|
||||
generate files like `MY_NEW_MODULE.c`. This keeps everyone on your team behaving the same way.
|
||||
|
||||
Your options are as follows:
|
||||
|
||||
- `:bumpy` - BumpyFilesLooksLikeSo
|
||||
- `:camel` - camelFilesAreSimilarButStartLow
|
||||
- `:snake` - snake_case_is_all_lower_and_uses_underscores
|
||||
- `:caps` - CAPS_FEELS_LIKE_YOU_ARE_SCREAMING
|
||||
|
||||
|
4
test/unit-test/vendor/ceedling/plugins/module_generator/config/module_generator.yml
vendored
Normal file
4
test/unit-test/vendor/ceedling/plugins/module_generator/config/module_generator.yml
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
:module_generator:
|
||||
:project_root: ./
|
||||
:source_root: src/
|
||||
:test_root: test/
|
80
test/unit-test/vendor/ceedling/plugins/module_generator/lib/module_generator.rb
vendored
Normal file
80
test/unit-test/vendor/ceedling/plugins/module_generator/lib/module_generator.rb
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
require 'ceedling/plugin'
|
||||
require 'ceedling/constants'
|
||||
require 'erb'
|
||||
require 'fileutils'
|
||||
|
||||
class ModuleGenerator < Plugin
|
||||
|
||||
attr_reader :config
|
||||
|
||||
def create(module_name, optz={})
|
||||
|
||||
require "generate_module.rb" #From Unity Scripts
|
||||
|
||||
if ((!optz.nil?) && (optz[:destroy]))
|
||||
UnityModuleGenerator.new( divine_options(optz) ).destroy(module_name)
|
||||
else
|
||||
UnityModuleGenerator.new( divine_options(optz) ).generate(module_name)
|
||||
end
|
||||
end
|
||||
|
||||
def stub_from_header(module_name, optz={})
|
||||
require "cmock.rb" #From CMock
|
||||
stuboptz = divine_options(optz)
|
||||
pathname = optz[:path_inc] || optz[:path_src] || "src"
|
||||
filename = File.expand_path(optz[:module_root_path], File.join(pathname, module_name + ".h"))
|
||||
CMock.new(stuboptz).setup_skeletons(filename)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def divine_options(optz={})
|
||||
unity_generator_options =
|
||||
{
|
||||
:path_src => ((defined? MODULE_GENERATOR_SOURCE_ROOT ) ? MODULE_GENERATOR_SOURCE_ROOT.gsub('\\', '/').sub(/^\//, '').sub(/\/$/, '') : "src" ),
|
||||
:path_inc => ((defined? MODULE_GENERATOR_INC_ROOT ) ?
|
||||
MODULE_GENERATOR_INC_ROOT.gsub('\\', '/').sub(/^\//, '').sub(/\/$/, '')
|
||||
: (defined? MODULE_GENERATOR_SOURCE_ROOT ) ?
|
||||
MODULE_GENERATOR_SOURCE_ROOT.gsub('\\', '/').sub(/^\//, '').sub(/\/$/, '')
|
||||
: "src" ),
|
||||
:path_tst => ((defined? MODULE_GENERATOR_TEST_ROOT ) ? MODULE_GENERATOR_TEST_ROOT.gsub( '\\', '/').sub(/^\//, '').sub(/\/$/, '') : "test" ),
|
||||
:pattern => optz[:pattern],
|
||||
:test_prefix => ((defined? PROJECT_TEST_FILE_PREFIX ) ? PROJECT_TEST_FILE_PREFIX : "Test" ),
|
||||
:mock_prefix => ((defined? CMOCK_MOCK_PREFIX ) ? CMOCK_MOCK_PREFIX : "Mock" ),
|
||||
:includes => ((defined? MODULE_GENERATOR_INCLUDES ) ? MODULE_GENERATOR_INCLUDES : {} ),
|
||||
:boilerplates => ((defined? MODULE_GENERATOR_BOILERPLATES) ? MODULE_GENERATOR_BOILERPLATES : {} ),
|
||||
:naming => ((defined? MODULE_GENERATOR_NAMING ) ? MODULE_GENERATOR_NAMING : nil ),
|
||||
:update_svn => ((defined? MODULE_GENERATOR_UPDATE_SVN ) ? MODULE_GENERATOR_UPDATE_SVN : false ),
|
||||
:skeleton_path=> ((defined? MODULE_GENERATOR_SOURCE_ROOT ) ? MODULE_GENERATOR_SOURCE_ROOT.gsub('\\', '/').sub(/^\//, '').sub(/\/$/, '') : "src" ),
|
||||
:test_define => ((defined? MODULE_GENERATOR_TEST_DEFINE ) ? MODULE_GENERATOR_TEST_DEFINE : "TEST" ),
|
||||
}
|
||||
|
||||
# Read Boilerplate template file.
|
||||
if (defined? MODULE_GENERATOR_BOILERPLATE_FILES)
|
||||
|
||||
bf = MODULE_GENERATOR_BOILERPLATE_FILES
|
||||
|
||||
if !bf[:src].nil? && File.exists?(bf[:src])
|
||||
unity_generator_options[:boilerplates][:src] = File.read(bf[:src])
|
||||
end
|
||||
|
||||
if !bf[:inc].nil? && File.exists?(bf[:inc])
|
||||
unity_generator_options[:boilerplates][:inc] = File.read(bf[:inc])
|
||||
end
|
||||
|
||||
if !bf[:tst].nil? && File.exists?(bf[:tst])
|
||||
unity_generator_options[:boilerplates][:tst] = File.read(bf[:tst])
|
||||
end
|
||||
end
|
||||
|
||||
# If using "create[<module_root>:<module_name>]" option from command line.
|
||||
unless optz[:module_root_path].to_s.empty?
|
||||
unity_generator_options[:path_src] = File.join(optz[:module_root_path], unity_generator_options[:path_src])
|
||||
unity_generator_options[:path_inc] = File.join(optz[:module_root_path], unity_generator_options[:path_inc])
|
||||
unity_generator_options[:path_tst] = File.join(optz[:module_root_path], unity_generator_options[:path_tst])
|
||||
end
|
||||
|
||||
return unity_generator_options
|
||||
end
|
||||
|
||||
end
|
62
test/unit-test/vendor/ceedling/plugins/module_generator/module_generator.rake
vendored
Normal file
62
test/unit-test/vendor/ceedling/plugins/module_generator/module_generator.rake
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
|
||||
namespace :module do
|
||||
module_root_separator = ":"
|
||||
|
||||
desc "Generate module (source, header and test files)"
|
||||
task :create, :module_path do |t, args|
|
||||
files = [args[:module_path]] + (args.extras || [])
|
||||
optz = { :module_root_path => "" }
|
||||
["dh", "dih", "mch", "mvp", "src", "test"].each do |pat|
|
||||
p = files.delete(pat)
|
||||
optz[:pattern] = p unless p.nil?
|
||||
end
|
||||
files.each do |v|
|
||||
module_root_path, module_name = v.split(module_root_separator, 2)
|
||||
if module_name
|
||||
optz[:module_root_path] = module_root_path
|
||||
v = module_name
|
||||
end
|
||||
if (v =~ /^test_?/i)
|
||||
# If the name of the file starts with test, automatically treat it as one
|
||||
@ceedling[:module_generator].create(v.sub(/^test_?/i,''), optz.merge({:pattern => 'test'}))
|
||||
else
|
||||
# Otherwise, go through the normal procedure
|
||||
@ceedling[:module_generator].create(v, optz)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc "Generate module stubs from header"
|
||||
task :stub, :module_path do |t, args|
|
||||
files = [args[:module_path]] + (args.extras || [])
|
||||
optz = { :module_root_path => "" }
|
||||
files.each do |v|
|
||||
module_root_path, module_name = v.split(module_root_separator, 2)
|
||||
if module_name
|
||||
optz[:module_root_path] = module_root_path
|
||||
v = module_name
|
||||
end
|
||||
# Otherwise, go through the normal procedure
|
||||
@ceedling[:module_generator].stub_from_header(v, optz)
|
||||
end
|
||||
end
|
||||
|
||||
desc "Destroy module (source, header and test files)"
|
||||
task :destroy, :module_path do |t, args|
|
||||
files = [args[:module_path]] + (args.extras || [])
|
||||
optz = { :destroy => true, :module_root_path => "" }
|
||||
["dh", "dih", "mch", "mvp", "src", "test"].each do |pat|
|
||||
p = files.delete(pat)
|
||||
optz[:pattern] = p unless p.nil?
|
||||
end
|
||||
files.each do |v|
|
||||
module_root_path, module_name = v.split(module_root_separator, 2)
|
||||
if module_name
|
||||
optz[:module_root_path] = module_root_path
|
||||
v = module_name
|
||||
end
|
||||
@ceedling[:module_generator].create(v, optz)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
Reference in New Issue
Block a user