Skip to content

Commit 5db1a63

Browse files
hinermCopilot
andcommitted
Make filename-order regression test headless
Extracts the language-detection and filename-normalization sequence into a package-private helper, and the test uses a stub .ijm language with no GUI support or script engine. Co-authored-by: Copilot <copilot@github.com>
1 parent 8534286 commit 5db1a63

2 files changed

Lines changed: 48 additions & 6 deletions

File tree

‎src/main/java/org/scijava/ui/swing/script/TextEditor.java‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1593,11 +1593,17 @@ public void createNewDocument(final String title, final String text) {
15931593
open(null);
15941594
final EditorPane editorPane = getEditorPane();
15951595
editorPane.setText(text);
1596-
editorPane.setLanguageByFileName(title);
1597-
setEditorPaneFileName(title);
1596+
setNewDocumentLanguageAndFileName(editorPane, title);
15981597
updateLanguageMenu(editorPane.getCurrentLanguage());
15991598
}
16001599

1600+
static void setNewDocumentLanguageAndFileName(final EditorPane editorPane,
1601+
final String title)
1602+
{
1603+
editorPane.setLanguageByFileName(title);
1604+
editorPane.setFileName(title);
1605+
}
1606+
16011607
/**
16021608
* Open a new editor to edit the given file, with a templateFile if the file
16031609
* does not exist yet

‎src/test/java/org/scijava/ui/swing/script/EditorPaneFileNameTest.java‎

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@
2929
package org.scijava.ui.swing.script;
3030

3131
import static org.junit.Assert.assertEquals;
32+
import static org.junit.Assert.assertTrue;
33+
34+
import java.util.Collections;
35+
import java.util.List;
36+
37+
import javax.script.ScriptEngine;
3238

3339
import org.junit.After;
3440
import org.junit.Before;
@@ -37,6 +43,7 @@
3743
import org.scijava.log.LogService;
3844
import org.scijava.platform.PlatformService;
3945
import org.scijava.prefs.PrefService;
46+
import org.scijava.script.AbstractScriptLanguage;
4047
import org.scijava.script.ScriptHeaderService;
4148
import org.scijava.script.ScriptService;
4249

@@ -58,12 +65,41 @@ public void tearDown() {
5865

5966
@Test
6067
public void testSuppliedLanguageExtensionIsNotDuplicated() {
61-
final EditorPane editorPane = new EditorPane();
68+
final TestEditorPane editorPane = new TestEditorPane();
6269
context.inject(editorPane);
6370

64-
editorPane.setLanguageByFileName("Macro.java");
65-
editorPane.setFileName("Macro.java");
71+
TextEditor.setNewDocumentLanguageAndFileName(editorPane, "Macro.ijm");
72+
73+
assertEquals("Macro.ijm", editorPane.getFileName());
74+
assertTrue(editorPane.languageWasDetected);
75+
}
76+
77+
private static final class TestEditorPane extends EditorPane {
78+
79+
private boolean languageWasDetected;
80+
81+
@Override
82+
protected void setLanguageByFileName(final String name) {
83+
languageWasDetected = true;
84+
setLanguage(new TestMacroLanguage());
85+
}
86+
}
87+
88+
private static final class TestMacroLanguage extends AbstractScriptLanguage {
89+
90+
@Override
91+
public String getLanguageName() {
92+
return "ImageJ Macro";
93+
}
94+
95+
@Override
96+
public List<String> getExtensions() {
97+
return Collections.singletonList("ijm");
98+
}
6699

67-
assertEquals("Macro.java", editorPane.getFileName());
100+
@Override
101+
public ScriptEngine getScriptEngine() {
102+
throw new UnsupportedOperationException("Test language has no script engine");
103+
}
68104
}
69105
}

0 commit comments

Comments
 (0)