ceedling 0.15.5 → 0.15.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -42,11 +42,8 @@ DEFAULT_TEST_FIXTURE_TOOL = {
42
42
  :arguments => [].freeze
43
43
  }
44
44
 
45
-
46
-
47
45
  DEFAULT_TEST_INCLUDES_PREPROCESSOR_TOOL = {
48
- # :executable => FilePathUtils.os_executable_ext('cpp').freeze, # disabled for OSX clang
49
- :executable => FilePathUtils.os_executable_ext('gcc').freeze, # OSX clang
46
+ :executable => FilePathUtils.os_executable_ext('gcc').freeze,
50
47
  :name => 'default_test_includes_preprocessor'.freeze,
51
48
  :stderr_redirect => StdErrRedirect::NONE.freeze,
52
49
  :background_exec => BackgroundExec::NONE.freeze,
@@ -62,10 +59,9 @@ DEFAULT_TEST_INCLUDES_PREPROCESSOR_TOOL = {
62
59
  {"-I$" => 'COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE'}.freeze,
63
60
  {"-D$" => 'COLLECTION_DEFINES_TEST_AND_VENDOR'}.freeze,
64
61
  {"-D$" => 'DEFINES_TEST_PREPROCESS'}.freeze,
65
- # "-DGNU_PREPROCESSOR".freeze,
66
62
  "-DGNU_COMPILER".freeze, # OSX clang
67
63
  '-w'.freeze,
68
- # '-nostdinc'.freeze,
64
+ # '-nostdinc'.freeze, # disabled temporarily due to stdio access violations on OSX
69
65
  "\"${1}\"".freeze
70
66
  ].freeze
71
67
  }
@@ -83,12 +79,19 @@ DEFAULT_TEST_FILE_PREPROCESSOR_TOOL = {
83
79
  {"-D$" => 'COLLECTION_DEFINES_TEST_AND_VENDOR'}.freeze,
84
80
  {"-D$" => 'DEFINES_TEST_PREPROCESS'}.freeze,
85
81
  "-DGNU_COMPILER".freeze,
86
- # '-nostdinc'.freeze,
82
+ # '-nostdinc'.freeze, # disabled temporarily due to stdio access violations on OSX
87
83
  "\"${1}\"".freeze,
88
84
  "-o \"${2}\"".freeze
89
85
  ].freeze
90
86
  }
91
87
 
