blob: 48568a5d5124b82b726c037c030d52ccded60780 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2018 IBM Corporation and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which accompanies this distribution,
* and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors: IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.pde.build.internal.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.File;
import java.util.*;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IResource;
import org.eclipse.pde.build.tests.BuildConfiguration;
import org.eclipse.pde.build.tests.PDETestCase;
import org.junit.Test;
public class AssembleTests extends PDETestCase {
@Test
public void testCustomAssembly() throws Exception {
IFolder buildFolder = newTest("customAssembly");
File executable = Utils.findExecutable();
assertNotNull(executable);
Utils.generateFeature(buildFolder, "sdk", null, new String[] { "org.eclipse.swt;unpack=\"false\"",
"org.eclipse.swt.win32.win32.x86_64;unpack=\"false\";os=\"win32\";ws=\"win32\";arch=\"x86_64\"" });
Properties buildProperties = BuildConfiguration.getBuilderProperties(buildFolder);
buildProperties.put("topLevelElementId", "sdk");
if (!executable.equals(new File((String) buildProperties.get("baseLocation"))))
buildProperties.put("pluginPath", executable.getAbsolutePath());
buildProperties.put("configs", "win32, win32, x86_64");
Utils.storeBuildProperties(buildFolder, buildProperties);
Utils.generateAllElements(buildFolder, "sdk");
runBuild(buildFolder);
String buildLocation = buildFolder.getLocation().toOSString();
String[] log = new String[] { "post.gather.bin.parts", "eclipse.base: " + buildLocation + "/tmp/eclipse",
"post.jarUp", "plugins: " + buildLocation + "/tmp/eclipse/plugins",
"features: " + buildLocation + "/tmp/eclipse/features", "pre.archive",
"rootFolder: " + buildLocation + "/tmp/eclipse/win32.win32.x86_64/eclipse",
"archiveFullPath: " + buildLocation + "/I.TestBuild/eclipse-win32.win32.x86_64.zip" };
assertLogContainsLines(buildFolder.getFile("log.log"), log);
}
@Test
public void testBug179612_default() throws Exception {
IFolder buildFolder = newTest("179612");
File executable = Utils.findExecutable();
assertNotNull(executable);
Utils.generateFeature(buildFolder, "sdk", null,
new String[] { "org.eclipse.swt;unpack=\"false\"",
"org.eclipse.swt.win32.win32.x86_64;unpack=\"false\";os=\"win32\";ws=\"win32\";arch=\"x86_64\"",
"org.eclipse.swt.gtk.linux.x86_64;unpack=\"false\";os=\"linux\";ws=\"gtk\";arch=\"x86_64\"" });
Properties buildProperties = BuildConfiguration.getBuilderProperties(buildFolder);
buildProperties.put("topLevelElementId", "sdk");
if (!executable.equals(new File((String) buildProperties.get("baseLocation"))))
buildProperties.put("pluginPath", executable.getAbsolutePath());
buildProperties.put("configs", "*,*,* & win32, win32, x86_64 & linux, gtk, x86_64");
Utils.storeBuildProperties(buildFolder, buildProperties);
runBuild(buildFolder);
assertResourceFile(buildFolder, "I.TestBuild/sdk-TestBuild.zip");
assertResourceFile(buildFolder, "I.TestBuild/sdk-TestBuild-linux.gtk.x86_64.zip");
assertResourceFile(buildFolder, "I.TestBuild/sdk-TestBuild-win32.win32.x86_64.zip");
}
@Test
public void testBug179612_custom() throws Exception {
// we have a custom allElements.xml coming from the resources folder
IFolder buildFolder = newTest("179612_custom");
File executable = Utils.findExecutable();
assertNotNull(executable);
Utils.generateFeature(buildFolder, "sdk", null,
new String[] { "org.eclipse.swt;unpack=\"false\"",
"org.eclipse.swt.win32.win32.x86_64;unpack=\"false\";os=\"win32\";ws=\"win32\";arch=\"x86_64\"",
"org.eclipse.swt.gtk.linux.x86_64;unpack=\"false\";os=\"linux\";ws=\"gtk\";arch=\"x86_64\"" });
Properties buildProperties = BuildConfiguration.getBuilderProperties(buildFolder);
buildProperties.put("topLevelElementId", "sdk");
if (!executable.equals(new File((String) buildProperties.get("baseLocation"))))
buildProperties.put("pluginPath", executable.getAbsolutePath());
buildProperties.put("configs", "*,*,* & win32, win32, x86_64 & linux, gtk, x86_64");
Utils.storeBuildProperties(buildFolder, buildProperties);
runBuild(buildFolder);
String[] log = new String[] { "preAssemble", "defaultAssemble", "assemble.sdk.win32.win32.x86_64",
"defaultAssemble", "postAssemble", "prePackage", "defaultAssemble", "assemble.sdk.win32.win32.x86_64",
"defaultAssemble", "postPackage" };
assertLogContainsLines(buildFolder.getFile("log.log"), log);
assertResourceFile(buildFolder, "I.TestBuild/sdk-TestBuild.zip");
assertResourceFile(buildFolder, "I.TestBuild/sdk-TestBuild-linux.gtk.x86_64.zip");
assertResourceFile(buildFolder, "I.TestBuild/MyCustomName.zip");
}
@Test
public void testBug196754() throws Exception {
IFolder buildFolder = newTest("196754");
// pde.build and equinox.launcher.win32.win32.x86 exist as signed folders in the
// base location,
// jar them up in the build and assert they still verify
Utils.generateFeature(buildFolder, "sdk", null, new String[] { "org.eclipse.pde.build;unpack=\"false\"",
"org.eclipse.equinox.launcher.win32.win32.x86_64;unpack=\"false\"" });
File executable = Utils.findExecutable();
assertNotNull(executable);
Properties buildProperties = BuildConfiguration.getBuilderProperties(buildFolder);
buildProperties.put("archivesFormat", "*, *, * - folder");
buildProperties.put("jarProcessor.unsign", "true");
buildProperties.put("signJars", "true");
if (!executable.equals(new File((String) buildProperties.get("baseLocation"))))
buildProperties.put("pluginPath", executable.getAbsolutePath());
Utils.storeBuildProperties(buildFolder, buildProperties);
Utils.generateAllElements(buildFolder, "sdk");
runBuild(buildFolder);
buildFolder.refreshLocal(IResource.DEPTH_INFINITE, null);
File[] plugins = buildFolder.getFolder("tmp/eclipse/plugins").getLocation().toFile().listFiles();
for (File plugin : plugins) {
assertJarVerifies(plugin);
}
}
@Test
public void testBug211605() throws Exception {
IFolder buildFolder = newTest("211605");
File executable = Utils.findExecutable();
assertNotNull(executable);
Utils.generateFeature(buildFolder, "sdk", null,
new String[] { "org.eclipse.swt;unpack=\"false\"",
"org.eclipse.swt.win32.win32.x86_64;unpack=\"false\";os=\"win32\";ws=\"win32\";arch=\"x86_64\"",
"org.eclipse.swt.gtk.linux.x86_64;unpack=\"false\";os=\"linux\";ws=\"gtk\";arch=\"x86_64\"" });
Properties buildProperties = BuildConfiguration.getBuilderProperties(buildFolder);
buildProperties.put("topLevelElementId", "sdk");
if (!executable.equals(new File((String) buildProperties.get("baseLocation"))))
buildProperties.put("pluginPath", executable.getAbsolutePath());
buildProperties.put("configs", "win32, win32, x86_64 & linux, gtk, x86_64");
buildProperties.put("archivesFormat", "group,group,group-folder");
buildProperties.put("groupConfigurations", "true");
Utils.storeBuildProperties(buildFolder, buildProperties);
runBuild(buildFolder);
File resultFolder = new File(buildFolder.getLocation().toFile(), "tmp/eclipse/plugins");
assertEquals(resultFolder.list().length, 3);
}
@Test
public void testBug255824() throws Exception {
IFolder buildFolder = newTest("255824");
IFolder a = Utils.createFolder(buildFolder, "plugins/A");
Utils.generateBundle(a, "A");
Utils.writeBuffer(a.getFile("src/a.java"), new StringBuffer("class A {}"));
IFolder b = Utils.createFolder(buildFolder, "plugins/B_1.0.0");
Utils.generateBundle(b, "B");
b.getFile("build.properties").delete(true, null);
Utils.generateFeature(buildFolder, "F", null, new String[] { "A;unpack=false", "B" });
Properties buildProperties = BuildConfiguration.getBuilderProperties(buildFolder);
buildProperties.put("topLevelElementId", "F");
buildProperties.put("archivePrefix", "eclipse");
buildProperties.put("collectingFolder", "e4");
buildProperties.put("baseLocation", "");
Utils.storeBuildProperties(buildFolder, buildProperties);
runBuild(buildFolder);
Set<String> entries = new HashSet<>();
entries.add("eclipse/plugins/A_1.0.0.jar");
entries.add("eclipse/plugins/B_1.0.0/META-INF/MANIFEST.MF");
assertZipContents(buildFolder, "I.TestBuild/F-TestBuild.zip", entries);
buildProperties.put("archivesFormat", "*,*,*-folder");
Utils.storeBuildProperties(buildFolder, buildProperties);
runBuild(buildFolder);
assertResourceFile(buildFolder, "tmp/e4/plugins/A_1.0.0.jar");
assertResourceFile(buildFolder, "tmp/e4/plugins/B_1.0.0/META-INF/MANIFEST.MF");
}
}