cxxproject 0.6.25 → 0.6.26

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,3 +2,4 @@ source :rubygems
2
2
  gem 'rspec'
3
3
  gem 'grit'
4
4
  gem 'roodi'
5
+ gem 'builder'
data/Gemfile.lock CHANGED
@@ -1,6 +1,7 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ builder (3.0.0)
4
5
  diff-lcs (1.1.3)
5
6
  grit (2.5.0)
6
7
  diff-lcs (~> 1.1)
@@ -14,8 +15,8 @@ GEM
14
15
  rspec-core (~> 2.11.0)
15
16
  rspec-expectations (~> 2.11.0)
16
17
  rspec-mocks (~> 2.11.0)
17
- rspec-core (2.11.0)
18
- rspec-expectations (2.11.1)
18
+ rspec-core (2.11.1)
19
+ rspec-expectations (2.11.2)
19
20
  diff-lcs (~> 1.1.3)
20
21
  rspec-mocks (2.11.1)
21
22
  ruby_parser (2.3.1)
@@ -26,6 +27,7 @@ PLATFORMS
26
27
  ruby
27
28
 
28
29
  DEPENDENCIES
30
+ builder
29
31
  grit
30
32
  roodi
31
33
  rspec
data/Rakefile.rb CHANGED
@@ -7,7 +7,7 @@ task :default => [:install]
7
7
 
8
8
  begin
9
9
  require 'rubygems/package_task'
10
- spec = Gem::Specification.load('cxx.gemspec')
10
+ spec = Gem::Specification.load('cxxproject.gemspec')
11
11
  Gem::PackageTask.new(spec){|pkg|}
12
12
 
13
13
  desc "install gem globally"
data/junit.rb ADDED
@@ -0,0 +1,91 @@
1
+ =begin
2
+
3
+ Copyright (c) 2012, Nathaniel Ritmeyer
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright notice,
10
+ this list of conditions and the following disclaimer.
11
+
12
+ 2. Redistributions in binary form must reproduce the above copyright
13
+ notice, this list of conditions and the following disclaimer in the
14
+ documentation and/or other materials provided with the distribution.
15
+
16
+ 3. Neither the name Nathaniel Ritmeyer nor the names of contributors to
17
+ this software may be used to endorse or promote products derived from this
18
+ software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
21
+ IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
24
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27
+ OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
30
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+
32
+ =end
33
+
34
+ require 'time'
35
+ require 'builder'
36
+ require 'rspec/core/formatters/base_formatter'
37
+
38
+ class JUnit < RSpec::Core::Formatters::BaseFormatter
39
+ def initialize output
40
+ super output
41
+ @test_results = []
42
+ end
43
+
44
+ def example_passed example
45
+ @test_results << example
46
+ end
47
+
48
+ def example_failed example
49
+ @test_results << example
50
+ end
51
+
52
+ def example_pending example
53
+ @test_results << example
54
+ end
55
+
56
+ def failure_details_for example
57
+ exception = example.metadata[:execution_result][:exception]
58
+ exception.nil? ? "" : "#{exception.message}\n#{format_backtrace(exception.backtrace, example).join("\n")}"
59
+ end
60
+
61
+ def full_name_for example
62
+ test_name = ""
63
+ current_example_group = example.metadata[:example_group]
64
+ until current_example_group.nil? do
65
+ test_name = "#{current_example_group[:description]}." + test_name
66
+ current_example_group = current_example_group[:example_group]
67
+ end
68
+ test_name << example.metadata[:description]
69
+ end
70
+
71
+ def dump_summary duration, example_count, failure_count, pending_count
72
+ builder = Builder::XmlMarkup.new :indent => 2
73
+ builder.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
74
+ builder.testsuite :errors => 0, :failures => failure_count, :skipped => pending_count, :tests => example_count, :time => duration, :timestamp => Time.now.iso8601 do
75
+ builder.properties
76
+ @test_results.each do |test|
77
+ builder.testcase :classname => full_name_for(test), :name => test.metadata[:full_description], :time => test.metadata[:execution_result][:run_time] do
78
+ case test.metadata[:execution_result][:status]
79
+ when "failed"
80
+ builder.failure :message => "failed #{test.metadata[:full_description]}", :type => "failed" do
81
+ builder.cdata! failure_details_for test
82
+ end
83
+ when "pending" then builder.skipped
84
+ end
85
+ end
86
+ end
87
+ end
88
+ output.puts builder.target!
89
+ end
90
+ end
91
+
@@ -99,11 +99,13 @@ module Cxxproject
99
99
  @printedCmdAlternate = false
