mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-16 00:38:56 +00:00
[eclipse/xtext-extras#406] Fix missing newline, add test.
Signed-off-by: Arne Deutsch <Arne.Deutsch@itemis.de>
This commit is contained in:
parent
3ce424ea8d
commit
f4ae741588
2 changed files with 67 additions and 11 deletions
org.eclipse.xtext.tests/src/org/eclipse/xtext/util
org.eclipse.xtext.util/src/org/eclipse/xtext/util
|
@ -1409,6 +1409,62 @@ public class MergeableManifest2Test {
|
|||
assertEquals(expected, write(manifest));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void readWrite_addRequiredBundle_newVersion() throws Exception {
|
||||
// @formatter:off
|
||||
String content =
|
||||
"Manifest-Version: 1.0" + NL +
|
||||
"Bundle-ManifestVersion: 2" + NL +
|
||||
"Require-Bundle: org.eclipse.xtext," + NL +
|
||||
" org.eclipse.xtext.xbase," + NL +
|
||||
" org.eclipse.xtext.util," + NL +
|
||||
" org.antlr.runtime;bundle-version=\"[3.2.0,3.2.1)\"," + NL +
|
||||
" org.eclipse.xtext.common.types," + NL +
|
||||
"Automatic-Module-Name: org.eclipse.xtext.example.homeautomation" + NL;
|
||||
String expected =
|
||||
"Manifest-Version: 1.0" + NL +
|
||||
"Bundle-ManifestVersion: 2" + NL +
|
||||
"Require-Bundle: org.eclipse.xtext," + NL +
|
||||
" org.eclipse.xtext.xbase," + NL +
|
||||
" org.eclipse.xtext.util;bundle-version=\"1.0\"," + NL +
|
||||
" org.antlr.runtime;bundle-version=\"[3.2.0,3.2.1)\"," + NL +
|
||||
" org.eclipse.xtext.common.types" + NL +
|
||||
"Automatic-Module-Name: org.eclipse.xtext.example.homeautomation" + NL;
|
||||
// @formatter:on
|
||||
MergeableManifest2 manifest = newManifest(content);
|
||||
manifest.addRequiredBundles("org.eclipse.xtext.util;bundle-version=\"1.0\"");
|
||||
|
||||
assertEquals(expected, write(manifest));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void readWrite_addRequiredBundle_newVersion_firstEntry() throws Exception {
|
||||
// @formatter:off
|
||||
String content =
|
||||
"Manifest-Version: 1.0" + NL +
|
||||
"Bundle-ManifestVersion: 2" + NL +
|
||||
"Require-Bundle: org.eclipse.xtext," + NL +
|
||||
" org.eclipse.xtext.xbase," + NL +
|
||||
" org.eclipse.xtext.util," + NL +
|
||||
" org.antlr.runtime;bundle-version=\"[3.2.0,3.2.1)\"," + NL +
|
||||
" org.eclipse.xtext.common.types," + NL +
|
||||
"Automatic-Module-Name: org.eclipse.xtext.example.homeautomation" + NL;
|
||||
String expected =
|
||||
"Manifest-Version: 1.0" + NL +
|
||||
"Bundle-ManifestVersion: 2" + NL +
|
||||
"Require-Bundle: org.eclipse.xtext;bundle-version=\"1.0\"," + NL +
|
||||
" org.eclipse.xtext.xbase," + NL +
|
||||
" org.eclipse.xtext.util," + NL +
|
||||
" org.antlr.runtime;bundle-version=\"[3.2.0,3.2.1)\"," + NL +
|
||||
" org.eclipse.xtext.common.types" + NL +
|
||||
"Automatic-Module-Name: org.eclipse.xtext.example.homeautomation" + NL;
|
||||
// @formatter:on
|
||||
MergeableManifest2 manifest = newManifest(content);
|
||||
manifest.addRequiredBundles("org.eclipse.xtext;bundle-version=\"1.0\"");
|
||||
|
||||
assertEquals(expected, write(manifest));
|
||||
}
|
||||
|
||||
/**
|
||||
* In this final test we read all "META-INF/MANIFEST.MF" files from
|
||||
* classpath. We the:
|
||||
|
|
|
@ -693,21 +693,17 @@ public class MergeableManifest2 implements Cloneable {
|
|||
for (int i = 0; i < list.size(); i++) {
|
||||
Bundle oldBundle = list.get(i);
|
||||
if (oldBundle.hasSameName(newBundle)) {
|
||||
String oldBundleName = oldBundle.getName();
|
||||
String oldBundleNameIncludingWhitespacePrefix = oldBundle.getNameIncludingWhitespacePrefix();
|
||||
String oldBundleVersion = oldBundle.getVersion();
|
||||
String oldBundleSuffix = oldBundle.getSuffix();
|
||||
String bundleVersion = oldBundleVersion == null ? newBundle.getVersion() : oldBundleVersion;
|
||||
merged = true;
|
||||
if (oldBundleSuffix == null) {
|
||||
if (bundleVersion != null) {
|
||||
list.set(i, Bundle.fromNameVersion(oldBundleName, bundleVersion));
|
||||
}
|
||||
} else {
|
||||
if (bundleVersion != null) {
|
||||
if (oldBundleVersion == null) {
|
||||
list.set(i,
|
||||
Bundle.fromNameVersionSuffix(oldBundleName, bundleVersion, oldBundleSuffix));
|
||||
}
|
||||
if (bundleVersion != null) {
|
||||
if (oldBundleSuffix == null) {
|
||||
list.set(i, Bundle.fromNameVersion(oldBundleNameIncludingWhitespacePrefix, bundleVersion));
|
||||
} else if (oldBundleVersion == null) {
|
||||
list.set(i, Bundle.fromNameVersionSuffix(oldBundleNameIncludingWhitespacePrefix,
|
||||
bundleVersion, oldBundleSuffix));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -775,6 +771,10 @@ public class MergeableManifest2 implements Cloneable {
|
|||
return split.get(0).trim();
|
||||
}
|
||||
|
||||
public String getNameIncludingWhitespacePrefix() {
|
||||
return split.get(0);
|
||||
}
|
||||
|
||||
public String getSuffix() {
|
||||
return split.size() > 1 ? split.subList(1, split.size()).stream().reduce((a, b) -> a + ";" + b).get()
|
||||
: null;
|
||||
|
|
Loading…
Reference in a new issue