/******************************************************************************* * Copyright (c) 2005, 2011 Intel 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: * Intel Corporation - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.managedbuilder.core.tests; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IManagedProject; import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; import org.eclipse.cdt.managedbuilder.envvar.IBuildEnvironmentVariable; import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentBuildPathsChangeListener; import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspace; /** * * */ public class ManagedBuildEnvironmentTests extends TestCase { // final private String REQUIRED_TYPE = "cdt.managedbuild.target.testgnu.exe"; //$NON-NLS-1$ // test variable names final private String NAME_CWD = "CWD"; //$NON-NLS-1$ final private String NAME_PWD = "PWD"; //$NON-NLS-1$ // final private String NAME_CMN = "COMMON"; //$NON-NLS-1$ // final private String NAME_WSP = "WSP"; //$NON-NLS-1$ // final private String NAME_PRJI = "PRJI"; //$NON-NLS-1$ // final private String NAME_PRJL = "PRJL"; //$NON-NLS-1$ // final private String NAME_CFGI = "CFGI"; //$NON-NLS-1$ // final private String NAME_CFGL = "CFGL"; //$NON-NLS-1$ // final private String NAME_CFGX = "CFGX"; //$NON-NLS-1$ // final private String NAME_CFG = "CFG"; //$NON-NLS-1$ // final private String NAME_REM1 = "REMTST1";//$NON-NLS-1$ // final private String NAME_REM2 = "REMTST2";//$NON-NLS-1$ // test variable values final private String VAL_CWDPWD = "CWD_&_PWD_should not be changed"; //$NON-NLS-1$ // final private String VAL_DUMMY1 = "/a/b/c"; //$NON-NLS-1$ // final private String VAL_DUMMY2 = "/d/e/f"; //$NON-NLS-1$ final private String VAL_PRO_INC = "/project/inc"; //$NON-NLS-1$ final private String VAL_PRO_LIB = "/project/lib"; //$NON-NLS-1$ // final private String LISTENER_DATA = "O1T1O1O2T2T1O1T1O2T2"; //$NON-NLS-1$ // delimiters final private String DEL_WIN = ";"; //$NON-NLS-1$ final private String DEL_UNIX = ":"; //$NON-NLS-1$ IEnvironmentVariableProvider envProvider = null; IWorkspace worksp = null; IProject proj = null; IManagedProject mproj = null; String listenerResult = ""; //$NON-NLS-1$ IEnvironmentBuildPathsChangeListener listener = new IEnvironmentBuildPathsChangeListener(){ @Override public void buildPathsChanged(IConfiguration configuration, int buildPathType){ listenerResult = listenerResult + configuration.getName().charAt(0) + buildPathType; } }; public ManagedBuildEnvironmentTests() { super(); } public ManagedBuildEnvironmentTests(String name) { super(name); } public static Test suite() { TestSuite suite = new TestSuite(ManagedBuildEnvironmentTests.class/*.getName()*/); // suite.addTest(new ManagedBuildEnvironmentTests("testEnvNotDef")); //$NON-NLS-1$ // suite.addTest(new ManagedBuildEnvironmentTests("testEnvUpper")); //$NON-NLS-1$ // suite.addTest(new ManagedBuildEnvironmentTests("testEnvAppend")); //$NON-NLS-1$ // suite.addTest(new ManagedBuildEnvironmentTests("testEnvCWDPWD")); //$NON-NLS-1$ // suite.addTest(new ManagedBuildEnvironmentTests("testEnvSuppliers")); //$NON-NLS-1$ // suite.addTest(new ManagedBuildEnvironmentTests("testEnvGetPath")); //$NON-NLS-1$ // suite.addTest(new ManagedBuildEnvironmentTests("testEnvSubscribe")); //$NON-NLS-1$ // suite.addTest(new ManagedBuildEnvironmentTests("testEnvGetParams")); //$NON-NLS-1$ // suite.addTest(new ManagedBuildEnvironmentTests("testEnvRemove")); //$NON-NLS-1$ // suite.addTest(new ManagedBuildEnvironmentTests("testEnvProvider")); //$NON-NLS-1$ return suite; } // Checking behaviour when vars are not defined (except system) public void testEnvNotDef(){ doInit(); assertNotNull("System vars", envProvider.getVariables(null, true, false)); //$NON-NLS-1$ assertNotNull("Worksp. vars", envProvider.getVariables(worksp, true, false)); //$NON-NLS-1$ assertNotNull("Project vars", envProvider.getVariables(mproj, true, false)); //$NON-NLS-1$ IConfiguration[] cfgs = mproj.getConfigurations(); for (int k=0; k<cfgs.length; k++) { assertNotNull("Project vars["+k+"]", //$NON-NLS-1$ //$NON-NLS-2$ envProvider.getVariables(cfgs[k], true, false)); } } /** * testEnvUpper - check uplevel variables * In each context, up-level vars should be returned */ // public void testEnvUpper(){ // doInit(); // addTestVariables(); // IBuildEnvironmentVariable[] a = envProvider.getVariables(null, true, false); // IBuildEnvironmentVariable[] b = envProvider.getVariables(worksp, true, false); // assertTrue(varListContainNames(a, b)); // IBuildEnvironmentVariable[] c = envProvider.getVariables(mproj, true, false); // assertTrue(varListContainNames(b, c)); // // IConfiguration[] cfgs = mproj.getConfigurations(); // for (int k=0; k<cfgs.length; k++) { // IBuildEnvironmentVariable[] d = envProvider.getVariables(cfgs[k], true, false); // assertTrue(varListContainNames(c, d)); // } // } /** * * */ // public void testEnvAppend(){ // doInit(); // // IBuildEnvironmentVariable a = envProvider.getVariable(NAME_CMN, worksp, true, false); // assertEquals(NAME_WSP, a.getValue()); // // assertNotNull(a = envProvider.getVariable(NAME_CMN, mproj, true, false)); // assertEquals(NAME_WSP+DEL_UNIX+NAME_PRJI, a.getValue()); // // IConfiguration cfg = mproj.getConfigurations()[0]; // assertNotNull(a = envProvider.getVariable(NAME_CMN, cfg, true, false)); // assertEquals(NAME_WSP+DEL_UNIX+NAME_PRJI+DEL_UNIX+NAME_CFGI, a.getValue()); // } /** * * */ public void testEnvCWDPWD(){ doInit(); IConfiguration cfg = mproj.getConfigurations()[0]; // CWD/PWD vars should NOT be overwritten anywhere // assertNull(envProvider.getVariable(NAME_CWD, worksp, true, false)); // assertNull(envProvider.getVariable(NAME_CWD, mproj, true, false)); IBuildEnvironmentVariable a = envProvider.getVariable(NAME_CWD, cfg, true, false); assertNotNull(a); if (VAL_CWDPWD.equals(a.getValue())) fail("CWD should not be rewritten !"); //$NON-NLS-1$ // assertNull(envProvider.getVariable(NAME_PWD, worksp, true, false)); // assertNull(envProvider.getVariable(NAME_PWD, mproj, true, false)); a = envProvider.getVariable(NAME_PWD, cfg, true, false); assertNotNull(a); if (VAL_CWDPWD.equals(a.getValue())) fail("PWD should not be rewritten !"); //$NON-NLS-1$ // try to delete: should fail // UserDefinedEnvironmentSupplier usup = getSupplier(cfg, cfg.getName()); // assertNull(usup.deleteVariable(NAME_CWD, cfg)); // assertNull(usup.deleteVariable(NAME_PWD, cfg)); // assertNotNull(envProvider.getVariable(NAME_CWD, cfg, true, false)); // assertNotNull(envProvider.getVariable(NAME_PWD, cfg, true, false)); } /* public void testEnvSuppliers() { doInit(); IEnvironmentVariableSupplier[] arrSupSys = envProvider.getSuppliers(null); assertEquals("System suppliers count not equal to 1", arrSupSys.length, 1); //$NON-NLS-1$ IBuildEnvironmentVariable[] a = arrSupSys[0].getVariables(null); assertNotNull(a); IBuildEnvironmentVariable[] b = envProvider.getVariables(null, false, false); assertTrue(varListContainNames(a, b)); assertTrue(varListContainNames(b, a)); IEnvironmentVariableSupplier[] arrSupWrk = envProvider.getSuppliers(worksp); assertEquals("Workspace suppliers count not equal to 1", arrSupWrk.length, 1); //$NON-NLS-1$ a = arrSupWrk[0].getVariables(worksp); assertNotNull(a); b = envProvider.getVariables(worksp, false, false); assertTrue(varListContainNames(a, b)); assertTrue(varListContainNames(b, a)); IEnvironmentVariableSupplier[] arrSupPro = envProvider.getSuppliers(mproj); assertEquals("Project suppliers count not equal to 2", arrSupPro.length, 2); //$NON-NLS-1$ b = envProvider.getVariables(mproj, false, false); for (int k=0; k<arrSupPro.length; k++ ) { assertTrue(varListContainNames(arrSupPro[k].getVariables(mproj), b)); } IConfiguration[] configs = mproj.getConfigurations(); for (int j=0; j<configs.length; j++) { b = envProvider.getVariables(configs[j], false, false); IEnvironmentVariableSupplier[] arrSupCfg = envProvider.getSuppliers(configs[j]); assertEquals("Configuration suppliers count not equal to 3", arrSupCfg.length, 3); //$NON-NLS-1$ for (int k=0; k<arrSupCfg.length; k++ ) { assertTrue(varListContainNames(arrSupCfg[k].getVariables(configs[j]), b)); } } } */ /* * plugin.xml contents: <projectType id="cdt.managedbuild.target.testgnu.exe"> ... <configuration name="Dbg" ... <tool ... <envVarBuildPath pathType="buildpathInclude" variableList="CFGI,CFG0,PRJI"> </envVarBuildPath> <envVarBuildPath pathType="buildpathLibrary" variableList="CFGL,PRJL"> </envVarBuildPath> ... <configuration name="Rel" ... <tool ... <envVarBuildPath pathType="buildpathInclude" variableList="CFGI,CFG1,PRJI"> </envVarBuildPath> <envVarBuildPath pathType="buildpathLibrary" variableList="CFGL,PRJL"> </envVarBuildPath> */ public void rm_testEnvGetPath(){ doInit(); IConfiguration[] configs = mproj.getConfigurations(); for (int i=0; i<2; i++) { // only 2 first configs are affected String[] val_inc = {"/config/include/"+i, "/config"+i+"/include", VAL_PRO_INC}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ String[] val_lib = {"/config/lib/"+i, VAL_PRO_LIB}; //$NON-NLS-1$ String[] s1, s2, s3; s1 = envProvider.getBuildPaths(configs[i], 1); // include s2 = envProvider.getBuildPaths(configs[i], 2); // library s3 = envProvider.getBuildPaths(configs[i], 0); // unknown assertNotNull("Include path is null", s1); //$NON-NLS-1$ assertNotNull("Library path is null", s2); //$NON-NLS-1$ assertNotNull("Bad path type returns null", s3); //$NON-NLS-1$ assertEquals("Include path should contain 3 entries !", s1.length, 3); //$NON-NLS-1$ assertEquals("Library path should contain 2 entries !", s2.length, 2); //$NON-NLS-1$ assertEquals("Request with bad path type should return 0 entries !", s3.length, 0); //$NON-NLS-1$ compareStringLists(configs[i].getName()+"-include", s1, val_inc); //$NON-NLS-1$ compareStringLists(configs[i].getName()+"-library", s2, val_lib); //$NON-NLS-1$ } } // public void testEnvSubscribe(){ // doInit(); // IConfiguration[] configs = mproj.getConfigurations(); // // IConfiguration cfg = configs[0]; // UserDefinedEnvironmentSupplier usup = getSupplier(cfg, cfg.getName()); // assertNotNull(usup); // try { // // usup.deleteVariable(NAME_CFGI,configs[0]); // usup.deleteVariable(NAME_CFGI,configs[1]); // usup.deleteVariable(NAME_CFG+"0",configs[0]); // usup.deleteVariable(NAME_CFG+"1",configs[0]); // usup.deleteVariable(NAME_CFG+"0",configs[1]); // usup.deleteVariable(NAME_CFG+"1",configs[1]); // usup.deleteVariable(NAME_CFGL,configs[0]); // usup.deleteVariable(NAME_CFGL,configs[1]); // usup.deleteVariable(NAME_PRJI,mproj); // usup.deleteVariable(NAME_PRJL,mproj); // usup.deleteVariable(NAME_CFGX,mproj); // listenerResult = ""; //$NON-NLS-1$ // // envProvider.subscribe(listener); // // should affect config Deb // usup.createVariable(NAME_CFGI,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[0]); // assertEquals("Step 1", listenerResult, LISTENER_DATA.substring(0,2)); //$NON-NLS-1$ // // should affect config Rel // usup.createVariable(NAME_CFGI,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[1]); // assertEquals("Step 2", listenerResult, LISTENER_DATA.substring(0,4)); //$NON-NLS-1$ // // // should affect config Deb // usup.createVariable(NAME_CFG+"0",VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[0]); //$NON-NLS-1$ // assertEquals("Step 3", listenerResult, LISTENER_DATA.substring(0,6)); //$NON-NLS-1$ // // should not affect anything - variable not in path of cfg 0 // usup.createVariable(NAME_CFG+"1",VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[0]); //$NON-NLS-1$ // assertEquals("Step 4", listenerResult, LISTENER_DATA.substring(0,6)); //$NON-NLS-1$ // // // should affect config Deb // usup.createVariable(NAME_CFGL,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[0]); // assertEquals("Step 5", listenerResult, LISTENER_DATA.substring(0,8)); //$NON-NLS-1$ // // should affect config Rel // usup.createVariable(NAME_CFGL,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[1]); // assertEquals("Step 6", listenerResult, LISTENER_DATA.substring(0,10)); //$NON-NLS-1$ // // // should not affect anything - variable not in path of cfg 1 // usup.createVariable(NAME_CFG+"0",VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[1]); //$NON-NLS-1$ // assertEquals("Step 7", listenerResult, LISTENER_DATA.substring(0,10)); //$NON-NLS-1$ // // should affect config Rel // usup.createVariable(NAME_CFG+"1",VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[1]); //$NON-NLS-1$ // assertEquals("Step 8", listenerResult, LISTENER_DATA.substring(0,12)); //$NON-NLS-1$ // // // should affect both configurations // usup.createVariable(NAME_PRJI,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, mproj); // assertEquals("Step 9", listenerResult, LISTENER_DATA.substring(0,16)); //$NON-NLS-1$ // // should affect both configurations // usup.createVariable(NAME_PRJL,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, mproj); // assertEquals("Step 10", listenerResult, LISTENER_DATA); //$NON-NLS-1$ // // // // should not affect anything - no changes // usup.createVariable(NAME_PRJL,VAL_DUMMY2,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, mproj); // assertEquals("Step 11", listenerResult, LISTENER_DATA); //$NON-NLS-1$ // // should not affect anything - variable not in path // usup.createVariable(NAME_CFGX,VAL_DUMMY2, IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, mproj); // assertEquals("Step 12", listenerResult, LISTENER_DATA); //$NON-NLS-1$ // // envProvider.unsubscribe(listener); // // // should NOT affect anything - subscription cancelled // usup.createVariable(NAME_PRJI,VAL_DUMMY1,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, mproj); // usup.createVariable(NAME_CFGI,VAL_DUMMY1,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[0]); // usup.createVariable(NAME_CFGI,VAL_DUMMY1,IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, configs[1]); // assertEquals("Step 13", listenerResult, LISTENER_DATA); //$NON-NLS-1$ // // } catch (Exception e) { // fail("Failed to create configuration vars !"); //$NON-NLS-1$ // } // } /** * * */ public void testEnvGetParams(){ doInit(); IEnvironmentVariableProvider envProvider = ManagedBuildManager.getEnvironmentVariableProvider(); IBuildEnvironmentVariable x = null; IBuildEnvironmentVariable y = null; if (System.getProperty("os.name").toLowerCase().startsWith("windows")) { //$NON-NLS-1$ //$NON-NLS-2$ assertEquals(envProvider.getDefaultDelimiter(), DEL_WIN); assertFalse(envProvider.isVariableCaseSensitive()); // these var instances are different although contents is equal. x = envProvider.getVariable("PATH", mproj.getConfigurations()[0], true, false); assertNotNull(x); y = envProvider.getVariable("path", mproj.getConfigurations()[0], true, false); assertNotNull(y); assertEquals(x.getName(), y.getName()); assertEquals(x.getValue(), y.getValue()); } else { assertEquals(envProvider.getDefaultDelimiter(), DEL_UNIX); assertTrue(envProvider.isVariableCaseSensitive()); // "path" is different var (may absent); x = envProvider.getVariable("PATH", mproj.getConfigurations()[0], true, false); assertNotNull(x); y = envProvider.getVariable("path", mproj.getConfigurations()[0], true, false); if (y != null) { assertFalse(x.getName().equals(y.getName())); } } } /** * * */ // public void testEnvRemove(){ // doInit(); // IEnvironmentVariableProvider env = ManagedBuildManager.getEnvironmentVariableProvider(); // UserDefinedEnvironmentSupplier usup = null; // // // create vars for removal tests // assertNotNull(usup = getSupplier(worksp, "Workspace")); //$NON-NLS-1$ // try { // assertNotNull(usup.createVariable(NAME_REM1, VAL_DUMMY1, IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, worksp)); // assertNotNull(usup.createVariable(NAME_REM2, VAL_DUMMY1, IBuildEnvironmentVariable.ENVVAR_REPLACE, DEL_UNIX, worksp)); // } catch (Exception e) { fail(e.getLocalizedMessage()); } // // assertNotNull(usup = getSupplier(mproj, "Project")); //$NON-NLS-1$ // try { // assertNotNull(usup.createVariable(NAME_REM1, VAL_DUMMY2, IBuildEnvironmentVariable.ENVVAR_REMOVE, DEL_UNIX, mproj)); // assertNotNull(usup.createVariable(NAME_REM2, VAL_DUMMY2, IBuildEnvironmentVariable.ENVVAR_APPEND, DEL_UNIX, mproj)); // } catch (Exception e) { fail(e.getLocalizedMessage()); } // // IConfiguration cfg = mproj.getConfigurations()[0]; // assertNotNull(usup = getSupplier(cfg, "Configuration 0")); //$NON-NLS-1$ // try { // assertNotNull(usup.createVariable(NAME_REM1, VAL_CWDPWD, IBuildEnvironmentVariable.ENVVAR_REMOVE, DEL_UNIX, cfg)); // assertNotNull(usup.createVariable(NAME_REM2, VAL_CWDPWD, IBuildEnvironmentVariable.ENVVAR_REMOVE, DEL_UNIX, cfg)); // } catch (Exception e) { fail(e.getLocalizedMessage()); } // // // Check vars presence/absence on different levels // IBuildEnvironmentVariable a = env.getVariable(NAME_REM1, worksp, true, false); // IBuildEnvironmentVariable b = env.getVariable(NAME_REM2, worksp, true, false); // assertNotNull(a); // assertNotNull(b); // a = env.getVariable(NAME_REM1, mproj, true, false); // b = env.getVariable(NAME_REM2, mproj, true, false); // assertNull(a); // assertNotNull(b); // assertEquals(b.getValue(), VAL_DUMMY1 + DEL_UNIX + VAL_DUMMY2); // a = env.getVariable(NAME_REM1, cfg, true, false); // b = env.getVariable(NAME_REM2, cfg, true, false); // assertNull(a); // assertNull(b); // } /** * testEnvProvider() - */ public void testEnvProvider() { doInit(); IBuildEnvironmentVariable a = envProvider.getVariable(TestMacro.PRJ_VAR, mproj.getConfigurations()[0], true, false); assertNotNull(a); assertEquals(TestMacro.PRJ_VAR + mproj.getName(), a.getValue()); IConfiguration[] cfgs = mproj.getConfigurations(); a = envProvider.getVariable(TestMacro.CFG_VAR, cfgs[0], true, false); assertNotNull(a); assertEquals(TestMacro.CFG_VAR + cfgs[0].getName(), a.getValue()); // no provider for another configurations a = envProvider.getVariable(TestMacro.CFG_VAR, cfgs[1], true, false); assertNull(a); // combination user-defined and provided variables // UserDefinedEnvironmentSupplier usup = getSupplier(cfgs[0], cfgs[0].getName()); // usup.createVariable(TestMacro.PRJ_VAR, VAL_DUMMY1, IBuildEnvironmentVariable.ENVVAR_PREPEND, DEL_UNIX, cfgs[0]); // a = envProvider.getVariable(TestMacro.PRJ_VAR, cfgs[0], true, false); // assertNotNull(a); // assertEquals(VAL_DUMMY1+DEL_UNIX+TestMacro.PRJ_VAR+mproj.getName(), a.getValue()); } /** * This test is not used iun suite. It just prints variabes */ // public void testEnvPrint(){ // doInit(); // printVar("s-Var", envProvider.getVariables(null, false, false)); //$NON-NLS-1$ // printVar("w-Var", envProvider.getVariables(worksp, false, false)); //$NON-NLS-1$ // printVar("p-Var", envProvider.getVariables(mproj, false, false)); //$NON-NLS-1$ // IConfiguration[] cfgs = mproj.getConfigurations(); // for (int k=0; k<cfgs.length; k++) { // printVar("c[" + k + "]-Var", envProvider.getVariables(cfgs[k], false, false)); //$NON-NLS-1$ //$NON-NLS-2$ // } // } // Create all required user variables // public static UserDefinedEnvironmentSupplier getSupplier(Object obj, String objName) { // IEnvironmentVariableSupplier[] arrSup = null; // arrSup = ManagedBuildManager.getEnvironmentVariableProvider().getSuppliers(obj); // for (int i=0; i<arrSup.length; i++ ) { // if (arrSup[i] instanceof UserDefinedEnvironmentSupplier) { // return (UserDefinedEnvironmentSupplier) arrSup[i]; // } // } // fail("Cannot access user variable supplier for " + objName); //$NON-NLS-1$ // return null; // } /** * * * Note: CWD and PWD vars are not allowed to be added/changed */ // private void addTestVariables() { // final int STD_MODE = IBuildEnvironmentVariable.ENVVAR_REPLACE; // UserDefinedEnvironmentSupplier usup = null; // usup = getSupplier(worksp, "Workspace"); //$NON-NLS-1$ // try { // if (usup != null) { // assertNotNull(usup.createVariable(NAME_CMN, NAME_WSP, IBuildEnvironmentVariable.ENVVAR_APPEND, DEL_UNIX, worksp)); // assertNotNull(usup.createVariable(NAME_WSP,VAL_DUMMY1, STD_MODE, DEL_UNIX, worksp)); // assertNull(usup.createVariable(NAME_CWD,VAL_CWDPWD, STD_MODE, DEL_UNIX, worksp)); // assertNull(usup.createVariable(NAME_PWD,VAL_CWDPWD, STD_MODE, DEL_UNIX, worksp)); // } // } catch (Exception e) { // fail("Failed to create workspace vars " + e.getLocalizedMessage()); //$NON-NLS-1$ // } // // usup = getSupplier(mproj, "Project"); //$NON-NLS-1$ // try { // if (usup != null) { // assertNotNull(usup.createVariable(NAME_CMN, NAME_PRJI, IBuildEnvironmentVariable.ENVVAR_APPEND, DEL_UNIX, mproj)); // assertNotNull(usup.createVariable(NAME_PRJI,VAL_PRO_INC, STD_MODE, DEL_UNIX, mproj)); // assertNotNull(usup.createVariable(NAME_PRJL,VAL_PRO_LIB, STD_MODE, DEL_UNIX, mproj)); // assertNull(usup.createVariable(NAME_CWD, VAL_CWDPWD, STD_MODE, DEL_UNIX, mproj)); // assertNull(usup.createVariable(NAME_PWD, VAL_CWDPWD, STD_MODE, DEL_UNIX, mproj)); // } // } catch (Exception e) { // fail("Failed to create project vars " + e.getLocalizedMessage()); //$NON-NLS-1$ // } // // IConfiguration[] configs = mproj.getConfigurations(); // for (int i = 0; i < 2; i++) { // only 2 first configs are affected // IConfiguration cfg = configs[i]; // usup = getSupplier(cfg, "Configuration " + cfg.getName()); //$NON-NLS-1$ // try { // if (usup != null) { // assertNotNull(usup.createVariable(NAME_CMN, NAME_CFGI, IBuildEnvironmentVariable.ENVVAR_APPEND, DEL_UNIX, cfg)); // assertNotNull(usup.createVariable(NAME_CFGI, "/config/include/"+i, STD_MODE, DEL_UNIX, cfg)); //$NON-NLS-1$ // assertNotNull(usup.createVariable(NAME_CFG+i,"/config"+i+"/include",STD_MODE, DEL_UNIX, cfg)); //$NON-NLS-1$ //$NON-NLS-2$ // assertNotNull(usup.createVariable(NAME_CFGL, "/config/lib/"+i, STD_MODE, DEL_UNIX, cfg)); //$NON-NLS-1$ // assertNotNull(usup.createVariable(NAME_CFGX, "/config/unused", STD_MODE, DEL_UNIX, cfg)); //$NON-NLS-1$ // assertNull(usup.createVariable(NAME_CWD, VAL_CWDPWD, STD_MODE, DEL_UNIX, cfg)); // assertNull(usup.createVariable(NAME_PWD, VAL_CWDPWD, STD_MODE, DEL_UNIX, cfg)); // } // } catch (Exception e) { // fail("Failed to create configuration vars for <" + cfg.getName() + "> - "+ e.getLocalizedMessage()); //$NON-NLS-1$ //$NON-NLS-2$ // } // } // try { // proj.build(IncrementalProjectBuilder.FULL_BUILD, null); // } catch (Exception e) {} // } private void doInit() { envProvider = ManagedBuildManager.getEnvironmentVariableProvider(); assertNotNull(envProvider); ManagedBuildMacrosTests.createManagedProject("Merde"); //$NON-NLS-1$ proj = ManagedBuildMacrosTests.proj; assertNotNull(proj); mproj = ManagedBuildMacrosTests.mproj; assertNotNull(mproj); worksp = proj.getWorkspace(); assertNotNull(worksp); } /* * Print contents of env.var array, with given header. */ // private void printVar(String head, IBuildEnvironmentVariable[] vars) { // if (vars != null) { // if (vars.length > 0) { // for (int i=0; i < vars.length; i++) { // System.out.println(head + "[" + i + "] " + //$NON-NLS-1$ //$NON-NLS-2$ // vars[i].getName() + " = " + //$NON-NLS-1$ // vars[i].getValue() + " / " + //$NON-NLS-1$ // vars[i].getOperation() + vars[i].getDelimiter()); // } // } else { System.out.println(head + ": array is empty"); } //$NON-NLS-1$ // } else { System.out.println(head + ": array is null"); } //$NON-NLS-1$ // } /* * check that ALL variables from list "a" have correspondence * in list "b" * empty list or null are treated as corresponding to anything */ // private boolean varListContainNames(IBuildEnvironmentVariable[] a, IBuildEnvironmentVariable[] b) { // if (a == null) return true; // else if (a.length == 0) return true; // else if (b == null) return false; // // for (int i=0; i<a.length; i++) { // boolean found = false; // for (int j=0; j<b.length; j++) { // if (a[i].getName().equals(b[j].getName())) { // found = true; // break; // } // } // if (!found) return false; // } // return true; // } /** * * @param head * @param a * @param b */ private void compareStringLists(String head, String[] a, String[] b) { long mask =0; long finalmask = Math.round(Math.pow(2,b.length) - 1); for (int k=0; k<a.length; k++) { boolean found = false; for (int m=0; m<b.length; m++) { if (a[k].equals(b[m])) { mask |= 1 << m; found = true; break; } } assertTrue(found); } assertEquals(mask, finalmask); } }