100
100
  @lastCommand = nil
101
101
 
102
- if ALL_BUILDING_BLOCKS.include?(@name) and not self.instance_of?(BinaryLibrary)
103
- raise "building block already exists: #{name}"
104
- else
105
- ALL_BUILDING_BLOCKS[@name] = self
102
+ if ALL_BUILDING_BLOCKS.include?(@name)
103
+ existing_bb = ALL_BUILDING_BLOCKS[@name]
104
+ if not (existing_bb.class == BinaryLibrary && self.class == BinaryLibrary)
105
+ raise "building block already exists: #{name} of type #{ALL_BUILDING_BLOCKS[@name].class} conflicts with #{self.class}"
106
+ end
106
107
  end
108
+ ALL_BUILDING_BLOCKS[@name] = self
107
109
  end
108
110
 
109
111
  def set_config_name(x)
@@ -0,0 +1,19 @@
1
+ require 'cxxproject/buildingblocks/binary_library'
2
+ require 'cxxproject/buildingblocks/building_block'
3
+ require 'cxxproject/buildingblocks/executable'
4
+ require 'cxxproject/buildingblocks/source_library'
5
+ require 'cxxproject/buildingblocks/module'
6
+ require 'cxxproject/buildingblocks/custom_building_block'
7
+ =begin
8
+ -rw-rw-r-- 2 ckoestlin ckoestlin 2027 Jul 10 15:12 command_line.rb
9
+ -rw-rw-r-- 2 ckoestlin ckoestlin 688 Jul 10 15:12 custom_building_block.rb
10
+ -rw-rw-r-- 2 ckoestlin ckoestlin 7241 Jul 18 11:51 executable.rb
11
+ -rw-rw-r-- 2 ckoestlin ckoestlin 2047 Jul 10 15:12 has_dependencies_mixin.rb
12
+ -rw-rw-r-- 2 ckoestlin ckoestlin 297 Jul 10 15:12 has_includes_mixin.rb
13
+ -rw-rw-r-- 2 ckoestlin ckoestlin 792 Jul 10 15:12 has_libraries_mixin.rb
14
+ -rw-rw-r-- 2 ckoestlin ckoestlin 10084 Jul 18 12:24 has_sources_mixin.rb
15
+ -rw-rw-r-- 2 ckoestlin ckoestlin 4034 Jul 10 15:12 makefile.rb
16
+ -rw-rw-r-- 2 ckoestlin ckoestlin 775 Jul 10 15:12 module.rb
17
+ -rw-rw-r-- 2 ckoestlin ckoestlin 811 Jul 10 15:12 single_source.rb
18
+ -rw-rw-r-- 2 ckoestlin ckoestlin 3582 Jul 18 12:23 source_library.rb
19
+ =end
@@ -1,5 +1,5 @@
1
1
  module Cxxproject
2
- VERSION = "0.6.25"
2
+ VERSION = "0.6.26"
3
3
 
4
4
  class Version
5
5
  def self.cxxproject
@@ -3,7 +3,6 @@ require 'rubygems'
3
3
  require 'yaml'
4
4
  require 'rake/clean'
5
5
 
6
-
7
6
  require 'cxxproject/ext/string'
8
7
  require 'cxxproject/ext/hash'
9
8
 
@@ -15,6 +14,7 @@ require 'cxxproject/toolchain/provider'
15
14
  require 'cxxproject/version'
16
15
 
17
16
  require 'cxxproject/plugin_context'
17
+ require 'cxxproject/buildingblocks/building_blocks'
18
18
 
19
19
  require 'frazzle/frazzle'
20
20
  registry = Frazzle::Registry.new('cxxproject', '_', '')
data/rake_helper/spec.rb CHANGED
@@ -44,6 +44,7 @@ def new_rspec
44
44
  desc "Run examples"
45
45
  RSpec::Core::RakeTask.new() do |t|
46
46
  t.pattern = SPEC_PATTERN
47
+ t.rspec_opts = '-r ./junit.rb -f JUnit -o build/test_details.xml'
47
48
  end
48
49
 
49
50
  desc 'Run examples with coverage'
@@ -32,6 +32,26 @@ describe Cxxproject::BuildingBlock do
32
32
  deps.should == ['4', '2', '3', '1']
33
33
  end
34
34
 
