1 package org.apache.felix.bundleplugin;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import java.io.File;
24 import java.util.Map;
25 import java.util.Properties;
26 import java.util.TreeMap;
27
28 import org.apache.maven.model.Organization;
29 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
30 import org.apache.maven.project.MavenProject;
31 import org.apache.maven.shared.osgi.DefaultMaven2OsgiConverter;
32
33 import aQute.lib.osgi.Analyzer;
34 import aQute.lib.osgi.Builder;
35 import aQute.lib.osgi.Jar;
36
37
38
39
40
41
42
43 public class BundlePluginTest extends AbstractBundlePluginTest
44 {
45
46 private BundlePlugin plugin;
47
48
49 protected void setUp() throws Exception
50 {
51 super.setUp();
52 plugin = new BundlePlugin();
53 plugin.setMaven2OsgiConverter( new DefaultMaven2OsgiConverter() );
54 plugin.setBuildDirectory( "." );
55 plugin.setOutputDirectory( new File( "." ) );
56 }
57
58
59 public void testConvertVersionToOsgi()
60 {
61 String osgiVersion;
62
63 osgiVersion = plugin.convertVersionToOsgi( "2.1.0-SNAPSHOT" );
64 assertEquals( "2.1.0.SNAPSHOT", osgiVersion );
65
66 osgiVersion = plugin.convertVersionToOsgi( "2.1-SNAPSHOT" );
67 assertEquals( "2.1.0.SNAPSHOT", osgiVersion );
68
69 osgiVersion = plugin.convertVersionToOsgi( "2-SNAPSHOT" );
70 assertEquals( "2.0.0.SNAPSHOT", osgiVersion );
71
72 osgiVersion = plugin.convertVersionToOsgi( "2" );
73 assertEquals( "2.0.0", osgiVersion );
74
75 osgiVersion = plugin.convertVersionToOsgi( "2.1" );
76 assertEquals( "2.1.0", osgiVersion );
77
78 osgiVersion = plugin.convertVersionToOsgi( "2.1.3" );
79 assertEquals( "2.1.3", osgiVersion );
80
81 osgiVersion = plugin.convertVersionToOsgi( "2.1.3.4" );
82 assertEquals( "2.1.3.4", osgiVersion );
83
84 osgiVersion = plugin.convertVersionToOsgi( "4aug2000r7-dev" );
85 assertEquals( "0.0.0.4aug2000r7-dev", osgiVersion );
86
87 osgiVersion = plugin.convertVersionToOsgi( "1.1-alpha-2" );
88 assertEquals( "1.1.0.alpha-2", osgiVersion );
89
90 osgiVersion = plugin.convertVersionToOsgi( "1.0-alpha-16-20070122.203121-13" );
91 assertEquals( "1.0.0.alpha-16-20070122_203121-13", osgiVersion );
92
93 osgiVersion = plugin.convertVersionToOsgi( "1.0-20070119.021432-1" );
94 assertEquals( "1.0.0.20070119_021432-1", osgiVersion );
95
96 osgiVersion = plugin.convertVersionToOsgi( "1-20070119.021432-1" );
97 assertEquals( "1.0.0.20070119_021432-1", osgiVersion );
98
99 osgiVersion = plugin.convertVersionToOsgi( "1.4.1-20070217.082013-7" );
100 assertEquals( "1.4.1.20070217_082013-7", osgiVersion );
101 }
102
103
104 public void testReadExportedModules() throws Exception
105 {
106 File osgiBundleFile = getTestBundle();
107
108 assertTrue( osgiBundleFile.exists() );
109
110 MavenProject project = new MavenProjectStub();
111 project.setGroupId( "group" );
112 project.setArtifactId( "artifact" );
113 project.setVersion( "1.1.0.0" );
114
115
116 Builder analyzer = new Builder();
117 Jar jar = new Jar( "name", osgiBundleFile );
118 analyzer.setJar( jar );
119 analyzer.setClasspath( new Jar[]
120 { jar } );
121
122 analyzer.setProperty( Analyzer.EXPORT_PACKAGE, "*" );
123 analyzer.calcManifest();
124
125 assertEquals( 3, analyzer.getExports().size() );
126
127 analyzer.close();
128 }
129
130
131 public void testTransformDirectives() throws Exception
132 {
133 Map instructions = new TreeMap();
134
135 instructions.put( "a", "1" );
136 instructions.put( "-a", "2" );
137 instructions.put( "_a", "3" );
138 instructions.put( "A", "3" );
139 instructions.put( "_A", "1" );
140 instructions.put( "_b", "4" );
141 instructions.put( "b", "6" );
142 instructions.put( "_B", "6" );
143 instructions.put( "-B", "5" );
144 instructions.put( "B", "4" );
145
146 instructions.put( "z", null );
147 instructions.put( "_z", null );
148
149 Map transformedInstructions = BundlePlugin.transformDirectives( instructions );
150
151 assertEquals( "1", transformedInstructions.get( "a" ) );
152 assertEquals( "3", transformedInstructions.get( "-a" ) );
153 assertEquals( null, transformedInstructions.get( "_a" ) );
154 assertEquals( "3", transformedInstructions.get( "A" ) );
155 assertEquals( "1", transformedInstructions.get( "-A" ) );
156 assertEquals( null, transformedInstructions.get( "_A" ) );
157 assertEquals( null, transformedInstructions.get( "_b" ) );
158 assertEquals( "4", transformedInstructions.get( "-b" ) );
159 assertEquals( "6", transformedInstructions.get( "b" ) );
160 assertEquals( null, transformedInstructions.get( "_B" ) );
161 assertEquals( "6", transformedInstructions.get( "-B" ) );
162 assertEquals( "4", transformedInstructions.get( "B" ) );
163
164 assertEquals( "", transformedInstructions.get( "z" ) );
165 assertEquals( "", transformedInstructions.get( "-z" ) );
166 }
167
168
169 public void testDefaultPropertiesIncludeOrganization()
170 {
171 final Organization organization = new Organization();
172 organization.setName( "Example Organization" );
173 organization.setUrl( "http://example.org" );
174
175
176 MavenProject project = new MavenProjectStub()
177 {
178 @Override
179 public Organization getOrganization()
180 {
181 return organization;
182 }
183 };
184 project.setGroupId( "group" );
185 project.setArtifactId( "artifact" );
186 project.setVersion( "1.1.0.0" );
187
188 Properties properties = plugin.getDefaultProperties( project );
189 assertEquals( organization.getName(), properties.getProperty( "project.organization.name" ) );
190 assertEquals( organization.getName(), properties.getProperty( "pom.organization.name" ) );
191 assertEquals( organization.getUrl(), properties.getProperty( "project.organization.url" ) );
192 assertEquals( organization.getUrl(), properties.getProperty( "pom.organization.url" ) );
193 }
194
195
196 public void testVersion() throws Exception
197 {
198 String cleanupVersion = Builder.cleanupVersion( "0.0.0.4aug2000r7-dev" );
199 assertEquals( "0.0.0.4aug2000r7-dev", cleanupVersion );
200 }
201
202
203 public void testPackageInfoDetection() throws Exception
204 {
205 MavenProject project = new MavenProjectStub();
206 project.addCompileSourceRoot( getBasedir() + "/src/test/java" );
207
208 String resourcePaths = plugin.getMavenResourcePaths( project );
209
210 assertEquals( "org/apache/felix/bundleplugin/packageinfo="
211 + "src/test/java/org/apache/felix/bundleplugin/packageinfo", resourcePaths );
212 }
213 }