88
+ # Disable the -MD flag for OSX LLVM Clang, since unsupported
89
+ if RUBY_PLATFORM =~ /darwin/ && `gcc --version 2> /dev/null` =~ /Apple LLVM version .* \(clang/m # OSX w/LLVM Clang
90
+ MD_FLAG = '' # Clang doesn't support the -MD flag
91
+ else
92
+ MD_FLAG = '-MD'
93
+ end
94
+
92
95
  DEFAULT_TEST_DEPENDENCIES_GENERATOR_TOOL = {
93
96
  :executable => FilePathUtils.os_executable_ext('gcc').freeze,
94
97
  :name => 'default_test_dependencies_generator'.freeze,
@@ -104,7 +107,7 @@ DEFAULT_TEST_DEPENDENCIES_GENERATOR_TOOL = {
104
107
  "-DGNU_COMPILER".freeze,
105
108
  "-MT \"${3}\"".freeze,
106
109
  '-MM'.freeze,
107
- # '-MD'.freeze, # OSX clang
110
+ MD_FLAG.freeze,
108
111
  '-MG'.freeze,
109
112
  "-MF \"${2}\"".freeze,
110
113
  "-c \"${1}\"".freeze,
@@ -127,7 +130,7 @@ DEFAULT_RELEASE_DEPENDENCIES_GENERATOR_TOOL = {
127
130
  "-DGNU_COMPILER".freeze,
128
131
  "-MT \"${3}\"".freeze,
129
132
  '-MM'.freeze,
130
- # '-MD'.freeze, # OSX clang
133
+ MD_FLAG.freeze,
131
134
  '-MG'.freeze,
132
135
  "-MF \"${2}\"".freeze,
133
136
  "-c \"${1}\"".freeze,
@@ -4,7 +4,7 @@ class Dependinator
4
4
  constructor :configurator, :project_config_manager, :test_includes_extractor, :file_path_utils, :rake_wrapper, :file_wrapper
5
5
 
6
6
  def touch_force_rebuild_files
7
- @file_wrapper.touch( @configurator.project_test_force_rebuild_filepath )
7
+ @file_wrapper.touch( @configurator.project_test_force_rebuild_filepath )
8
8
  @file_wrapper.touch( @configurator.project_release_force_rebuild_filepath ) if (@configurator.project_release_build)
9
9
  end
10
10
 
@@ -16,9 +16,8 @@ class Dependinator
16
16
 
17
17
 
18
18
  def enhance_release_file_dependencies(files)
19
- files.each do |filepath|
19
+ files.each do |filepath|
20
20
  @rake_wrapper[filepath].enhance( [@configurator.project_release_force_rebuild_filepath] ) if (@project_config_manager.release_config_changed)
21
- @rake_wrapper[filepath].enhance( [@configurator.ceedling_build_info_filepath] )
22
21
  end
23
22
  end
24
23
 
@@ -32,14 +31,12 @@ class Dependinator
32
31
 
33
32
  def enhance_runner_dependencies(runner_filepath)
34
33
  @rake_wrapper[runner_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
35
- @rake_wrapper[runner_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
36
34
  end
37
-
35
+
38
36
 
39
37
  def enhance_shallow_include_lists_dependencies(include_lists)
40
38
  include_lists.each do |include_list_filepath|
41
39
  @rake_wrapper[include_list_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
42
- @rake_wrapper[include_list_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
43
40
  end
44
41
  end
45
42
 
@@ -47,7 +44,6 @@ class Dependinator
47
44
  def enhance_preprocesed_file_dependencies(files)
48
45
  files.each do |filepath|
49
46
  @rake_wrapper[filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
50
- @rake_wrapper[filepath].enhance( [@configurator.ceedling_build_info_filepath] )
51
47
  end
52
48
  end
53
49
 
@@ -57,7 +53,6 @@ class Dependinator
57
53
  mocks_list.each do |mock_filepath|
58
54
  @rake_wrapper[mock_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
59
55
  @rake_wrapper[mock_filepath].enhance( [@configurator.cmock_unity_helper] ) if (@configurator.cmock_unity_helper)
60
- @rake_wrapper[mock_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
61
56
  @rake_wrapper[mock_filepath].enhance( [@configurator.cmock_build_info_filepath] )
62
57
  end
63
58
  end
@@ -66,7 +61,6 @@ class Dependinator
66
61
  def enhance_dependencies_dependencies(dependencies)
67
62
  dependencies.each do |dependencies_filepath|
68
63
  @rake_wrapper[dependencies_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
69
- @rake_wrapper[dependencies_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
70
64
  end
71
65
  end
72
66
 
@@ -74,14 +68,12 @@ class Dependinator
74
68
  def enhance_test_build_object_dependencies(objects)
75
69
  objects.each do |object_filepath|
76
70
  @rake_wrapper[object_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
77
- @rake_wrapper[object_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
78
71
  end
79
72
  end
80
-
73
+
81
74
 
82
75
  def enhance_results_dependencies(result_filepath)
83
76
  @rake_wrapper[result_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed)
84
- @rake_wrapper[result_filepath].enhance( [@configurator.ceedling_build_info_filepath] )
85
77
  end
86
78
 
87
79
 
@@ -1,6 +1,5 @@
1
1
  require 'ceedling/constants'
2
2
 
3
-
4
3
  class Generator
5
4
 
6
5
  constructor :configurator,
@@ -66,9 +65,11 @@ class Generator
66
65
 
67
66
  @streaminator.stdout_puts("Generating runner for #{module_name}...", Verbosity::NORMAL)
68
67
 
68
+ test_file_includes = [] # Empty list for now, since apparently unused
69
+
69
70
  # build runner file
70
71
  begin
71
- @generator_test_runner.generate(module_name, runner_filepath, test_cases, mock_list, [])
72
+ @generator_test_runner.generate(module_name, runner_filepath, test_cases, mock_list, test_file_includes)
72
73
  rescue
73
74
  raise
74
75
  ensure
@@ -52,13 +52,13 @@ class GeneratorTestRunner
52
52
  return tests_and_line_numbers
53
53
  end
54
54
 
55
- def generate(module_name, runner_filepath, test_cases, mock_list, mock_includes)
55
+ def generate(module_name, runner_filepath, test_cases, mock_list, test_file_includes=[])
56
56
  require 'generate_test_runner.rb'
57
57
  @test_runner_generator ||= UnityTestRunnerGenerator.new( @configurator.get_runner_config )
58
58
  @test_runner_generator.generate( module_name,
59
59
  runner_filepath,
60
60
  test_cases,
61
61
  mock_list,
62
- mock_includes)
62
+ test_file_includes)
63
63
  end
64
64
  end
@@ -1,38 +1,36 @@
1
1
  require 'ceedling/constants'
2
2
  require 'ceedling/file_path_utils'
3
-
3
+ require 'ceedling/version'
4
4
 
5
5
  desc "Display build environment version info."
6
6
  task :version do
7
- tools = [
8
- [' Ceedling', CEEDLING_ROOT],
7
+ puts " Ceedling:: #{Ceedling::VERSION::Ceedling}"
8
+
9
+ [
9
10
  ['CException', File.join( CEEDLING_VENDOR, CEXCEPTION_ROOT_PATH)],
10
11
  [' CMock', File.join( CEEDLING_VENDOR, CMOCK_ROOT_PATH)],
11
12
  [' Unity', File.join( CEEDLING_VENDOR, UNITY_ROOT_PATH)],
12
- ]
13
-
14
- tools.each do |tool|
13
+ ].each do |tool|
15
14
  name = tool[0]
16
15
  base_path = tool[1]
17
-
16
+
18
17
  version_string = @ceedling[:file_wrapper].read( File.join(base_path, 'release', 'version.info') ).strip
19
18
  build_string = @ceedling[:file_wrapper].read( File.join(base_path, 'release', 'build.info') ).strip
20
19
  puts "#{name}:: #{version_string.empty? ? '#.#.' : (version_string + '.')}#{build_string.empty? ? '?' : build_string}"
21
20
  end
22
21
  end
23
22
 
24
-
25
23
  desc "Set verbose output (silent:[#{Verbosity::SILENT}] - obnoxious:[#{Verbosity::OBNOXIOUS}])."
26
24
  task :verbosity, :level do |t, args|
27
25
  verbosity_level = args.level.to_i
28
-
26
+
29
27
  if (PROJECT_USE_MOCKS)
30
28
  # don't store verbosity level in setupinator's config hash, use a copy;
31
29
  # otherwise, the input configuration will change and trigger entire project rebuilds
32
30
  hash = @ceedling[:setupinator].config_hash[:cmock].clone
33
31
  hash[:verbosity] = verbosity_level
34
32
 
35
- @ceedling[:cmock_builder].manufacture( hash )
33
+ @ceedling[:cmock_builder].manufacture( hash )
36
34
  end
37
35
 
38
36
  @ceedling[:configurator].project_verbosity = verbosity_level
@@ -41,13 +39,11 @@ task :verbosity, :level do |t, args|
41
39
  verbose( ((verbosity_level >= Verbosity::OBNOXIOUS) ? true : false) )
42
40
  end
43
41
 
44
-
45
42
  desc "Enable logging"
46
43
  task :logging do
47
44
  @ceedling[:configurator].project_logging = true
48
45
  end
49
46
 
50
-
51
47
  # non advertised debug task
52
48
  task :debug do
53
49
  Rake::Task[:verbosity].invoke(Verbosity::DEBUG)
@@ -55,14 +51,12 @@ task :debug do
55
51
  @ceedling[:configurator].project_debug = true
56
52
  end
57
53
 
58
-
59
54
  # non advertised sanity checking task
60
55
  task :sanity_checks, :level do |t, args|
61
56
  check_level = args.level.to_i
62
57
  @ceedling[:configurator].sanity_checks = check_level
63
58
  end
64
59
 
65
-
66
60
  # list expanded environment variables
67
61
  if (not ENVIRONMENT.empty?)
68
62
  desc "List all configured environment variables."
@@ -72,11 +66,10 @@ task :environment do
72
66
  name = key.to_s.upcase
73
67
  puts " - #{name}: \"#{env[key]}\""
74
68
  end
75
- end
69
+ end
76
70
  end
77
71
  end
78
72
 
79
-
80
73
  namespace :options do
81
74
 
82
75
  COLLECTION_PROJECT_OPTIONS.each do |option_path|
@@ -2,7 +2,7 @@
2
2
  module Ceedling
3
3
  module Version
4
4
  # @private
5
- GEM = "0.15.5"
5
+ GEM = "0.15.6"
6
6
 
7
7
  # @private
8
8
  CEEDLING = GEM
@@ -2,7 +2,7 @@
2
2
  module Ceedling
3
3
  module Version
4
4
  # @private
5
- GEM = "0.15.5"
5
+ GEM = "0.15.6"
6
6
 
7
7
  # @private
8
8
  CEEDLING = "<%= versions["CEEDLING"] %>"
@@ -10,7 +10,7 @@ describe 'Ceedling' do
10
10
  # execute method
11
11
  location = Ceedling.location
12
12
  # validate results
13
- location.should == ceedling_path
13
+ expect(location).to eq(ceedling_path)
14
14
  end
15
15
  end
16
16
 
@@ -23,7 +23,7 @@ describe 'Ceedling' do
23
23
  # execute method
24
24
  location = Ceedling.load_path
25
25
  # validate results
26
- location.should == load_path
26
+ expect(location).to eq(load_path)
27
27
  end
28
28
  end
29
29
 
@@ -36,7 +36,7 @@ describe 'Ceedling' do
36
36
  # execute method
37
37
  location = Ceedling.rakefile
38
38
  # validate results
39
- location.should == rakefile_path
39
+ expect(location).to eq(rakefile_path)
40
40
  end
41
41
  end
42
42
 
@@ -47,11 +47,11 @@ describe 'Ceedling' do
47
47
  rakefile_path = File.join(File.dirname(__FILE__), '..').gsub('spec','lib')
48
48
  rakefile_path = File.join( rakefile_path, 'lib', 'ceedling', 'rakefile.rb' )
49
49
  # mocks/stubs/expected calls
50
- Ceedling.should_receive(:load).with(rakefile_path)
50
+ expect(Ceedling).to receive(:load).with(rakefile_path)
51
51
  # execute method
52
52
  Ceedling.load_project
53
53
  # validate results
54
- ENV['CEEDLING_MAIN_PROJECT_FILE'].should == './project.yml'
54
+ expect(ENV['CEEDLING_MAIN_PROJECT_FILE']).to eq('./project.yml')
55
55
  end
56
56
 
57
57
  it 'should load the project with the specified yaml file' do
@@ -60,11 +60,11 @@ describe 'Ceedling' do
60
60
  rakefile_path = File.join(File.dirname(__FILE__), '..').gsub('spec','lib')
61
61
  rakefile_path = File.join( rakefile_path, 'lib', 'ceedling', 'rakefile.rb' )
62
62
  # mocks/stubs/expected calls
63
- Ceedling.should_receive(:load).with(rakefile_path)
63
+ expect(Ceedling).to receive(:load).with(rakefile_path)
64
64
  # execute method
65
65
  Ceedling.load_project(config: './foo.yml')
66
66
  # validate results
67
- ENV['CEEDLING_MAIN_PROJECT_FILE'].should == './foo.yml'
67
+ expect(ENV['CEEDLING_MAIN_PROJECT_FILE']).to eq('./foo.yml')
68
68
  end
69
69
 
70
70
  it 'should load the project with the yaml file specified by the existing environment variable' do
@@ -73,11 +73,11 @@ describe 'Ceedling' do
73
73
  rakefile_path = File.join(File.dirname(__FILE__), '..').gsub('spec','lib')
74
74
  rakefile_path = File.join( rakefile_path, 'lib', 'ceedling', 'rakefile.rb' )
75
75
  # mocks/stubs/expected calls
76
- Ceedling.should_receive(:load).with(rakefile_path)
76
+ expect(Ceedling).to receive(:load).with(rakefile_path)
77
77
  # execute method
78
78
  Ceedling.load_project
79
79
  # validate results
80
- ENV['CEEDLING_MAIN_PROJECT_FILE'].should == './bar.yml'
80
+ expect(ENV['CEEDLING_MAIN_PROJECT_FILE']).to eq('./bar.yml')
81
81
  end
82
82
 
83
83
  it 'should load the project with the specified plugins enabled' do
@@ -88,15 +88,15 @@ describe 'Ceedling' do
88
88
  rakefile_path = File.join(File.dirname(__FILE__), '..').gsub('spec','lib')
89
89
  rakefile_path = File.join( rakefile_path, 'lib', 'ceedling', 'rakefile.rb' )
90
90
  # mocks/stubs/expected calls
91
- Gem::Specification.should_receive(:find_by_name).with('ceedling-foo').and_return(spec_double)
92
- spec_double.should_receive(:gem_dir).and_return('dummy/path')
93
- Ceedling.should_receive(:require).with('ceedling/defaults')
94
- Ceedling.should_receive(:load).with(rakefile_path)
91
+ expect(Gem::Specification).to receive(:find_by_name).with('ceedling-foo').and_return(spec_double)
92
+ expect(spec_double).to receive(:gem_dir).and_return('dummy/path')
93
+ expect(Ceedling).to receive(:require).with('ceedling/defaults')
94
+ expect(Ceedling).to receive(:load).with(rakefile_path)
95
95
  # execute method
96
96
  Ceedling.load_project( config: './foo.yml',
97
97
  plugins: ['foo'])
98
98
  # validate results
99
- ENV['CEEDLING_MAIN_PROJECT_FILE'].should == './foo.yml'
99
+ expect(ENV['CEEDLING_MAIN_PROJECT_FILE']).to eq('./foo.yml')
100
100
  end
101
101
 
102
102
  it 'should set the project root if the root key is provided' do
@@ -107,13 +107,13 @@ describe 'Ceedling' do
107
107
  rakefile_path = File.join(File.dirname(__FILE__), '..').gsub('spec','lib')
108
108
  rakefile_path = File.join( rakefile_path, 'lib', 'ceedling', 'rakefile.rb' )
109
109
  # mocks/stubs/expected calls
110
- Ceedling.should_receive(:load).with(rakefile_path)
110
+ expect(Ceedling).to receive(:load).with(rakefile_path)
111
111
  # execute method
112
112
  Ceedling.load_project( config: './foo.yml',
113
113
  root: './')
114
114
  # validate results
115
- ENV['CEEDLING_MAIN_PROJECT_FILE'].should == './foo.yml'
116
- PROJECT_ROOT.should == './'
115
+ expect(ENV['CEEDLING_MAIN_PROJECT_FILE']).to eq('./foo.yml')
116
+ expect(PROJECT_ROOT).to eq('./')
117
117
  end
118
118
  end
119
119
 
@@ -124,14 +124,14 @@ describe 'Ceedling' do
124
124
  DEFAULT_CEEDLING_CONFIG[:plugins][:load_paths].clear()
125
125
  spec_double = double('spec-double')
126
126
  # mocks/stubs/expected calls
127
- Gem::Specification.should_receive(:find_by_name).with('ceedling-foo').and_return(spec_double)
128
- spec_double.should_receive(:gem_dir).and_return('dummy/path')
129
- Ceedling.should_receive(:require).with('ceedling/defaults')
127
+ expect(Gem::Specification).to receive(:find_by_name).with('ceedling-foo').and_return(spec_double)
128
+ expect(spec_double).to receive(:gem_dir).and_return('dummy/path')
129
+ expect(Ceedling).to receive(:require).with('ceedling/defaults')
130
130
  # execute method
131
131
  Ceedling.register_plugin('foo')
132
132
  # validate results
133
- DEFAULT_CEEDLING_CONFIG[:plugins][:enabled].should == ["foo"]
134
- DEFAULT_CEEDLING_CONFIG[:plugins][:load_paths].should == ["dummy/path"]
133
+ expect(DEFAULT_CEEDLING_CONFIG[:plugins][:enabled]).to eq ["foo"]
134
+ expect(DEFAULT_CEEDLING_CONFIG[:plugins][:load_paths]).to eq(["dummy/path"])
135
135
  end
136
136
 
137
137
  it 'should register a plugin with an alternative prefix' do
@@ -140,14 +140,14 @@ describe 'Ceedling' do
140
140
  DEFAULT_CEEDLING_CONFIG[:plugins][:load_paths].clear()
141
141
  spec_double = double('spec-double')
142
142
  # mocks/stubs/expected calls
143
- Gem::Specification.should_receive(:find_by_name).with('prefix-foo').and_return(spec_double)
144
- spec_double.should_receive(:gem_dir).and_return('dummy/path')
145
- Ceedling.should_receive(:require).with('ceedling/defaults')
143
+ expect(Gem::Specification).to receive(:find_by_name).with('prefix-foo').and_return(spec_double)
144
+ expect(spec_double).to receive(:gem_dir).and_return('dummy/path')
145
+ expect(Ceedling).to receive(:require).with('ceedling/defaults')
146
146
  # execute method
147
147
  Ceedling.register_plugin('foo','prefix-')
148
148
  # validate results
149
- DEFAULT_CEEDLING_CONFIG[:plugins][:enabled].should == ["foo"]
150
- DEFAULT_CEEDLING_CONFIG[:plugins][:load_paths].should == ["dummy/path"]
149
+ expect(DEFAULT_CEEDLING_CONFIG[:plugins][:enabled]).to eq(["foo"])
150
+ expect(DEFAULT_CEEDLING_CONFIG[:plugins][:load_paths]).to eq(["dummy/path"])
151
151
  end
152
152
  end
153
153
  end
data/spec/par_map_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'ceedling/par_map'
2
2
 
3
- def short_task_should(n)
3
+ def short_task_should(n)
4
4
  done_count = 0
5
5
  par_map(n, [0.01] * (n - 1) + [0] * 10) do |seconds|
6
6
  sleep(seconds)
@@ -18,14 +18,14 @@ describe "par_map" do
18
18
  end
19
19
 
20
20
  it "should run shorter tasks while larger tasks are blocking (with 3 threads)" do
21
- short_task_should(3)
21
+ short_task_should(3)
22
22
  end
23
23
 
24
24
  it "should run shorter tasks while larger tasks are blocking (with 4 threads)" do
25
25
  short_task_should(4)
26
- end
26
+ end
27
27
 
28
- #the following two tests are still slightly nondeterministic and may occasionally
28
+ #the following two tests are still slightly nondeterministic and may occasionally
29
29
  # show false positives (though we think we've gotten it pretty stable)
30
30
  it "should collide if multiple threads are used" do
31
31
  is_running = false
@@ -40,18 +40,18 @@ describe "par_map" do
40
40
  sleep(0.01 * x)
41
41
  is_running = false
42
42
  end
43
- collision.should be true
43
+ expect(collision).to eq true
44
44
  end
45
45
 
46
46
  it "should be serial if only one thread is used" do
47
47
  is_running = false
48
48
  par_map(1, (1..5).to_a) do |x|
49
- is_running.should be false
49
+ expect(is_running).to eq false
50
50
  is_running = true
51
51
  sleep(0.01 * x)
52
52
  is_running = false
53
53
  end
54
54
  end
55
55
 
56
-
57
- end
56
+
57
+ end