package net.sourceforge.cruisecontrol.distributed; import junit.framework.TestCase; import net.sourceforge.cruisecontrol.builders.DistributedMasterBuilderTest; import java.awt.GraphicsEnvironment; import org.apache.log4j.Logger; /** * @author Dan Rollo * Date: Apr 3, 2007 * Time: 2:39:37 PM */ public class BuildAgentEntryOverrideUITest extends TestCase { private static final Logger LOG = Logger.getLogger(BuildAgentEntryOverrideUITest.class); public void testEditEntryOverrideUI() throws Exception { if (GraphicsEnvironment.isHeadless()) { LOG.warn("WARNING: DETECTED HEADLESS ENVIRONMENT. Skipping test: " + getClass().getName() + ".testEditEntryOverrideUI()"); return; } // hold reference original info to restore any entryOverrides that existed before this test ran final BuildAgentTest.ClearEntryOverridesInfo origEntryOverridesInfo = new BuildAgentTest.ClearEntryOverridesInfo(); final BuildAgent agent = DistributedMasterBuilderTest.createBuildAgent(false); final BuildAgentService agentService = agent.getService(); agent.clearEntryOverrides(); // otherwise, tests fail if overrides with same test values exist final BuildAgentEntryOverrideUI entryOverrideUI = new BuildAgentEntryOverrideUI(null, agentService, null); try { final PropertyEntry[] origEntries = agent.getEntryOverrides(); assertFalse(entryOverrideUI.isSaveEnabled()); entryOverrideUI.doNewRow(); assertTrue(entryOverrideUI.isSaveEnabled()); // new entry with empty value entryOverrideUI.setValueAt("newName", 0, BuildAgentEntryOverrideUI.COL_NAME); entryOverrideUI.doSave(); assertFalse(entryOverrideUI.isSaveEnabled()); assertEquals("Empty value should not have been saved.", origEntries.length, agent.getEntryOverrides().length); // new entry entryOverrideUI.setValueAt("newValue", 0, BuildAgentEntryOverrideUI.COL_VALUE); assertTrue(entryOverrideUI.isSaveEnabled()); entryOverrideUI.doSave(); assertFalse(entryOverrideUI.isSaveEnabled()); assertEquals("New entry should have been saved.", origEntries.length + 1, agent.getEntryOverrides().length); // clear all entryOverrideUI.doClearAll(); assertTrue(entryOverrideUI.isSaveEnabled()); assertEquals("Clear should not have been saved yet.", origEntries.length + 1, agent.getEntryOverrides().length); entryOverrideUI.doSave(); assertEquals("All entry overrides should have been cleared.", 0, agent.getEntryOverrides().length); } finally { // terminate JoinManager in BuildAgent BuildAgentTest.terminateTestAgent(agent); entryOverrideUI.dispose(); // restore entryOverrides, otherwise building CC clears JRE prefs storage on disk in build farm agents origEntryOverridesInfo.restoreOriginalEntryOverrides(); } } }