package test; import java.io.File; import aQute.bnd.build.Project; import aQute.bnd.build.Workspace; import aQute.bnd.header.Attrs; import aQute.lib.io.IO; import junit.framework.TestCase; public class WorkspaceTest extends TestCase { File tmp = new File("tmp"); @Override protected void setUp() { IO.delete(tmp); tmp.mkdir(); } @Override protected void tearDown() { IO.delete(tmp); } public void testDriver() throws Exception { try (Workspace w = new Workspace(tmp)) { assertEquals("unset", w.getDriver()); assertEquals("unset", w.getReplacer().process("${driver}")); assertEquals("unset", w.getReplacer().process("${driver;unset}")); assertEquals("", w.getReplacer().process("${driver;set}")); Workspace.setDriver("test"); assertEquals("test", w.getDriver()); assertEquals("test", w.getReplacer().process("${driver}")); assertEquals("test", w.getReplacer().process("${driver;test}")); assertEquals("", w.getReplacer().process("${driver;nottest}")); w.setProperty("-bnd-driver", "test2"); assertEquals("test2", w.getDriver()); assertEquals("test2", w.getReplacer().process("${driver}")); assertEquals("test2", w.getReplacer().process("${driver;test2}")); assertEquals("", w.getReplacer().process("${driver;nottest}")); } } public void testGestalt() throws Exception { Attrs attrs = new Attrs(); attrs.put("x", "10"); Workspace.addGestalt("peter", attrs); try (Workspace w = new Workspace(tmp)) { assertEquals("peter", w.getReplacer().process("${gestalt;peter}")); assertEquals("10", w.getReplacer().process("${gestalt;peter;x}")); assertEquals("10", w.getReplacer().process("${gestalt;peter;x;10}")); assertEquals("", w.getReplacer().process("${gestalt;peter;x;11}")); assertEquals("", w.getReplacer().process("${gestalt;peter;y}")); assertEquals("", w.getReplacer().process("${gestalt;john}")); assertEquals("", w.getReplacer().process("${gestalt;john;x}")); assertEquals("", w.getReplacer().process("${gestalt;john;x;10}")); } try (Workspace w = new Workspace(tmp)) { w.setProperty("-gestalt", "john;z=100, mieke;a=1000, ci"); assertEquals("peter", w.getReplacer().process("${gestalt;peter}")); assertEquals("10", w.getReplacer().process("${gestalt;peter;x}")); assertEquals("10", w.getReplacer().process("${gestalt;peter;x;10}")); assertEquals("", w.getReplacer().process("${gestalt;peter;x;11}")); assertEquals("", w.getReplacer().process("${gestalt;peter;y}")); assertEquals("john", w.getReplacer().process("${gestalt;john}")); assertEquals("100", w.getReplacer().process("${gestalt;john;z}")); assertEquals("100", w.getReplacer().process("${gestalt;john;z;100}")); assertEquals("", w.getReplacer().process("${gestalt;john;z;101}")); assertEquals("mieke", w.getReplacer().process("${gestalt;mieke}")); assertEquals("", w.getReplacer().process("${gestalt;mieke;x}")); } } public void testWorkspace() throws Exception { try (Workspace ws = Workspace.getWorkspace(IO.getFile("testresources/w o r k s p a c e"))) { assertEquals("parent", ws.getProperty("override")); assertEquals("ExtPlugin,ParentPlugin", ws.getProperty("-plugin")); assertEquals("true", ws.getProperty("ext")); assertEquals("abcdef", ws.getProperty("test")); } } public void testNestedWorkspace() throws Exception { try (Workspace ws = Workspace.getWorkspace(IO.getFile("testresources/redirectws/wss/ws"))) { assertEquals("true", ws.getProperty("testcnf")); assertEquals("true", ws.getProperty("ext")); } } public void testPropertyDefaulting() throws Exception { try (Workspace ws = Workspace.getWorkspace(IO.getFile("testresources/ws-defaulting"))) { Project p = ws.getProject("p1"); assertEquals("defaults", p.getProperty("myprop1")); assertEquals("workspace", p.getProperty("myprop2")); assertEquals("project", p.getProperty("myprop3")); assertEquals("src", p.mergeProperties("src")); } } public void testIsValid() throws Exception { try (Workspace ws = Workspace.getWorkspace(IO.getFile("testresources/ws"))) { assertEquals(true, ws.isValid()); } try (Workspace invalidWs = new Workspace(IO.getFile("testresources/not a workspace"))) { assertEquals(false, invalidWs.isValid()); } } public void testJavacDefaults() throws Exception { String version = System.getProperty("java.specification.version", "1.8"); try (Workspace w = new Workspace(tmp)) { assertEquals(version, w.getProperty("javac.source")); assertEquals(version, w.getProperty("javac.target")); } } }