1 /******************************************************************************* 2 * Copyright (c) 2008, 2017 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 *******************************************************************************/ 14 15 package org.eclipse.equinox.frameworkadmin.tests; 16 17 import static org.junit.Assert.*; 18 19 import java.io.*; 20 import java.util.Properties; 21 import org.eclipse.core.runtime.FileLocator; 22 import org.eclipse.core.runtime.URIUtil; 23 import org.eclipse.equinox.frameworkadmin.BundleInfo; 24 import org.eclipse.equinox.internal.provisional.frameworkadmin.*; 25 import org.junit.Test; 26 27 public class ManipulatorTests extends AbstractFwkAdminTest { 28 29 @Test testBug212361_osgiInBundlesList()30 public void testBug212361_osgiInBundlesList() throws Exception { 31 File installFolder = Activator.getContext().getDataFile("212361"); 32 File configurationFolder = new File(installFolder, "configuration"); 33 Manipulator manipulator = getFrameworkManipulator(configurationFolder, new File(installFolder, "foo")); 34 35 BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", 36 URIUtil.toURI(FileLocator 37 .resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))), 38 0, true); 39 BundleInfo configuratorBi = new BundleInfo( 40 "org.eclipse.equinox.simpleconfigurator", "1.0.0", URIUtil.toURI(FileLocator.resolve(Activator 41 .getContext().getBundle().getEntry("dataFile/org.eclipse.equinox.simpleconfigurator.jar"))), 42 1, true); 43 44 manipulator.getConfigData().addBundle(osgiBi); 45 manipulator.getConfigData().addBundle(configuratorBi); 46 47 manipulator.save(false); 48 49 Properties configIni = new Properties(); 50 try (InputStream in = new BufferedInputStream( 51 new FileInputStream(new File(configurationFolder, "config.ini")))) { 52 configIni.load(in); 53 } 54 55 String bundles = (String) configIni.get("osgi.bundles"); 56 assertEquals(-1 , bundles.indexOf("org.eclipse.osgi")); 57 } 58 59 @Test testBug277553_installAreaFromFwJar()60 public void testBug277553_installAreaFromFwJar() throws Exception { 61 File folder = getTestFolder("installAreaFromFwJar"); 62 File fwJar = new File(folder, "plugins/org.eclipse.osgi.jar"); 63 fwJar.getParentFile().mkdirs(); 64 65 copyStream(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar").openStream(), true, 66 new FileOutputStream(fwJar), true); 67 BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", fwJar.toURI(), 0, true); 68 69 File ini = new File(folder, "eclipse.ini"); 70 writeEclipseIni(ini, new String[] { "-foo", "bar", "-vmargs", "-Xmx256m" }); 71 72 startSimpleConfiguratorManipulator(); 73 FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin(); 74 75 Manipulator manipulator = fwkAdmin.getManipulator(); 76 manipulator.getConfigData().addBundle(osgiBi); 77 LauncherData launcherData = manipulator.getLauncherData(); 78 launcherData.setFwJar(fwJar); 79 launcherData.setLauncher(new File(folder, "eclipse")); 80 81 manipulator.load(); 82 83 assertEquals(manipulator.getLauncherData().getFwPersistentDataLocation(), new File(folder, "configuration")); 84 } 85 86 @Test testBug258126_ProgramArgs_VMArgs()87 public void testBug258126_ProgramArgs_VMArgs() throws Exception { 88 File installFolder = getTestFolder("258126"); 89 File ini = new File(installFolder, "eclipse.ini"); 90 writeEclipseIni(ini, new String[] { "-foo", "bar", "-vmargs", "-Xmx256m" }); 91 92 FrameworkAdmin fwkAdmin = getEquinoxFrameworkAdmin(); 93 Manipulator manipulator = fwkAdmin.getManipulator(); 94 LauncherData launcherData = manipulator.getLauncherData(); 95 launcherData.setLauncher(new File(installFolder, "eclipse")); 96 try { 97 manipulator.load(); 98 } catch (IllegalStateException e) { 99 // TODO We ignore the framework JAR location not set exception 100 } 101 102 assertArrayEquals(launcherData.getJvmArgs(), new String[] { "-Xmx256m" }); 103 assertArrayEquals(launcherData.getProgramArgs(), new String[] { "-foo", "bar" }); 104 105 launcherData.addJvmArg("-Xms64m"); 106 launcherData.addProgramArg("-console"); 107 108 // eclipse.ini won't save unless we actually have something in the configuration 109 BundleInfo osgiBi = new BundleInfo("org.eclipse.osgi", "3.3.1", 110 URIUtil.toURI(FileLocator 111 .resolve(Activator.getContext().getBundle().getEntry("dataFile/org.eclipse.osgi.jar"))), 112 0, true); 113 manipulator.getConfigData().addBundle(osgiBi); 114 manipulator.save(false); 115 116 assertContent(ini, "-foo", "bar", "-console", "-vmargs", "-Xmx256m", "-Xms64m"); 117 } 118 119 } 120