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.List;
import org.apache.commons.lang3.StringUtils;
import docking.widgets.fieldpanel.field.*;
import docking.widgets.fieldpanel.support.*;
import generic.theme.GThemeDefaults.Colors.Palette;
@@ -36,7 +34,6 @@ import ghidra.program.model.address.Address;
import ghidra.program.model.listing.*;
import ghidra.program.util.*;
import ghidra.util.HelpLocation;
import ghidra.util.StringUtilities;
import ghidra.util.bean.field.AnnotatedTextFieldElement;
/**
@@ -359,10 +356,6 @@ public class EolCommentFieldFactory extends FieldFactory {
AttributedString currentPrefixString, boolean showPrefix, boolean wordWrap,
int nextRow) {
if (wordWrap) {
comments = adjustCommentsForWrapping(comments);
}
List<FieldElement> fieldElements = new ArrayList<>();
if (comments.length == 0) {
return fieldElements;
@@ -393,33 +386,10 @@ public class EolCommentFieldFactory extends FieldFactory {
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,
AttributedString currentPrefixString, boolean showPrefix, boolean wordWrap,
boolean showRefAddress, Address refAddress, int nextRow) {
if (wordWrap) {
comments = adjustCommentsForWrapping(comments);
}
int numCommentLines = comments.length;
List<FieldElement> fieldElements = new ArrayList<>();
if (numCommentLines == 0) {
@@ -262,8 +262,8 @@ public class CommentsPluginTest extends AbstractGhidraHeadedIntegrationTest {
assertEquals(17, browser.getCurrentFieldLoction().getRow());
assertEquals(4, browser.getCurrentFieldLoction().getCol());
assertEquals(3, browser2.getCurrentFieldLoction().getRow());
assertEquals(46, browser2.getCurrentFieldLoction().getCol());
assertEquals(4, browser2.getCurrentFieldLoction().getRow());
assertEquals(4, browser2.getCurrentFieldLoction().getCol());
}
@Test
@@ -133,7 +133,8 @@ public class MemoryMapProvider1Test extends AbstractGhidraHeadedIntegrationTest
String name = action.getName();
if (name.equals("Add Block") || name.equals("Merge Blocks") ||
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 + "'",
action.isEnabled());
}
@@ -236,7 +236,7 @@ public class ListingPanelTest extends AbstractGhidraHeadedIntegrationTest {
assertEquals(EolCommentFieldLocation.class, loc.getClass());
bfloc = (EolCommentFieldLocation) loc;
assertEquals(0, bfloc.getRow());
assertEquals(72, bfloc.getCharOffset());
assertEquals(70, bfloc.getCharOffset());
}
@Test
@@ -257,7 +257,7 @@ public class ListingPanelTest extends AbstractGhidraHeadedIntegrationTest {
env.showTool();
ListingField f = (ListingField) l.getField(4);
assertEquals(comment1 + " " + comment2, f.getText());
assertEquals(comment1 + " " + comment2, f.getText());
FieldFactory ff = f.getFieldFactory();
RowColLocation rc = f.textOffsetToScreenLocation(3);
@@ -306,13 +306,7 @@ public class ListingPanelTest extends AbstractGhidraHeadedIntegrationTest {
showTool(tool);
AtomicReference<AddressSetView> addresses = new AtomicReference<>();
CodeViewerService cvs = tool.getService(CodeViewerService.class);
cvs.addListingDisplayListener(new AddressSetDisplayListener() {
@Override
public void visibleAddressesChanged(AddressSetView visibleAddresses) {
addresses.set(visibleAddresses);
}
});
cvs.addListingDisplayListener(visibleAddresses -> addresses.set(visibleAddresses));
assertNull(addresses.get());
cvs.goTo(new ProgramLocation(program, addr(0x1008000)), false);
@@ -134,7 +134,11 @@ public class VerticalLayoutTextField implements TextField {
StringBuilder buf = new StringBuilder();
int n = elements.size() - 1;
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());
return buf.toString();
@@ -492,15 +492,15 @@ public class CompositeVerticalLayoutTextFieldTest extends AbstractGenericTest {
assertEquals(4, field.getNumRows());
assertEquals("This is a line", field.getFieldElement(0, 0).getText());
assertEquals("with multiple", field.getFieldElement(1, 0).getText());
assertEquals("words for", field.getFieldElement(2, 0).getText());
assertEquals("This is a line ", field.getFieldElement(0, 0).getText());
assertEquals("with multiple ", field.getFieldElement(1, 0).getText());
assertEquals("words for ", field.getFieldElement(2, 0).getText());
assertEquals("wrapping", field.getFieldElement(3, 0).getText());
// note: the final 'data' row becomes 4 'screen' rows
assertEquals(15, field.getNumCols(0));
assertEquals(14, field.getNumCols(1));
assertEquals(10, field.getNumCols(2));
assertEquals(16, field.getNumCols(0));
assertEquals(15, field.getNumCols(1));
assertEquals(11, field.getNumCols(2));
assertEquals(9, field.getNumCols(3));
}
@@ -511,15 +511,15 @@ public class CompositeVerticalLayoutTextFieldTest extends AbstractGenericTest {
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("This is line", field.getFieldElement(2, 0).getText());
assertEquals("This is line ", field.getFieldElement(2, 0).getText());
assertEquals("two", field.getFieldElement(3, 0).getText());
// 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(13, field.getNumCols(2));
assertEquals(14, field.getNumCols(2));
assertEquals(4, field.getNumCols(3));
}
@@ -535,17 +535,17 @@ public class CompositeVerticalLayoutTextFieldTest extends AbstractGenericTest {
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("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());
// 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(14, field.getNumCols(2));
assertEquals(13, field.getNumCols(3));
assertEquals(14, field.getNumCols(3));
assertEquals(4, field.getNumCols(4));
}
@@ -565,8 +565,8 @@ public class CompositeVerticalLayoutTextFieldTest extends AbstractGenericTest {
assertEquals(row1, field.getFieldElement(0, 0).getText());
assertEquals(row2, field.getFieldElement(1, 0).getText());
assertEquals("3: wrapped", field.getFieldElement(2, 0).getText());
assertEquals("row: This field", field.getFieldElement(3, 0).getText());
assertEquals("3: wrapped ", field.getFieldElement(2, 0).getText());
assertEquals("row: This field ", field.getFieldElement(3, 0).getText());
assertEquals("will wrap", field.getFieldElement(4, 0).getText());
// not sure how to get this from the field
@@ -575,8 +575,8 @@ public class CompositeVerticalLayoutTextFieldTest extends AbstractGenericTest {
assertEquals(clippedLength, field.getNumCols(1));
// note: the final 'data' row becomes 3 'screen' rows
assertEquals(11, field.getNumCols(2));
assertEquals(16, field.getNumCols(3));
assertEquals(12, field.getNumCols(2));
assertEquals(17, field.getNumCols(3));
assertEquals(10, field.getNumCols(4));
}
@@ -26,9 +26,11 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import db.Transaction;
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.TraceRmiHandler;
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.util.Msg;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class GdbCommandsTest extends AbstractGdbTraceRmiTest {
//@Test
@@ -15,8 +15,7 @@
*/
package agent.gdb.rmi;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.nio.ByteBuffer;
@@ -24,7 +23,9 @@ import java.util.List;
import org.junit.Ignore;
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.dbg.target.TargetExecutionStateful.TargetExecutionState;
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.time.TraceSnapshot;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class GdbHooksTest extends AbstractGdbTraceRmiTest {
private static final long RUN_TIMEOUT_MS = 20000;
private static final long RETRY_MS = 500;
@@ -23,9 +23,11 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import db.Transaction;
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.ValueDecoder;
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.TraceObjectValue;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class GdbMethodsTest extends AbstractGdbTraceRmiTest {
@Test
@@ -27,8 +27,10 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.junit.Test;
import org.junit.experimental.categories.Category;
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.TraceRmiHandler;
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.util.Msg;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class LldbCommandsTest extends AbstractLldbTraceRmiTest {
//@Test
@@ -15,8 +15,7 @@
*/
package agent.lldb.rmi;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.nio.ByteBuffer;
@@ -25,7 +24,9 @@ import java.util.Objects;
import org.junit.Ignore;
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.dbg.testutil.DummyProc;
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.time.TraceSnapshot;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class LldbHooksTest extends AbstractLldbTraceRmiTest {
private static final long RUN_TIMEOUT_MS = 20000;
private static final long RETRY_MS = 500;
@@ -15,15 +15,16 @@
*/
package agent.lldb.rmi;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.util.*;
import org.junit.Test;
import org.junit.experimental.categories.Category;
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.ValueDecoder;
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.TraceObjectValue;
@Category(NightlyCategory.class) // this may actually be an @PortSensitive test
public class LldbMethodsTest extends AbstractLldbTraceRmiTest {
@Test