Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-8-24-23'

This commit is contained in:
ghidra1
2023-08-25 18:16:30 -04:00
12 changed files with 51 additions and 67 deletions
@@ -20,8 +20,6 @@ import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.StringUtils;
import docking.widgets.fieldpanel.field.*; import docking.widgets.fieldpanel.field.*;
import docking.widgets.fieldpanel.support.*; import docking.widgets.fieldpanel.support.*;
import generic.theme.GThemeDefaults.Colors.Palette; import generic.theme.GThemeDefaults.Colors.Palette;
@@ -36,7 +34,6 @@ import ghidra.program.model.address.Address;
import ghidra.program.model.listing.*; import ghidra.program.model.listing.*;
import ghidra.program.util.*; import ghidra.program.util.*;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.StringUtilities;
import ghidra.util.bean.field.AnnotatedTextFieldElement; import ghidra.util.bean.field.AnnotatedTextFieldElement;
/** /**
@@ -359,10 +356,6 @@ public class EolCommentFieldFactory extends FieldFactory {
AttributedString currentPrefixString, boolean showPrefix, boolean wordWrap, AttributedString currentPrefixString, boolean showPrefix, boolean wordWrap,
int nextRow) { int nextRow) {
if (wordWrap) {
comments = adjustCommentsForWrapping(comments);
}
List<FieldElement> fieldElements = new ArrayList<>(); List<FieldElement> fieldElements = new ArrayList<>();
if (comments.length == 0) { if (comments.length == 0) {
return fieldElements; return fieldElements;
@@ -393,33 +386,10 @@ public class EolCommentFieldFactory extends FieldFactory {
return fieldElements; return fieldElements;
} }
private String[] adjustCommentsForWrapping(String[] comments) {
List<String> list = new ArrayList<>();
int lastComment = comments.length - 1;
for (int i = 0; i < lastComment; i++) {
String string = comments[i];
if (!StringUtils.isBlank(string) && !StringUtilities.endsWithWhiteSpace(string)) {
list.add(string + " ");
}
else {
list.add(string);
}
}
if (lastComment >= 0) {
list.add(comments[lastComment]);
}
comments = list.toArray(new String[list.size()]);
return comments;
}
private List<FieldElement> convertToRefFieldElements(String[] comments, Program program, private List<FieldElement> convertToRefFieldElements(String[] comments, Program program,
AttributedString currentPrefixString, boolean showPrefix, boolean wordWrap, AttributedString currentPrefixString, boolean showPrefix, boolean wordWrap,
boolean showRefAddress, Address refAddress, int nextRow) { boolean showRefAddress, Address refAddress, int nextRow) {
if (wordWrap) {
comments = adjustCommentsForWrapping(comments);
}
int numCommentLines = comments.length; int numCommentLines = comments.length;
List<FieldElement> fieldElements = new ArrayList<>(); List<FieldElement> fieldElements = new ArrayList<>();
if (numCommentLines == 0) { if (numCommentLines == 0) {
@@ -262,8 +262,8 @@ public class CommentsPluginTest extends AbstractGhidraHeadedIntegrationTest {
assertEquals(17, browser.getCurrentFieldLoction().getRow()); assertEquals(17, browser.getCurrentFieldLoction().getRow());
assertEquals(4, browser.getCurrentFieldLoction().getCol()); assertEquals(4, browser.getCurrentFieldLoction().getCol());
assertEquals(3, browser2.getCurrentFieldLoction().getRow()); assertEquals(4, browser2.getCurrentFieldLoction().getRow());
assertEquals(46, browser2.getCurrentFieldLoction().getCol()); assertEquals(4, browser2.getCurrentFieldLoction().getCol());
} }
@Test @Test
@@ -133,7 +133,8 @@ public class MemoryMapProvider1Test extends AbstractGhidraHeadedIntegrationTest
String name = action.getName(); String name = action.getName();
if (name.equals("Add Block") || name.equals("Merge Blocks") || if (name.equals("Add Block") || name.equals("Merge Blocks") ||
name.equals("Delete Block") || name.equals("Set Image Base") || name.equals("Delete Block") || name.equals("Set Image Base") ||
name.equals("Memory Map") || name.equals("Close Window")) { name.equals("Memory Map") || name.equals("Close Window") ||
name.equals("Make Selection")) {
assertTrue("Action should be enabled for a multi-row selection - '" + name + "'", assertTrue("Action should be enabled for a multi-row selection - '" + name + "'",
action.isEnabled()); action.isEnabled());
} }
@@ -236,7 +236,7 @@ public class ListingPanelTest extends AbstractGhidraHeadedIntegrationTest {
assertEquals(EolCommentFieldLocation.class, loc.getClass()); assertEquals(EolCommentFieldLocation.class, loc.getClass());
bfloc = (EolCommentFieldLocation) loc; bfloc = (EolCommentFieldLocation) loc;
assertEquals(0, bfloc.getRow()); assertEquals(0, bfloc.getRow());
assertEquals(72, bfloc.getCharOffset()); assertEquals(70, bfloc.getCharOffset());
} }
@Test @Test
@@ -306,13 +306,7 @@ public class ListingPanelTest extends AbstractGhidraHeadedIntegrationTest {
showTool(tool); showTool(tool);
AtomicReference<AddressSetView> addresses = new AtomicReference<>(); AtomicReference<AddressSetView> addresses = new AtomicReference<>();
CodeViewerService cvs = tool.getService(CodeViewerService.class); cvs.addListingDisplayListener(visibleAddresses -> addresses.set(visibleAddresses));
cvs.addListingDisplayListener(new AddressSetDisplayListener() {
@Override
public void visibleAddressesChanged(AddressSetView visibleAddresses) {
addresses.set(visibleAddresses);
}
});
assertNull(addresses.get()); assertNull(addresses.get());
cvs.goTo(new ProgramLocation(program, addr(0x1008000)), false); cvs.goTo(new ProgramLocation(program, addr(0x1008000)), false);
@@ -134,7 +134,11 @@ public class VerticalLayoutTextField implements TextField {
StringBuilder buf = new StringBuilder(); StringBuilder buf = new StringBuilder();
int n = elements.size() - 1; int n = elements.size() - 1;
for (int i = 0; i < n; i++) { for (int i = 0; i < n; i++) {
buf.append(elements.get(i).getText()).append(delimiter); String text = elements.get(i).getText();
buf.append(text);
if (!text.endsWith(delimiter)) { // prevent 2 spaces between merged lines
buf.append(delimiter);
}
} }
buf.append(elements.get(n).getText()); buf.append(elements.get(n).getText());
return buf.toString(); return buf.toString();
@@ -492,15 +492,15 @@ public class CompositeVerticalLayoutTextFieldTest extends AbstractGenericTest {
assertEquals(4, field.getNumRows()); assertEquals(4, field.getNumRows());
assertEquals("This is a line", field.getFieldElement(0, 0).getText()); assertEquals("This is a line ", field.getFieldElement(0, 0).getText());
assertEquals("with multiple", field.getFieldElement(1, 0).getText()); assertEquals("with multiple ", field.getFieldElement(1, 0).getText());
assertEquals("words for", field.getFieldElement(2, 0).getText()); assertEquals("words for ", field.getFieldElement(2, 0).getText());
assertEquals("wrapping", field.getFieldElement(3, 0).getText()); assertEquals("wrapping", field.getFieldElement(3, 0).getText());
// note: the final 'data' row becomes 4 'screen' rows // note: the final 'data' row becomes 4 'screen' rows
assertEquals(15, field.getNumCols(0)); assertEquals(16, field.getNumCols(0));
assertEquals(14, field.getNumCols(1)); assertEquals(15, field.getNumCols(1));
assertEquals(10, field.getNumCols(2)); assertEquals(11, field.getNumCols(2));
assertEquals(9, field.getNumCols(3)); assertEquals(9, field.getNumCols(3));
} }
@@ -511,15 +511,15 @@ public class CompositeVerticalLayoutTextFieldTest extends AbstractGenericTest {
assertEquals(4, field.getNumRows()); assertEquals(4, field.getNumRows());
assertEquals("This is line", field.getFieldElement(0, 0).getText()); assertEquals("This is line ", field.getFieldElement(0, 0).getText());
assertEquals("one", field.getFieldElement(1, 0).getText()); assertEquals("one", field.getFieldElement(1, 0).getText());
assertEquals("This is line", field.getFieldElement(2, 0).getText()); assertEquals("This is line ", field.getFieldElement(2, 0).getText());
assertEquals("two", field.getFieldElement(3, 0).getText()); assertEquals("two", field.getFieldElement(3, 0).getText());
// note: the final 'data' row becomes 4 'screen' rows // note: the final 'data' row becomes 4 'screen' rows
assertEquals(13, field.getNumCols(0)); assertEquals(14, field.getNumCols(0));
assertEquals(4, field.getNumCols(1)); assertEquals(4, field.getNumCols(1));
assertEquals(13, field.getNumCols(2)); assertEquals(14, field.getNumCols(2));
assertEquals(4, field.getNumCols(3)); assertEquals(4, field.getNumCols(3));
} }
@@ -535,17 +535,17 @@ public class CompositeVerticalLayoutTextFieldTest extends AbstractGenericTest {
assertEquals(5, field.getNumRows()); assertEquals(5, field.getNumRows());
assertEquals("This is line", field.getFieldElement(0, 0).getText()); assertEquals("This is line ", field.getFieldElement(0, 0).getText());
assertEquals("one", field.getFieldElement(1, 0).getText()); assertEquals("one", field.getFieldElement(1, 0).getText());
assertEquals("This line does not wrap", field.getFieldElement(2, 0).getText()); assertEquals("This line does not wrap", field.getFieldElement(2, 0).getText());
assertEquals("This is line", field.getFieldElement(3, 0).getText()); assertEquals("This is line ", field.getFieldElement(3, 0).getText());
assertEquals("two", field.getFieldElement(4, 0).getText()); assertEquals("two", field.getFieldElement(4, 0).getText());
// note: the final 'data' row becomes 5 'screen' rows // note: the final 'data' row becomes 5 'screen' rows
assertEquals(13, field.getNumCols(0)); assertEquals(14, field.getNumCols(0));
assertEquals(4, field.getNumCols(1)); assertEquals(4, field.getNumCols(1));
assertEquals(14, field.getNumCols(2)); assertEquals(14, field.getNumCols(2));
assertEquals(13, field.getNumCols(3)); assertEquals(14, field.getNumCols(3));
assertEquals(4, field.getNumCols(4)); assertEquals(4, field.getNumCols(4));
} }
@@ -565,8 +565,8 @@ public class CompositeVerticalLayoutTextFieldTest extends AbstractGenericTest {
assertEquals(row1, field.getFieldElement(0, 0).getText()); assertEquals(row1, field.getFieldElement(0, 0).getText());
assertEquals(row2, field.getFieldElement(1, 0).getText()); assertEquals(row2, field.getFieldElement(1, 0).getText());
assertEquals("3: wrapped", field.getFieldElement(2, 0).getText()); assertEquals("3: wrapped ", field.getFieldElement(2, 0).getText());
assertEquals("row: This field", field.getFieldElement(3, 0).getText()); assertEquals("row: This field ", field.getFieldElement(3, 0).getText());
assertEquals("will wrap", field.getFieldElement(4, 0).getText()); assertEquals("will wrap", field.getFieldElement(4, 0).getText());
// not sure how to get this from the field // not sure how to get this from the field
@@ -575,8 +575,8 @@ public class CompositeVerticalLayoutTextFieldTest extends AbstractGenericTest {
assertEquals(clippedLength, field.getNumCols(1)); assertEquals(clippedLength, field.getNumCols(1));
// note: the final 'data' row becomes 3 'screen' rows // note: the final 'data' row becomes 3 'screen' rows
assertEquals(11, field.getNumCols(2)); assertEquals(12, field.getNumCols(2));
assertEquals(16, field.getNumCols(3)); assertEquals(17, field.getNumCols(3));
assertEquals(10, field.getNumCols(4)); assertEquals(10, field.getNumCols(4));
} }
@@ -26,9 +26,11 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category;
import db.Transaction; import db.Transaction;
import generic.Unique; import generic.Unique;
import generic.test.category.NightlyCategory;
import ghidra.app.plugin.core.debug.service.rmi.trace.TraceRmiAcceptor; import ghidra.app.plugin.core.debug.service.rmi.trace.TraceRmiAcceptor;
import ghidra.app.plugin.core.debug.service.rmi.trace.TraceRmiHandler; import ghidra.app.plugin.core.debug.service.rmi.trace.TraceRmiHandler;
import ghidra.app.plugin.core.debug.utils.ManagedDomainObject; import ghidra.app.plugin.core.debug.utils.ManagedDomainObject;
@@ -50,6 +52,7 @@ import ghidra.trace.model.target.*;
import ghidra.trace.model.time.TraceSnapshot; import ghidra.trace.model.time.TraceSnapshot;
import ghidra.util.Msg; import ghidra.util.Msg;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class GdbCommandsTest extends AbstractGdbTraceRmiTest { public class GdbCommandsTest extends AbstractGdbTraceRmiTest {
//@Test //@Test
@@ -15,8 +15,7 @@
*/ */
package agent.gdb.rmi; package agent.gdb.rmi;
import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.*;
import static org.hamcrest.Matchers.instanceOf;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
@@ -24,7 +23,9 @@ import java.util.List;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category;
import generic.test.category.NightlyCategory;
import ghidra.app.plugin.core.debug.utils.ManagedDomainObject; import ghidra.app.plugin.core.debug.utils.ManagedDomainObject;
import ghidra.dbg.target.TargetExecutionStateful.TargetExecutionState; import ghidra.dbg.target.TargetExecutionStateful.TargetExecutionState;
import ghidra.dbg.testutil.DummyProc; import ghidra.dbg.testutil.DummyProc;
@@ -37,6 +38,7 @@ import ghidra.trace.model.memory.TraceMemorySpace;
import ghidra.trace.model.target.TraceObject; import ghidra.trace.model.target.TraceObject;
import ghidra.trace.model.time.TraceSnapshot; import ghidra.trace.model.time.TraceSnapshot;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class GdbHooksTest extends AbstractGdbTraceRmiTest { public class GdbHooksTest extends AbstractGdbTraceRmiTest {
private static final long RUN_TIMEOUT_MS = 20000; private static final long RUN_TIMEOUT_MS = 20000;
private static final long RETRY_MS = 500; private static final long RETRY_MS = 500;
@@ -23,9 +23,11 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category;
import db.Transaction; import db.Transaction;
import generic.Unique; import generic.Unique;
import generic.test.category.NightlyCategory;
import ghidra.app.plugin.core.debug.service.rmi.trace.RemoteMethod; import ghidra.app.plugin.core.debug.service.rmi.trace.RemoteMethod;
import ghidra.app.plugin.core.debug.service.rmi.trace.ValueDecoder; import ghidra.app.plugin.core.debug.service.rmi.trace.ValueDecoder;
import ghidra.app.plugin.core.debug.utils.ManagedDomainObject; import ghidra.app.plugin.core.debug.utils.ManagedDomainObject;
@@ -48,6 +50,7 @@ import ghidra.trace.model.modules.TraceModule;
import ghidra.trace.model.target.TraceObject; import ghidra.trace.model.target.TraceObject;
import ghidra.trace.model.target.TraceObjectValue; import ghidra.trace.model.target.TraceObjectValue;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class GdbMethodsTest extends AbstractGdbTraceRmiTest { public class GdbMethodsTest extends AbstractGdbTraceRmiTest {
@Test @Test
@@ -27,8 +27,10 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category;
import generic.Unique; import generic.Unique;
import generic.test.category.NightlyCategory;
import ghidra.app.plugin.core.debug.service.rmi.trace.TraceRmiAcceptor; import ghidra.app.plugin.core.debug.service.rmi.trace.TraceRmiAcceptor;
import ghidra.app.plugin.core.debug.service.rmi.trace.TraceRmiHandler; import ghidra.app.plugin.core.debug.service.rmi.trace.TraceRmiHandler;
import ghidra.app.plugin.core.debug.utils.ManagedDomainObject; import ghidra.app.plugin.core.debug.utils.ManagedDomainObject;
@@ -46,6 +48,7 @@ import ghidra.trace.model.target.*;
import ghidra.trace.model.time.TraceSnapshot; import ghidra.trace.model.time.TraceSnapshot;
import ghidra.util.Msg; import ghidra.util.Msg;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class LldbCommandsTest extends AbstractLldbTraceRmiTest { public class LldbCommandsTest extends AbstractLldbTraceRmiTest {
//@Test //@Test
@@ -15,8 +15,7 @@
*/ */
package agent.lldb.rmi; package agent.lldb.rmi;
import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.*;
import static org.hamcrest.Matchers.instanceOf;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
@@ -25,7 +24,9 @@ import java.util.Objects;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category;
import generic.test.category.NightlyCategory;
import ghidra.app.plugin.core.debug.utils.ManagedDomainObject; import ghidra.app.plugin.core.debug.utils.ManagedDomainObject;
import ghidra.dbg.testutil.DummyProc; import ghidra.dbg.testutil.DummyProc;
import ghidra.dbg.util.PathPattern; import ghidra.dbg.util.PathPattern;
@@ -38,6 +39,7 @@ import ghidra.trace.model.memory.TraceMemorySpace;
import ghidra.trace.model.target.TraceObject; import ghidra.trace.model.target.TraceObject;
import ghidra.trace.model.time.TraceSnapshot; import ghidra.trace.model.time.TraceSnapshot;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class LldbHooksTest extends AbstractLldbTraceRmiTest { public class LldbHooksTest extends AbstractLldbTraceRmiTest {
private static final long RUN_TIMEOUT_MS = 20000; private static final long RUN_TIMEOUT_MS = 20000;
private static final long RETRY_MS = 500; private static final long RETRY_MS = 500;
@@ -15,15 +15,16 @@
*/ */
package agent.lldb.rmi; package agent.lldb.rmi;
import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.*;
import static org.hamcrest.Matchers.greaterThan;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import java.util.*; import java.util.*;
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category;
import generic.Unique; import generic.Unique;
import generic.test.category.NightlyCategory;
import ghidra.app.plugin.core.debug.service.rmi.trace.RemoteMethod; import ghidra.app.plugin.core.debug.service.rmi.trace.RemoteMethod;
import ghidra.app.plugin.core.debug.service.rmi.trace.ValueDecoder; import ghidra.app.plugin.core.debug.service.rmi.trace.ValueDecoder;
import ghidra.app.plugin.core.debug.utils.ManagedDomainObject; import ghidra.app.plugin.core.debug.utils.ManagedDomainObject;
@@ -42,6 +43,7 @@ import ghidra.trace.model.modules.TraceModule;
import ghidra.trace.model.target.TraceObject; import ghidra.trace.model.target.TraceObject;
import ghidra.trace.model.target.TraceObjectValue; import ghidra.trace.model.target.TraceObjectValue;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class LldbMethodsTest extends AbstractLldbTraceRmiTest { public class LldbMethodsTest extends AbstractLldbTraceRmiTest {
@Test @Test