35
+ it 'should generate an error if building block names conflict' do
36
+ expect {
37
+ Cxxproject::SourceLibrary.new('1')
38
+ Cxxproject::SourceLibrary.new('1')
39
+ }.should raise_exception
40
+ end
41
+
42
+ it 'should be possible to give several binary libs with the same name' do
43
+ Cxxproject::BinaryLibrary.new('1')
44
+ Cxxproject::BinaryLibrary.new('1')
45
+ end
46
+
47
+ it 'should be an error if the same name is used for different kinds of building blocks' do
48
+ expect {
49
+ Cxxproject::BinaryLibrary.new('1')
50
+ Cxxproject::SourceLibrary.new('1')
51
+ }.should raise_exception
52
+ end
53
+
54
+ =begin
35
55
  it 'should have the right output-directory' do
36
56
  lib1 = Cxxproject::SourceLibrary.new('lib1').set_sources(['test.cc'])
37
57
  lib1.set_project_dir(File.join(Dir.pwd, 'lib1'))
@@ -54,5 +74,5 @@ describe Cxxproject::BuildingBlock do
54
74
  cxx = CxxProject2Rake.new([], 'build', compiler)
55
75
  end.to raise_exception(RuntimeError, 'Error: while reading config file for 1: dependent building block "unresolved" was specified but not found!')
56
76
  end
57
-
77
+ =end
58
78
  end
@@ -21,7 +21,6 @@ describe CxxProject2Rake do
21
21
  CxxProject2Rake.new(project_configs, outputdir, 'gcc', base)
22
22
  end
23
23
 
24
-
25
24
  # def is_older? fileA, fileB
26
25
  # File.mtime(fileA) < File.mtime(fileB)
27
26
  # end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cxxproject
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.25
4
+ version: 0.6.26
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-18 00:00:00.000000000 Z
12
+ date: 2012-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: colored
@@ -58,7 +58,7 @@ files:
58
58
  - LICENSE
59
59
  - README.md
60
60
  - Rakefile.rb
61
- - cxx.gemspec
61
+ - cxxproject.gemspec
62
62
  - example/.gitignore
63
63
  - example/Rakefile.rb
64
64
  - example/big_project/.gitignore
@@ -109,8 +109,11 @@ files:
109
109
  - example/three_tests/suite2/project.rb
110
110
  - example/three_tests/suite2/suite2.cpp
111
111
  - example/three_tests/suite2/suite2.h
112
+ - junit.rb
113
+ - lib/cxxproject.rb
112
114
  - lib/cxxproject/buildingblocks/binary_library.rb
113
115
  - lib/cxxproject/buildingblocks/building_block.rb
116
+ - lib/cxxproject/buildingblocks/building_blocks.rb
114
117
  - lib/cxxproject/buildingblocks/command_line.rb
115
118
  - lib/cxxproject/buildingblocks/custom_building_block.rb
116
119
  - lib/cxxproject/buildingblocks/executable.rb
@@ -123,7 +126,6 @@ files:
123
126
  - lib/cxxproject/buildingblocks/single_source.rb
124
127
  - lib/cxxproject/buildingblocks/source_library.rb
125
128
  - lib/cxxproject/context.rb
126
- - lib/cxxproject/cxxproject.rb
127
129
  - lib/cxxproject/errorparser/error_parser.rb
128
130
  - lib/cxxproject/ext/file.rb
129
131
  - lib/cxxproject/ext/filelist.rb
@@ -166,12 +168,12 @@ files:
166
168
  - rake_helper/spec.rb
167
169
  - roodi.yml
168
170
  - spec/building_block_spec.rb
169
- - spec/cxxproject_2_rake_spec.rb
171
+ - spec/cxxproject_2_rake_spe.rb
170
172
  - spec/file_ext_spec.rb
171
173
  - spec/ide_interface_spec.rb
172
- - spec/object_dependency_spec.rb
174
+ - spec/object_dependency_spe.rb
173
175
  - spec/plugin_context_spec.rb
174
- - spec/project_path_spec.rb
176
+ - spec/project_path_spe.rb
175
177
  - spec/provider_spec.rb
176
178
  - spec/rake_listener_ext_spec.rb
177
179
  - spec/spec_helper.rb
@@ -218,7 +220,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
218
220
  version: '0'
219
221
  segments:
220
222
  - 0
221
- hash: 4173282394159847515
223
+ hash: -4608833184588443303
222
224
  required_rubygems_version: !ruby/object:Gem::Requirement
223
225
  none: false
224
226
  requirements:
File without changes