diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/EolCommentFieldFactory.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/EolCommentFieldFactory.java index 6479120d85..344366eaf0 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/EolCommentFieldFactory.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/field/EolCommentFieldFactory.java @@ -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 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 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 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 fieldElements = new ArrayList<>(); if (numCommentLines == 0) { diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/comments/CommentsPluginTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/comments/CommentsPluginTest.java index b4c8e15861..fa17f4c27f 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/comments/CommentsPluginTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/comments/CommentsPluginTest.java @@ -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 diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/memory/MemoryMapProvider1Test.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/memory/MemoryMapProvider1Test.java index 14609c3524..b475e256a9 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/memory/MemoryMapProvider1Test.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/memory/MemoryMapProvider1Test.java @@ -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()); } diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/util/viewer/listingpanel/ListingPanelTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/util/viewer/listingpanel/ListingPanelTest.java index a6d0f011ae..88a62a98ad 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/util/viewer/listingpanel/ListingPanelTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/util/viewer/listingpanel/ListingPanelTest.java @@ -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 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); diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/field/VerticalLayoutTextField.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/field/VerticalLayoutTextField.java index 665356fe97..1001e70a1e 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/field/VerticalLayoutTextField.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/fieldpanel/field/VerticalLayoutTextField.java @@ -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(); diff --git a/Ghidra/Framework/Docking/src/test/java/docking/widgets/fieldpanel/field/CompositeVerticalLayoutTextFieldTest.java b/Ghidra/Framework/Docking/src/test/java/docking/widgets/fieldpanel/field/CompositeVerticalLayoutTextFieldTest.java index a695c6ccea..511d681a48 100644 --- a/Ghidra/Framework/Docking/src/test/java/docking/widgets/fieldpanel/field/CompositeVerticalLayoutTextFieldTest.java +++ b/Ghidra/Framework/Docking/src/test/java/docking/widgets/fieldpanel/field/CompositeVerticalLayoutTextFieldTest.java @@ -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)); } diff --git a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java index f70bdfa074..d01d8a5e67 100644 --- a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java +++ b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbCommandsTest.java @@ -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 diff --git a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbHooksTest.java b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbHooksTest.java index 8927533dfc..18b9e2508b 100644 --- a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbHooksTest.java +++ b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbHooksTest.java @@ -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; diff --git a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbMethodsTest.java b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbMethodsTest.java index aca5980085..32584ca02f 100644 --- a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbMethodsTest.java +++ b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/gdb/rmi/GdbMethodsTest.java @@ -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 diff --git a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java index fe63e4cec6..8c7513aba7 100644 --- a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java +++ b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbCommandsTest.java @@ -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 diff --git a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbHooksTest.java b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbHooksTest.java index 3379afe031..3a28a78a79 100644 --- a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbHooksTest.java +++ b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbHooksTest.java @@ -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; diff --git a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbMethodsTest.java b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbMethodsTest.java index 14a866f8e4..3ea4534290 100644 --- a/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbMethodsTest.java +++ b/Ghidra/Test/IntegrationTest/src/test.slow/java/agent/lldb/rmi/LldbMethodsTest.java @@ -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