blob: d6db499998756a12637f56fea215b03eea124785 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* EclipseSource - bug fixing
*******************************************************************************/
package org.eclipse.equinox.p2.tests.ui.query;
import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.*;
import org.eclipse.equinox.internal.p2.engine.Profile;
import org.eclipse.equinox.internal.p2.metadata.TranslationSupport;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.metadata.*;
import org.eclipse.equinox.p2.query.*;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
/**
* Tests for {@link TranslationSupport}.
*/
public class TranslationSupportTests extends AbstractQueryTest {
Profile profile;
IQueryable oldTranslationSource;
protected void setUp() throws Exception {
super.setUp();
profile = (Profile) createProfile("testLocalizedLicense");
oldTranslationSource = TranslationSupport.getInstance().setTranslationSource(profile);
}
protected void tearDown() throws Exception {
super.tearDown();
TranslationSupport.getInstance().setTranslationSource(oldTranslationSource);
}
public void testFeatureProperties() {
IMetadataRepositoryManager repoMan = (IMetadataRepositoryManager) getAgent().getService(IMetadataRepositoryManager.SERVICE_NAME);
File site = getTestData("0.1", "/testData/metadataRepo/externalized");
URI location = site.toURI();
IMetadataRepository repository;
try {
repository = repoMan.loadRepository(location, getMonitor());
} catch (ProvisionException e) {
fail("1.99", e);
return;
}
IQueryResult result = repository.query(QueryUtil.createIUQuery("test.feature.feature.group"), getMonitor());
assertTrue("1.0", !result.isEmpty());
IInstallableUnit unit = (IInstallableUnit) result.iterator().next();
ICopyright copyright = unit.getCopyright(null);
assertEquals("1.1", "Test Copyright", copyright.getBody());
ILicense license = unit.getLicenses(null).iterator().next();
assertEquals("1.2", "Test License", license.getBody());
// assertEquals("1.3", "license.html", license.getURL().toExternalForm());
String name = unit.getProperty(IInstallableUnit.PROP_NAME, null);
assertEquals("1.4", "Test Feature Name", name);
String description = unit.getProperty(IInstallableUnit.PROP_DESCRIPTION, null);
assertEquals("1.5", "Test Description", description);
String provider = unit.getProperty(IInstallableUnit.PROP_PROVIDER, null);
assertEquals("1.6", "Test Provider Name", provider);
}
public void testLocalizedLicense() throws URISyntaxException {
String germanLicense = "German License";
String canadianFRLicense = "Canadian French License";
// Create a IU that has a license, but the license body is simply %license. This will be filled in by
// a fragment
org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription iuDescription = new org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription();
iuDescription.setId("some IU");
iuDescription.setVersion(Version.createOSGi(1, 0, 0));
iuDescription.setLicenses(new ILicense[] {MetadataFactory.createLicense(new URI("http://example.com"), "%license")});
iuDescription.addProvidedCapabilities(Collections.singleton(MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, "some IU", Version.createOSGi(1, 0, 0))));
IInstallableUnit iu = MetadataFactory.createInstallableUnit(iuDescription);
// Create a bunch of fragments which spec our IU as their host
// These fragments don't contribute language information
for (int i = 0; i < 10; i++) {
org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitFragmentDescription installableUnitFragmentDescription = new org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitFragmentDescription();
installableUnitFragmentDescription.setId("fragment number: " + i);
installableUnitFragmentDescription.setVersion(Version.createOSGi(1, 0, 0));
installableUnitFragmentDescription.setHost(new IRequirement[] {MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "some IU", ANY_VERSION, null, false, false)});
installableUnitFragmentDescription.setProperty(org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription.PROP_TYPE_FRAGMENT, "true");
IInstallableUnitFragment iuFragment = MetadataFactory.createInstallableUnitFragment(installableUnitFragmentDescription);
profile.addInstallableUnit(iuFragment);
}
// Create fragment with a German license
org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitFragmentDescription installableUnitFragmentDescription = new org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitFragmentDescription();
IProvidedCapability providedCapability = MetadataFactory.createProvidedCapability("org.eclipse.equinox.p2.localization", "de", Version.createOSGi(1, 0, 0));
ArrayList list = new ArrayList();
list.add(providedCapability);
installableUnitFragmentDescription.addProvidedCapabilities(list);
installableUnitFragmentDescription.setId("german fragment");
installableUnitFragmentDescription.setVersion(Version.createOSGi(1, 0, 0));
installableUnitFragmentDescription.setHost(new IRequirement[] {MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "some IU", ANY_VERSION, null, false, false)});
installableUnitFragmentDescription.setProperty(org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription.PROP_TYPE_FRAGMENT, "true");
installableUnitFragmentDescription.setProperty("de.license", germanLicense);
IInstallableUnitFragment iuFragment = MetadataFactory.createInstallableUnitFragment(installableUnitFragmentDescription);
profile.addInstallableUnit(iuFragment);
// Create a French fragment with an fr_CA license
installableUnitFragmentDescription = new org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitFragmentDescription();
providedCapability = MetadataFactory.createProvidedCapability("org.eclipse.equinox.p2.localization", "fr", Version.createOSGi(1, 0, 0));
list = new ArrayList();
list.add(providedCapability);
installableUnitFragmentDescription.addProvidedCapabilities(list);
installableUnitFragmentDescription.setId("cnd french fragment");
installableUnitFragmentDescription.setVersion(Version.createOSGi(1, 0, 0));
installableUnitFragmentDescription.setHost(new IRequirement[] {MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "some IU", ANY_VERSION, null, false, false)});
installableUnitFragmentDescription.setProperty(org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription.PROP_TYPE_FRAGMENT, "true");
installableUnitFragmentDescription.setProperty("fr_CA.license", canadianFRLicense);
iuFragment = MetadataFactory.createInstallableUnitFragment(installableUnitFragmentDescription);
profile.addInstallableUnit(iuFragment);
profile.addInstallableUnit(iu);
ILicense license = iu.getLicenses(Locale.GERMAN.toString()).iterator().next();
assertEquals("1.0", germanLicense, license.getBody());
license = iu.getLicenses(Locale.CANADA_FRENCH.toString()).iterator().next();
assertEquals("1.1", canadianFRLicense, license.getBody());
}
public void testBasicIU() {
IInstallableUnit unit = createIU("f1");
assertNull("1.1", unit.getCopyright(null));
assertEquals("1.2", 0, unit.getLicenses(null).size());
assertNull("1.3", unit.getProperty(IInstallableUnit.PROP_NAME, null));
assertNull("1.4", unit.getProperty(IInstallableUnit.PROP_DESCRIPTION, null));
assertNull("1.5", unit.getProperty(IInstallableUnit.PROP_PROVIDER, null));
}
}