buildr4osgi 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +176 -0
- data/NOTICE +6 -0
- data/README.rdoc +50 -0
- data/Rakefile +45 -0
- data/buildr4osgi.gemspec +40 -0
- data/lib/buildr4osgi/compile/compiler.rb +54 -0
- data/lib/buildr4osgi/compile/ecj-3.4.1.jar +0 -0
- data/lib/buildr4osgi/compile.rb +16 -0
- data/lib/buildr4osgi/eclipse/feature.rb +271 -0
- data/lib/buildr4osgi/eclipse/plugin.rb +22 -0
- data/lib/buildr4osgi/eclipse.rb +17 -0
- data/lib/buildr4osgi/nature/eclipse.rb +80 -0
- data/lib/buildr4osgi/nature/java.rb +32 -0
- data/lib/buildr4osgi/nature/nature.rb +156 -0
- data/lib/buildr4osgi/nature/osgi.rb +32 -0
- data/lib/buildr4osgi/nature/scala.rb +32 -0
- data/lib/buildr4osgi/nature.rb +23 -0
- data/lib/buildr4osgi/osgi/bundle.rb +275 -0
- data/lib/buildr4osgi/osgi/bundle_package.rb +80 -0
- data/lib/buildr4osgi/osgi/container.rb +140 -0
- data/lib/buildr4osgi/osgi/library_extension.rb +174 -0
- data/lib/buildr4osgi/osgi/packaging.rb +129 -0
- data/lib/buildr4osgi/osgi/project_extension.rb +324 -0
- data/lib/buildr4osgi/osgi/registry.rb +61 -0
- data/lib/buildr4osgi/osgi/resolving_strategies.rb +104 -0
- data/lib/buildr4osgi/osgi/version.rb +131 -0
- data/lib/buildr4osgi/osgi.rb +24 -0
- data/lib/buildr4osgi.rb +37 -0
- data/rakelib/checks.rake +57 -0
- data/rakelib/doc.rake +92 -0
- data/rakelib/jekylltask.rb +120 -0
- data/rakelib/package.rake +73 -0
- data/rakelib/release.rake +149 -0
- data/rakelib/rspec.rake +73 -0
- data/rakelib/setup.rake +54 -0
- data/rakelib/stage.rake +206 -0
- data/spec/compile/compiler_spec.rb +30 -0
- data/spec/eclipse/feature_spec.rb +295 -0
- data/spec/nature/eclipse_spec.rb +46 -0
- data/spec/nature/java_spec.rb +45 -0
- data/spec/nature/osgi_spec.rb +63 -0
- data/spec/nature/scala_spec.rb +45 -0
- data/spec/nature_spec.rb +144 -0
- data/spec/osgi/bundle_package_spec.rb +32 -0
- data/spec/osgi/bundle_spec.rb +202 -0
- data/spec/osgi/container_spec.rb +93 -0
- data/spec/osgi/library_extension_spec.rb +142 -0
- data/spec/osgi/packaging_spec.rb +340 -0
- data/spec/osgi/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/ECLIPSEF.RSA +0 -0
- data/spec/osgi/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/ECLIPSEF.SF +20 -0
- data/spec/osgi/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/MANIFEST.MF +28 -0
- data/spec/osgi/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/eclipse.inf +3 -0
- data/spec/osgi/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/about.html +28 -0
- data/spec/osgi/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/fragment.properties +12 -0
- data/spec/osgi/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/runtime_registry_compatibility.jar +0 -0
- data/spec/osgi/project_extension_spec.rb +662 -0
- data/spec/osgi/registry_spec.rb +50 -0
- data/spec/osgi/version_spec.rb +127 -0
- data/spec/spec_helpers.rb +85 -0
- data/spec/tmp/remote/eclipse/org.eclipse.debug.ui/3.4.1.v20080811_r341/org.eclipse.debug.ui-3.4.1.v20080811_r341.jar +0 -0
- data/spec/tmp/remote/eclipse/org.eclipse.debug.ui/3.4.1.v20080811_r341/org.eclipse.debug.ui-3.4.1.v20080811_r341.pom +82 -0
- data/spec/tmp/remote/org/slf4j/jcl104-over-slf4j/1.5.8/jcl104-over-slf4j-1.5.8-sources.jar +0 -0
- data/spec/tmp/remote/org/slf4j/jcl104-over-slf4j/1.5.8/jcl104-over-slf4j-1.5.8.jar +0 -0
- data/spec/tmp/remote/org/slf4j/jcl104-over-slf4j/1.5.8/jcl104-over-slf4j-1.5.8.pom +30 -0
- data/spec/tmp/remote/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8-sources.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8.pom +101 -0
- data/spec/tmp/remote/org/slf4j/slf4j-log4j12/1.5.8/slf4j-log4j12-1.5.8-sources.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-log4j12/1.5.8/slf4j-log4j12-1.5.8.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-log4j12/1.5.8/slf4j-log4j12-1.5.8.pom +56 -0
- metadata +142 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
+
# work for additional information regarding copyright ownership. The ASF
|
4
|
+
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
+
# "License"); you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
require File.join(File.dirname(__FILE__), '../spec_helpers')
|
17
|
+
|
18
|
+
describe 'Buildr::OSGiNature' do
|
19
|
+
|
20
|
+
it 'should be registered as :osgi' do
|
21
|
+
Buildr::Nature::Registry.get(:osgi).should_not nil
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should define some Eclipse options' do
|
25
|
+
osgi = Buildr::Nature::Registry.get(:osgi)
|
26
|
+
osgi.eclipse.natures.should include("org.eclipse.pde.PluginNature")
|
27
|
+
osgi.eclipse.builders.should == ["org.eclipse.pde.ManifestBuilder", "org.eclipse.pde.SchemaBuilder"]
|
28
|
+
osgi.eclipse.classpath_containers.should include("org.eclipse.pde.core.requiredPlugins")
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should apply when a plugin.xml file is present' do
|
32
|
+
foo = define('foo') {write('plugin.xml')}
|
33
|
+
osgi = Buildr::Nature::Registry.get(:osgi)
|
34
|
+
osgi.applies(foo).should be_true
|
35
|
+
foo.applicable_natures.should include(osgi)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should apply when a OSGi-INF directory is present' do
|
39
|
+
foo = define('foo') {write('OSGi-INF')}
|
40
|
+
osgi = Buildr::Nature::Registry.get(:osgi)
|
41
|
+
osgi.applies(foo).should be_true
|
42
|
+
foo.applicable_natures.should include(osgi)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should not apply when no OSGi specific files are present' do
|
46
|
+
bar = define('bar') {write('src/main/c++')}
|
47
|
+
osgi = Buildr::Nature::Registry.get(:osgi)
|
48
|
+
osgi.applies(bar).should_not be_true
|
49
|
+
bar.applicable_natures.should_not include(osgi)
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should write the right .project file' do
|
53
|
+
pending "waiting for the fix for BUILDR-300"
|
54
|
+
foo = define('foo') do
|
55
|
+
Buildr::write "plugin.xml", ""
|
56
|
+
Buildr::write "src/main/java/Hello.java", "public class Hello{}"
|
57
|
+
end
|
58
|
+
foo.task("eclipse").invoke
|
59
|
+
(File.exists? ".project").should be_true
|
60
|
+
File.read(".project").should match(/org.eclipse.pde.PluginNature/)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
+
# work for additional information regarding copyright ownership. The ASF
|
4
|
+
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
+
# "License"); you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
require File.join(File.dirname(__FILE__), '../spec_helpers')
|
17
|
+
|
18
|
+
describe 'Buildr::ScalaNature' do
|
19
|
+
|
20
|
+
it 'should be registered as :scala' do
|
21
|
+
Buildr::Nature::Registry.get(:scala).should_not nil
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should define some Eclipse options' do
|
25
|
+
scala = Buildr::Nature::Registry.get(:scala)
|
26
|
+
scala.eclipse.natures.should == ["ch.epfl.lamp.sdt.core.scalanature", "org.eclipse.jdt.core.javanature"]
|
27
|
+
scala.eclipse.builders.should include("ch.epfl.lamp.sdt.core.scalabuilder")
|
28
|
+
scala.eclipse.classpath_containers.should == ["ch.epfl.lamp.sdt.launching.SCALA_CONTAINER", "org.eclipse.jdt.launching.JRE_CONTAINER"]
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should apply when a scala source folder is present' do
|
32
|
+
foo = define('foo') {write('src/main/scala')}
|
33
|
+
scala = Buildr::Nature::Registry.get(:scala)
|
34
|
+
scala.applies(foo).should be_true
|
35
|
+
foo.applicable_natures.should include(scala)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should not apply when no scala source folder is present' do
|
39
|
+
bar = define('bar') {write('src/main/c++')}
|
40
|
+
scala = Buildr::Nature::Registry.get(:scala)
|
41
|
+
scala.applies(bar).should_not be_true
|
42
|
+
bar.applicable_natures.should_not include(scala)
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
data/spec/nature_spec.rb
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
+
# work for additional information regarding copyright ownership. The ASF
|
4
|
+
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
+
# "License"); you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
require File.join(File.dirname(__FILE__), '/spec_helpers')
|
17
|
+
|
18
|
+
|
19
|
+
describe Buildr::Nature do
|
20
|
+
|
21
|
+
before :all do
|
22
|
+
class DummyNature < Buildr::DefaultNature
|
23
|
+
def initialize()
|
24
|
+
super(:dummy)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
@dummy = DummyNature.new
|
28
|
+
class OtherDummyNature < Buildr::DefaultNature
|
29
|
+
def initialize()
|
30
|
+
super(:otherdummy)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
@otherdummy = OtherDummyNature.new
|
34
|
+
class InvalidNature < Buildr::DefaultNature
|
35
|
+
def initialize()
|
36
|
+
super(:dummy)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
@invalid = InvalidNature.new
|
40
|
+
end
|
41
|
+
|
42
|
+
after :all do
|
43
|
+
#empty the registry.
|
44
|
+
module Buildr
|
45
|
+
module Nature
|
46
|
+
module Registry
|
47
|
+
@registered_natures = DEFAULT.dup
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should accept new natures' do
|
54
|
+
lambda { Buildr::Nature::Registry.add_nature(@dummy) }.should_not raise_error
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should accept new natures to be placed before registered ones' do
|
58
|
+
lambda { Buildr::Nature::Registry.add_nature(@otherdummy, :dummy) }.should_not raise_error
|
59
|
+
lambda {Buildr::Nature::Registry.all().index(@otherdummy) <
|
60
|
+
Buildr::Nature::Registry.all().index(@otherdummy)}.should be_true
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'should not accept incorrect objects' do
|
64
|
+
lambda { Buildr::Nature::Registry.add_nature(define('uh')) }.should raise_error(RuntimeError, /uh is not a nature!/)
|
65
|
+
end
|
66
|
+
it 'should not accept duplicate natures' do
|
67
|
+
lambda { Buildr::Nature::Registry.add_nature(@invalid) }.should raise_error(RuntimeError, /A nature with the same id is already present/)
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should list all available natures' do
|
71
|
+
# We also have the Java and Scala natures in there.
|
72
|
+
Buildr::Nature::Registry.all().should include(@dummy)
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'should make natures available' do
|
76
|
+
Buildr::Nature::Registry.get(:dummy).should eql(@dummy)
|
77
|
+
Buildr::Nature::Registry.get("dummy").should eql(@dummy)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe Buildr::DefaultNature do
|
82
|
+
|
83
|
+
before :all do
|
84
|
+
class DummyNature < Buildr::DefaultNature
|
85
|
+
def initialize()
|
86
|
+
super(:dummy)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
@dummy = DummyNature.new
|
90
|
+
Buildr::Nature::Registry.add_nature(@dummy)
|
91
|
+
end
|
92
|
+
|
93
|
+
after :all do
|
94
|
+
#empty the registry.
|
95
|
+
module Buildr
|
96
|
+
module Nature
|
97
|
+
module Registry
|
98
|
+
@registered_natures = DEFAULT.dup
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'should never apply by default' do
|
105
|
+
default = Buildr::DefaultNature.new(:somenature)
|
106
|
+
default.applies(define('foo')).should eql(false)
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'should determine project natures from the applies method' do
|
110
|
+
class DummyNatureAlwaysApply < Buildr::DefaultNature
|
111
|
+
def initialize()
|
112
|
+
super(:always)
|
113
|
+
end
|
114
|
+
def applies(project)
|
115
|
+
true # always applies
|
116
|
+
end
|
117
|
+
end
|
118
|
+
always = DummyNatureAlwaysApply.new
|
119
|
+
Buildr::Nature::Registry.add_nature(always)
|
120
|
+
foo = define('foo')
|
121
|
+
foo.applicable_natures.should include(always)
|
122
|
+
#By default applies return false.
|
123
|
+
foo.applicable_natures.should_not include(@dummy)
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'should let projects define their natures' do
|
127
|
+
foo = define('foo', :natures => :dummy)
|
128
|
+
foo.applicable_natures.should include(@dummy)
|
129
|
+
bar = define('bar', :natures => [:dummy])
|
130
|
+
bar.applicable_natures.should include(@dummy)
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'should use the parent natures if no nature is defined on this project' do
|
134
|
+
dummy = @dummy
|
135
|
+
foo = define('foo', :natures => :dummy) do
|
136
|
+
bar = define('bar')
|
137
|
+
bar.applicable_natures.should include(dummy)
|
138
|
+
end
|
139
|
+
foo = define('foo2', :natures => :dummy) do
|
140
|
+
bar = define('bar', :natures => [])
|
141
|
+
bar.applicable_natures.should_not include(dummy)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
+
# work for additional information regarding copyright ownership. The ASF
|
4
|
+
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
+
# "License"); you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
require File.join(File.dirname(__FILE__), '../spec_helpers')
|
17
|
+
|
18
|
+
describe OSGi::BundlePackage do
|
19
|
+
|
20
|
+
it 'should have a nice string representation' do
|
21
|
+
package = OSGi::BundlePackage.new("my.package", "1.0.0")
|
22
|
+
package2 = OSGi::BundlePackage.new("my.package", "[1.0.0,2.0.0]")
|
23
|
+
package.to_s.should == "Package my.package; version [1.0.0,infinite)"
|
24
|
+
package2.to_s.should == "Package my.package; version [1.0.0,2.0.0]"
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should be able to know if it equals another bundle package' do
|
28
|
+
package = OSGi::BundlePackage.new("my.package", "1.0.0")
|
29
|
+
package2 = OSGi::BundlePackage.new("my.package", "1.0.0")
|
30
|
+
package.eql?(package2).should be_true
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,202 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
+
# work for additional information regarding copyright ownership. The ASF
|
4
|
+
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
+
# "License"); you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helpers')
|
17
|
+
|
18
|
+
Spec::Runner.configure do |config|
|
19
|
+
config.include Buildr4OSGi::SpecHelpers
|
20
|
+
end
|
21
|
+
|
22
|
+
describe OSGi::Bundle do
|
23
|
+
before :all do
|
24
|
+
manifest = <<-MANIFEST
|
25
|
+
Manifest-Version: 1.0
|
26
|
+
Bundle-ManifestVersion: 2
|
27
|
+
Bundle-SymbolicName: org.eclipse.core.resources; singleton:=true
|
28
|
+
Bundle-Version: 3.5.1.R_20090912
|
29
|
+
Bundle-ActivationPolicy: Lazy
|
30
|
+
MANIFEST
|
31
|
+
@bundle = OSGi::Bundle.fromManifest(Manifest.read(manifest), ".")
|
32
|
+
manifest2 = <<-MANIFEST
|
33
|
+
Manifest-Version: 1.0
|
34
|
+
Bundle-ManifestVersion: 2
|
35
|
+
Bundle-SymbolicName: org.eclipse.core.resources.x86; singleton:=true
|
36
|
+
Bundle-Version: 3.5.1.R_20090912
|
37
|
+
Bundle-ActivationPolicy: Lazy
|
38
|
+
Fragment-Host: org.eclipse.core.resources
|
39
|
+
MANIFEST
|
40
|
+
@fragment = OSGi::Bundle.fromManifest(Manifest.read(manifest2), ".")
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should read from a manifest' do
|
44
|
+
@bundle.name.should eql("org.eclipse.core.resources")
|
45
|
+
@bundle.version.to_s.should eql("3.5.1.R_20090912")
|
46
|
+
@bundle.lazy_start.should be_true
|
47
|
+
@bundle.start_level.should eql(4)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should be transformed as an artifact' do
|
51
|
+
@bundle.to_s.should eql("osgi:org.eclipse.core.resources:jar:3.5.1.R_20090912")
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should compare with its artifact definition' do
|
55
|
+
(@bundle <=> "osgi:org.eclipse.core.resources:jar:3.5.1.R_20090912").should == 0
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should recognize itself as a fragment' do
|
59
|
+
@fragment.fragment?.should be_true
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should return nil if no name is given in the manifest' do
|
63
|
+
manifest = <<-MANIFEST
|
64
|
+
Manifest-Version: 1.0
|
65
|
+
Bundle-ManifestVersion: 2
|
66
|
+
Bundle-Version: 3.5.1.R_20090912
|
67
|
+
Bundle-ActivationPolicy: Lazy
|
68
|
+
MANIFEST
|
69
|
+
OSGi::Bundle.fromManifest(Manifest.read(manifest), ".").should be_nil
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
describe OSGi::Bundle, "fromProject" do
|
75
|
+
it "should raise an exception if more than one bundle packaging is defined over the same project as it is not supported yet (BOSGI-16)" do
|
76
|
+
foo = define "foo", :version => "1.0" do
|
77
|
+
package(:bundle)
|
78
|
+
package(:bundle, :file => "file.jar").with :manifest => {"Require-Bundle" => "some stuff"}
|
79
|
+
end
|
80
|
+
lambda {OSGi::Bundle.fromProject(foo)}.should raise_error(RuntimeError,
|
81
|
+
/More than one bundle packaging is defined over the project .*, see BOSGI-16./)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should return nil if no bundle packaging is defined in the project" do
|
85
|
+
foo = define "foo"
|
86
|
+
OSGi::Bundle.fromProject(foo).should be_nil
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should use the values placed in the META-INF/MANIFEST.MF file of the project" do
|
90
|
+
manifest = <<-MANIFEST
|
91
|
+
Manifest-Version: 1.0
|
92
|
+
Bundle-ManifestVersion: 2
|
93
|
+
Bundle-SymbolicName: org.eclipse.core.resources; singleton:=true
|
94
|
+
Bundle-Version: 3.5.1.R_20090912
|
95
|
+
Bundle-ActivationPolicy: Lazy
|
96
|
+
MANIFEST
|
97
|
+
Buildr::write "META-INF/MANIFEST.MF", manifest
|
98
|
+
foo = define "foo", :version => "1.0" do
|
99
|
+
project.group = "grp"
|
100
|
+
package(:bundle)
|
101
|
+
end
|
102
|
+
bundle = OSGi::Bundle.fromProject(foo)
|
103
|
+
bundle.lazy_start.should be_true
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should use the manifest defined over the bundle packaging of the project" do
|
107
|
+
foo = define "foo", :version => "1.0" do
|
108
|
+
project.group = "grp"
|
109
|
+
package(:bundle).with :manifest => {"Export-Package" => "p1,p2"}
|
110
|
+
end
|
111
|
+
bundle = ::OSGi::Bundle.fromProject(foo)
|
112
|
+
bundle.exported_packages.should include(OSGi::BundlePackage.new("p1", nil))
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should use the id of the project as the name of the bundle if none is defined" do
|
116
|
+
foo = define "foo", :version => "1.0" do
|
117
|
+
project.group = "grp"
|
118
|
+
package(:bundle)
|
119
|
+
end
|
120
|
+
bundle = OSGi::Bundle.fromProject(foo)
|
121
|
+
bundle.name.should == "foo"
|
122
|
+
bundle.version.should == "1.0"
|
123
|
+
end
|
124
|
+
|
125
|
+
it "should use the values placed in the manifest, merged with those defined in the bundle packaging" do
|
126
|
+
manifest = <<-MANIFEST
|
127
|
+
Manifest-Version: 1.0
|
128
|
+
Bundle-ManifestVersion: 2
|
129
|
+
Bundle-SymbolicName: org.eclipse.core.resources; singleton:=true
|
130
|
+
Bundle-Version: 3.5.1.R_20090912
|
131
|
+
Bundle-ActivationPolicy: Lazy
|
132
|
+
MANIFEST
|
133
|
+
Buildr::write "META-INF/MANIFEST.MF", manifest
|
134
|
+
foo = define "foo", :version => "1.0" do
|
135
|
+
project.group = "grp"
|
136
|
+
package(:bundle).with :manifest => {"Require-Bundle" => "org.apache.smthg;bundle-version=\"1.5.0\""}
|
137
|
+
end
|
138
|
+
bundle = OSGi::Bundle.fromProject(foo)
|
139
|
+
bundle.name.should == "foo"
|
140
|
+
bundle.version.should == "1.0"
|
141
|
+
bundle.bundles.should include(OSGi::Bundle.new("org.apache.smthg", "1.5.0"))
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should use the values placed in the manifest, merged with those defined in the bundle packaging, with no " do
|
145
|
+
manifest = <<-MANIFEST
|
146
|
+
Manifest-Version: 1.0
|
147
|
+
Bundle-ManifestVersion: 2
|
148
|
+
Bundle-SymbolicName: org.eclipse.core.resources; singleton:=true
|
149
|
+
Bundle-Version: 3.5.1.R_20090912
|
150
|
+
Export-Package: org.mortbay.jetty.nio;uses:="org.mortbay.log,org.mortba
|
151
|
+
y.thread,org.mortbay.io,org.mortbay.jetty,org.mortbay.util.ajax,org.mo
|
152
|
+
rtbay.io.nio";version="6.1.20"
|
153
|
+
Bundle-ActivationPolicy: Lazy
|
154
|
+
MANIFEST
|
155
|
+
Buildr::write "META-INF/MANIFEST.MF", manifest
|
156
|
+
foo = define "foo", :version => "1.0" do
|
157
|
+
project.group = "grp"
|
158
|
+
package(:bundle).with :manifest => {"Require-Bundle" => "org.apache.smthg;bundle-version=\"1.5.0\""}
|
159
|
+
end
|
160
|
+
bundle = OSGi::Bundle.fromProject(foo)
|
161
|
+
bundle.name.should == "foo"
|
162
|
+
bundle.version.should == "1.0"
|
163
|
+
bundle.bundles.should include(OSGi::Bundle.new("org.apache.smthg", "1.5.0"))
|
164
|
+
bundle.exported_packages.should include(OSGi::BundlePackage.new("org.mortbay.jetty.nio", "6.1.20"))
|
165
|
+
bundle.exported_packages.size.should == 1
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
describe "fragments" do
|
170
|
+
before :all do
|
171
|
+
manifest = <<-MANIFEST
|
172
|
+
Manifest-Version: 1.0
|
173
|
+
Bundle-ManifestVersion: 2
|
174
|
+
Bundle-SymbolicName: org.eclipse.core.resources; singleton:=true
|
175
|
+
Bundle-Version: 3.5.1.R_20090912
|
176
|
+
Bundle-ActivationPolicy: Lazy
|
177
|
+
MANIFEST
|
178
|
+
manifest2 = <<-MANIFEST
|
179
|
+
Manifest-Version: 1.0
|
180
|
+
Bundle-ManifestVersion: 2
|
181
|
+
Bundle-SymbolicName: org.eclipse.core.resources.x86; singleton:=true
|
182
|
+
Bundle-Version: 3.5.1.R_20090912
|
183
|
+
Bundle-ActivationPolicy: Lazy
|
184
|
+
Fragment-Host: org.eclipse.core.resources
|
185
|
+
MANIFEST
|
186
|
+
@eclipse_instances = [createRepository("eclipse1")]
|
187
|
+
Buildr::write File.join(@eclipse_instances.first, "plugins", "org.eclipse.core.resources-3.5.1.R_20090512", "META-INF", "MANIFEST.MF"), manifest
|
188
|
+
Buildr::write File.join(@eclipse_instances.first, "plugins", "org.eclipse.core.resources.x86-3.5.1.R_20090512", "META-INF", "MANIFEST.MF"), manifest2
|
189
|
+
@bundle = OSGi::Bundle.fromManifest(Manifest.read(manifest), ".")
|
190
|
+
@fragment = OSGi::Bundle.fromManifest(Manifest.read(manifest2), ".")
|
191
|
+
end
|
192
|
+
|
193
|
+
|
194
|
+
it "should find the bundle fragments" do
|
195
|
+
foo = define("foo")
|
196
|
+
foo.osgi.registry.containers = @eclipse_instances.dup
|
197
|
+
|
198
|
+
@bundle.fragments(foo).should == [@fragment]
|
199
|
+
end
|
200
|
+
|
201
|
+
end
|
202
|
+
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
+
# work for additional information regarding copyright ownership. The ASF
|
4
|
+
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
+
# "License"); you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
# License for the specific language governing permissions and limitations under
|
14
|
+
# the License.
|
15
|
+
|
16
|
+
require File.join(File.dirname(__FILE__), '../spec_helpers')
|
17
|
+
|
18
|
+
Spec::Runner.configure do |config|
|
19
|
+
config.include Buildr4OSGi::SpecHelpers
|
20
|
+
end
|
21
|
+
|
22
|
+
describe OSGi::Container do
|
23
|
+
|
24
|
+
before :all do
|
25
|
+
e1= createRepository("eclipse1")
|
26
|
+
e2= createRepository("eclipse2")
|
27
|
+
@eclipse_instances = [e1, e2]
|
28
|
+
|
29
|
+
Buildr::write e1 + "/plugins/com.ibm.icu-3.9.9.R_20081204/META-INF/MANIFEST.MF", <<-MANIFEST
|
30
|
+
Manifest-Version: 1.0
|
31
|
+
Bundle-ManifestVersion: 2
|
32
|
+
Bundle-SymbolicName: com.ibm.icu; singleton:=true
|
33
|
+
Bundle-Version: 3.9.9.R_20081204
|
34
|
+
MANIFEST
|
35
|
+
Buildr::write e1 + "/plugins/org.eclipse.core.resources-3.5.0.R_20090512/META-INF/MANIFEST.MF", <<-MANIFEST
|
36
|
+
Manifest-Version: 1.0
|
37
|
+
Bundle-ManifestVersion: 2
|
38
|
+
Bundle-SymbolicName: org.eclipse.core.resources; singleton:=true
|
39
|
+
Bundle-Version: 3.5.0.R_20090512
|
40
|
+
MANIFEST
|
41
|
+
Buildr::write e1 + "/plugins/org.fragments-3.5.0.R_20090512/META-INF/MANIFEST.MF", <<-MANIFEST
|
42
|
+
Manifest-Version: 1.0
|
43
|
+
Bundle-ManifestVersion: 2
|
44
|
+
Bundle-SymbolicName: org.fragment; singleton:=true
|
45
|
+
Fragment-Host: org.eclipse.core.resources
|
46
|
+
Bundle-Version: 3.5.0.R_20090512
|
47
|
+
MANIFEST
|
48
|
+
Buildr::write e2 + "/plugins/org.eclipse.core.resources-3.5.1.R_20090912/META-INF/MANIFEST.MF", <<-MANIFEST
|
49
|
+
Manifest-Version: 1.0
|
50
|
+
Bundle-ManifestVersion: 2
|
51
|
+
Bundle-SymbolicName: org.eclipse.core.resources; singleton:=true
|
52
|
+
Bundle-Version: 3.5.1.R_20090912
|
53
|
+
MANIFEST
|
54
|
+
Buildr::write e2 + "/plugins/org.eclipse.ui-3.4.2.R_20090226/META-INF/MANIFEST.MF", <<-MANIFEST
|
55
|
+
Manifest-Version: 1.0
|
56
|
+
Bundle-ManifestVersion: 2
|
57
|
+
Bundle-SymbolicName: org.eclipse.ui; singleton:=true
|
58
|
+
Bundle-Version: 3.4.2.R_20090226
|
59
|
+
MANIFEST
|
60
|
+
|
61
|
+
Buildr::write e2 + "/plugins/org.eclipse.ui-3.5.0.M_20090107/META-INF/MANIFEST.MF", <<-MANIFEST
|
62
|
+
Manifest-Version: 1.0
|
63
|
+
Bundle-ManifestVersion: 2
|
64
|
+
Bundle-SymbolicName: org.eclipse.ui; singleton:=true
|
65
|
+
Bundle-Version: 3.5.0.M_20090107
|
66
|
+
MANIFEST
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'should be able to create an OSGi container instance on a folder' do
|
70
|
+
lambda {OSGi::Container.new(@eclipse_instances.first)}.should_not raise_error
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should be able to list the bundles present in the container' do
|
74
|
+
e1 = OSGi::Container.new(@eclipse_instances.first)
|
75
|
+
bundles = e1.bundles.select {|bundle| bundle.name == "com.ibm.icu"}
|
76
|
+
bundles.size.should eql(1)
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should be able to list the fragments present in the container' do
|
80
|
+
e1 = OSGi::Container.new(@eclipse_instances.first)
|
81
|
+
e1.fragments.size.should eql(1)
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'should find a specific bundle in the container' do
|
85
|
+
e2 = OSGi::Container.new(@eclipse_instances.last)
|
86
|
+
e2.find(:name=> "org.eclipse.ui", :version => "3.5.0.M_20090107").should_not be_empty
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'should find a specific fragment in the container' do
|
90
|
+
e1 = OSGi::Container.new(@eclipse_instances.first)
|
91
|
+
e1.find_fragments(:name=> "org.fragment").should_not be_empty
|
92
|
+
end
|
93
|
+
end
|