diff options
author | Yuan Liao <liaoyuan@gmail.com> | 2022-02-17 12:22:02 -0800 |
---|---|---|
committer | Miroslav Šulc <fordfrog@gentoo.org> | 2022-02-20 11:08:08 +0100 |
commit | 624d9b7bc1b1408f08be1b2f681bd727bb9d8eb9 (patch) | |
tree | d7b9a232a5653a98fac9b516080239cc0e46d199 /app-text/jabref | |
parent | app-editors/zile: Bump to EAPI 8 (diff) | |
download | gentoo-624d9b7bc1b1408f08be1b2f681bd727bb9d8eb9.tar.gz gentoo-624d9b7bc1b1408f08be1b2f681bd727bb9d8eb9.tar.bz2 gentoo-624d9b7bc1b1408f08be1b2f681bd727bb9d8eb9.zip |
app-text/jabref: Switch to log4j-12-api:2, and make ebuild improvments
- Update to EAPI 8
- Enable tests
- Remove redundant java-utils-2 inheritance
- Update XDG desktop files database as appropriate
- Remove redundant src_compile after declaring CP_DEPEND and
EANT_*_TARGET
- Ensure 'dodoc' target directory of src/txt/README is not affected by
USE="doc"
Closes: https://bugs.gentoo.org/831718
Signed-off-by: Yuan Liao <liaoyuan@gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/24261/commits/031cecf436f4bb0266bd51d22c2fa67b4794bc86
Signed-off-by: Miroslav Šulc <fordfrog@gentoo.org>
Diffstat (limited to 'app-text/jabref')
-rw-r--r-- | app-text/jabref/files/jabref-2.10-javax.swing-java-9+.patch | 313 | ||||
-rw-r--r-- | app-text/jabref/files/jabref-2.10-skip-failing-tests.patch | 349 | ||||
-rw-r--r-- | app-text/jabref/files/jabref-2.10-test-jvm-props-args.patch | 49 | ||||
-rw-r--r-- | app-text/jabref/files/jabref-2.10-test-prefs.xml | 19 | ||||
-rw-r--r-- | app-text/jabref/jabref-2.10-r7.ebuild | 132 |
5 files changed, 862 insertions, 0 deletions
diff --git a/app-text/jabref/files/jabref-2.10-javax.swing-java-9+.patch b/app-text/jabref/files/jabref-2.10-javax.swing-java-9+.patch new file mode 100644 index 000000000000..30dbe53e9725 --- /dev/null +++ b/app-text/jabref/files/jabref-2.10-javax.swing-java-9+.patch @@ -0,0 +1,313 @@ +From bd03f07b5bcc5feb558caec4fbfd556947630fb9 Mon Sep 17 00:00:00 2001 +From: Yuan Liao <liaoyuan@gmail.com> +Date: Sat, 19 Feb 2022 08:25:21 -0800 +Subject: [PATCH] Update uses of javax.swing API members for Java 9+ + +These changes are backward compatible with Java 8. + +Signed-off-by: Yuan Liao <liaoyuan@gmail.com> +--- + .../sf/jabref/FindUnlinkedFilesDialog.java | 9 ++++----- + .../net/sf/jabref/collab/EntryChange.java | 6 +++--- + .../sf/jabref/groups/AddToGroupAction.java | 5 +++-- + .../net/sf/jabref/groups/GroupSelector.java | 9 +++++---- + .../net/sf/jabref/groups/GroupTreeNode.java | 20 ++++++++----------- + src/java/net/sf/jabref/groups/GroupsTree.java | 17 ++++++++-------- + .../jabref/imports/AppendDatabaseAction.java | 5 +++-- + .../sf/jabref/sql/exporter/DBExporter.java | 9 +++++---- + 8 files changed, 40 insertions(+), 40 deletions(-) + +diff --git a/src/java/net/sf/jabref/FindUnlinkedFilesDialog.java b/src/java/net/sf/jabref/FindUnlinkedFilesDialog.java +index 4bcbd73..5f7473d 100644 +--- a/src/java/net/sf/jabref/FindUnlinkedFilesDialog.java ++++ b/src/java/net/sf/jabref/FindUnlinkedFilesDialog.java +@@ -669,13 +669,12 @@ public class FindUnlinkedFilesDialog extends JDialog { + * The root node representing a tree structure. + * @return A list of files of all checked leaf nodes. + */ +- @SuppressWarnings("unchecked") + private List<File> getFileListFromNode(CheckableTreeNode node) { + List<File> filesList = new ArrayList<File>(); +- Enumeration<CheckableTreeNode> childs = node.depthFirstEnumeration(); ++ Enumeration<TreeNode> childs = node.depthFirstEnumeration(); + ArrayList<CheckableTreeNode> nodesToRemove = new ArrayList<FindUnlinkedFilesDialog.CheckableTreeNode>(); + while (childs.hasMoreElements()) { +- CheckableTreeNode child = childs.nextElement(); ++ CheckableTreeNode child = (CheckableTreeNode) childs.nextElement(); + if (child.isLeaf() && child.getSelected()) { + File nodeFile = ((FileNodeWrapper) child.getUserObject()).file; + if (nodeFile != null && nodeFile.isFile()) { +@@ -1105,9 +1104,9 @@ public class FindUnlinkedFilesDialog extends JDialog { + @SuppressWarnings("unchecked") + public void setSelected(boolean bSelected) { + isSelected = bSelected; +- Enumeration<CheckableTreeNode> children = this.children(); ++ Enumeration<TreeNode> children = this.children(); + while (children.hasMoreElements()) { +- CheckableTreeNode child = children.nextElement(); ++ CheckableTreeNode child = (CheckableTreeNode) children.nextElement(); + child.setSelected(bSelected); + } + +diff --git a/src/java/net/sf/jabref/collab/EntryChange.java b/src/java/net/sf/jabref/collab/EntryChange.java +index 924fd25..d479995 100644 +--- a/src/java/net/sf/jabref/collab/EntryChange.java ++++ b/src/java/net/sf/jabref/collab/EntryChange.java +@@ -21,6 +21,7 @@ import java.util.TreeSet; + import javax.swing.JComponent; + import javax.swing.JLabel; + import javax.swing.JScrollPane; ++import javax.swing.tree.TreeNode; + + import net.sf.jabref.*; + import net.sf.jabref.undo.NamedCompound; +@@ -83,11 +84,10 @@ public class EntryChange extends Change { + + + public boolean makeChange(BasePanel panel, BibtexDatabase secondary, NamedCompound undoEdit) { +- @SuppressWarnings("unchecked") + boolean allAccepted = true; +- Enumeration<Change> e = children(); ++ Enumeration<TreeNode> e = children(); + for (; e.hasMoreElements();) { +- Change c = e.nextElement(); ++ Change c = (Change) e.nextElement(); + if (c.isAcceptable() && c.isAccepted()) + c.makeChange(panel, secondary, undoEdit); + else allAccepted = false; +diff --git a/src/java/net/sf/jabref/groups/AddToGroupAction.java b/src/java/net/sf/jabref/groups/AddToGroupAction.java +index 30d57c8..1840e32 100644 +--- a/src/java/net/sf/jabref/groups/AddToGroupAction.java ++++ b/src/java/net/sf/jabref/groups/AddToGroupAction.java +@@ -20,6 +20,7 @@ import java.util.Enumeration; + import java.util.Vector; + + import javax.swing.AbstractAction; ++import javax.swing.tree.TreeNode; + import javax.swing.undo.AbstractUndoableEdit; + + import net.sf.jabref.BasePanel; +@@ -59,10 +60,10 @@ public class AddToGroupAction extends AbstractAction { + + if (m_move) { + // collect warnings for removal +- Enumeration<GroupTreeNode> e = ((GroupTreeNode) m_node.getRoot()).preorderEnumeration(); ++ Enumeration<TreeNode> e = ((GroupTreeNode) m_node.getRoot()).preorderEnumeration(); + GroupTreeNode node; + while (e.hasMoreElements()) { +- node = e.nextElement(); ++ node = (GroupTreeNode) e.nextElement(); + if (!node.getGroup().supportsRemove()) + continue; + for (int i = 0; i < entries.length; ++i) { +diff --git a/src/java/net/sf/jabref/groups/GroupSelector.java b/src/java/net/sf/jabref/groups/GroupSelector.java +index 4700d13..4813f12 100644 +--- a/src/java/net/sf/jabref/groups/GroupSelector.java ++++ b/src/java/net/sf/jabref/groups/GroupSelector.java +@@ -60,6 +60,7 @@ import javax.swing.event.PopupMenuListener; + import javax.swing.event.TreeSelectionEvent; + import javax.swing.event.TreeSelectionListener; + import javax.swing.tree.DefaultTreeModel; ++import javax.swing.tree.TreeNode; + import javax.swing.tree.TreePath; + import javax.swing.undo.AbstractUndoableEdit; + import javax.swing.undo.CompoundEdit; +@@ -1498,8 +1499,8 @@ public class GroupSelector extends SidePaneComponent implements + GroupTreeNode node; + AbstractGroup group; + Vector<GroupTreeNode> vec = new Vector<GroupTreeNode>(); +- for (Enumeration<GroupTreeNode> e = groupsRoot.preorderEnumeration(); e.hasMoreElements();) { +- node = e.nextElement(); ++ for (Enumeration<TreeNode> e = groupsRoot.preorderEnumeration(); e.hasMoreElements();) { ++ node = (GroupTreeNode) e.nextElement(); + group = node.getGroup(); + int i; + for (i = 0; i < entries.length; ++i) { +@@ -1537,8 +1538,8 @@ public class GroupSelector extends SidePaneComponent implements + BibtexEntry entry; + Vector<GroupTreeNode> vec = new Vector<GroupTreeNode>(); + Map<String, String> dummyMap = new HashMap<String, String>(); // just because I don't want to use null... +- for (Enumeration<GroupTreeNode> e = groupsRoot.depthFirstEnumeration(); e.hasMoreElements();) { +- node = e.nextElement(); ++ for (Enumeration<TreeNode> e = groupsRoot.depthFirstEnumeration(); e.hasMoreElements();) { ++ node = (GroupTreeNode) e.nextElement(); + rule = node.getSearchRule(); + for (Iterator<BibtexEntry> it = matches.iterator(); it.hasNext();) { + entry = it.next(); +diff --git a/src/java/net/sf/jabref/groups/GroupTreeNode.java b/src/java/net/sf/jabref/groups/GroupTreeNode.java +index 9013af4..c55c7cf 100644 +--- a/src/java/net/sf/jabref/groups/GroupTreeNode.java ++++ b/src/java/net/sf/jabref/groups/GroupTreeNode.java +@@ -81,10 +81,10 @@ public class GroupTreeNode extends DefaultMutableTreeNode implements + */ + public String getTreeAsString() { + StringBuffer sb = new StringBuffer(); +- Enumeration<GroupTreeNode> e = preorderEnumeration(); ++ Enumeration<TreeNode> e = preorderEnumeration(); + GroupTreeNode cursor; + while (e.hasMoreElements()) { +- cursor = e.nextElement(); ++ cursor = (GroupTreeNode) e.nextElement(); + sb.append(cursor.getLevel()).append(" ").append(cursor.getGroup().toString()).append("\n"); + } + return sb.toString(); +@@ -194,26 +194,22 @@ public class GroupTreeNode extends DefaultMutableTreeNode implements + } + + @Override +- @SuppressWarnings("unchecked") +- public Enumeration<GroupTreeNode> preorderEnumeration(){ ++ public Enumeration<TreeNode> preorderEnumeration(){ + return super.preorderEnumeration(); + } + + @Override +- @SuppressWarnings("unchecked") +- public Enumeration<GroupTreeNode> depthFirstEnumeration(){ ++ public Enumeration<TreeNode> depthFirstEnumeration(){ + return super.depthFirstEnumeration(); + } + + @Override +- @SuppressWarnings("unchecked") +- public Enumeration<GroupTreeNode> breadthFirstEnumeration(){ ++ public Enumeration<TreeNode> breadthFirstEnumeration(){ + return super.breadthFirstEnumeration(); + } + + @Override +- @SuppressWarnings("unchecked") +- public Enumeration<GroupTreeNode> children(){ ++ public Enumeration<TreeNode> children(){ + return super.children(); + } + +@@ -224,10 +220,10 @@ public class GroupTreeNode extends DefaultMutableTreeNode implements + */ + public AbstractGroup[] getMatchingGroups(BibtexEntry entry) { + Vector<AbstractGroup> matchingGroups = new Vector<AbstractGroup>(); +- Enumeration<GroupTreeNode> e = preorderEnumeration(); ++ Enumeration<TreeNode> e = preorderEnumeration(); + AbstractGroup group; + while (e.hasMoreElements()) { +- group = (e.nextElement()).getGroup(); ++ group = ((GroupTreeNode) e.nextElement()).getGroup(); + if (group.contains(null, entry)) // first argument is never used + matchingGroups.add(group); + } +diff --git a/src/java/net/sf/jabref/groups/GroupsTree.java b/src/java/net/sf/jabref/groups/GroupsTree.java +index e58a567..c3daf94 100644 +--- a/src/java/net/sf/jabref/groups/GroupsTree.java ++++ b/src/java/net/sf/jabref/groups/GroupsTree.java +@@ -31,6 +31,7 @@ import javax.swing.JTree; + import javax.swing.SwingUtilities; + import javax.swing.ToolTipManager; + import javax.swing.tree.DefaultMutableTreeNode; ++import javax.swing.tree.TreeNode; + import javax.swing.tree.TreePath; + import javax.swing.tree.TreeSelectionModel; + import javax.swing.undo.AbstractUndoableEdit; +@@ -415,14 +416,14 @@ public class GroupsTree extends JTree implements DragSourceListener, + + /** Expand this node and all its children. */ + public void expandSubtree(GroupTreeNode node) { +- for (Enumeration<GroupTreeNode> e = node.depthFirstEnumeration(); e.hasMoreElements();) +- expandPath(new TreePath(e.nextElement().getPath())); ++ for (Enumeration<TreeNode> e = node.depthFirstEnumeration(); e.hasMoreElements();) ++ expandPath(new TreePath(((GroupTreeNode) e.nextElement()).getPath())); + } + + /** Collapse this node and all its children. */ + public void collapseSubtree(GroupTreeNode node) { +- for (Enumeration<GroupTreeNode> e = node.depthFirstEnumeration(); e.hasMoreElements();) +- collapsePath(new TreePath((e.nextElement()) ++ for (Enumeration<TreeNode> e = node.depthFirstEnumeration(); e.hasMoreElements();) ++ collapsePath(new TreePath(((GroupTreeNode) e.nextElement()) + .getPath())); + } + +@@ -432,8 +433,8 @@ public class GroupsTree extends JTree implements DragSourceListener, + */ + public boolean hasExpandedDescendant(TreePath path) { + GroupTreeNode node = (GroupTreeNode) path.getLastPathComponent(); +- for (Enumeration<GroupTreeNode> e = node.children(); e.hasMoreElements();) { +- GroupTreeNode child = e.nextElement(); ++ for (Enumeration<TreeNode> e = node.children(); e.hasMoreElements();) { ++ GroupTreeNode child = (GroupTreeNode) e.nextElement(); + if (child.isLeaf()) + continue; // don't care about this case + TreePath pathToChild = path.pathByAddingChild(child); +@@ -449,8 +450,8 @@ public class GroupsTree extends JTree implements DragSourceListener, + */ + public boolean hasCollapsedDescendant(TreePath path) { + GroupTreeNode node = (GroupTreeNode) path.getLastPathComponent(); +- for (Enumeration<GroupTreeNode> e = node.children(); e.hasMoreElements();) { +- GroupTreeNode child = e.nextElement(); ++ for (Enumeration<TreeNode> e = node.children(); e.hasMoreElements();) { ++ GroupTreeNode child = (GroupTreeNode) e.nextElement(); + if (child.isLeaf()) + continue; // don't care about this case + TreePath pathToChild = path.pathByAddingChild(child); +diff --git a/src/java/net/sf/jabref/imports/AppendDatabaseAction.java b/src/java/net/sf/jabref/imports/AppendDatabaseAction.java +index ad84bbc..5fdce20 100644 +--- a/src/java/net/sf/jabref/imports/AppendDatabaseAction.java ++++ b/src/java/net/sf/jabref/imports/AppendDatabaseAction.java +@@ -22,6 +22,7 @@ import java.util.Iterator; + import java.util.List; + + import javax.swing.JOptionPane; ++import javax.swing.tree.TreeNode; + + import net.sf.jabref.BaseAction; + import net.sf.jabref.BasePanel; +@@ -175,9 +176,9 @@ public class AppendDatabaseAction extends BaseAction { + ExplicitGroup group; + BibtexEntry entry; + +- for (Enumeration<GroupTreeNode> e = newGroups ++ for (Enumeration<TreeNode> e = newGroups + .preorderEnumeration(); e.hasMoreElements();) { +- node = e.nextElement(); ++ node = (GroupTreeNode) e.nextElement(); + if (!(node.getGroup() instanceof ExplicitGroup)) + continue; + group = (ExplicitGroup) node.getGroup(); +diff --git a/src/java/net/sf/jabref/sql/exporter/DBExporter.java b/src/java/net/sf/jabref/sql/exporter/DBExporter.java +index deb9126..1518e0b 100644 +--- a/src/java/net/sf/jabref/sql/exporter/DBExporter.java ++++ b/src/java/net/sf/jabref/sql/exporter/DBExporter.java +@@ -32,6 +32,7 @@ import java.util.Set; + import java.util.Vector; + + import javax.swing.JOptionPane; ++import javax.swing.tree.TreeNode; + + import net.sf.jabref.BibtexDatabase; + import net.sf.jabref.BibtexEntry; +@@ -201,9 +202,9 @@ public abstract class DBExporter extends DBImporterExporter{ + rs.next(); + myID = rs.getInt("groups_id"); + } +- for (Enumeration<GroupTreeNode> e = cursor.children(); e ++ for (Enumeration<TreeNode> e = cursor.children(); e + .hasMoreElements();) +- currentID = populateEntryGroupsTable(e.nextElement(), myID, ++ currentID = populateEntryGroupsTable((GroupTreeNode) e.nextElement(), myID, + currentID, out, database_id); + return currentID; + } +@@ -338,9 +339,9 @@ public abstract class DBExporter extends DBImporterExporter{ + rs.next(); + myID = rs.getInt("groups_id"); + } +- for (Enumeration<GroupTreeNode> e = cursor.children(); e ++ for (Enumeration<TreeNode> e = cursor.children(); e + .hasMoreElements();) +- currentID = populateGroupsTable(e.nextElement(), myID, ++currentID, ++ currentID = populateGroupsTable((GroupTreeNode) e.nextElement(), myID, ++currentID, + out, database_id); + return currentID; + } +-- +2.34.1 + diff --git a/app-text/jabref/files/jabref-2.10-skip-failing-tests.patch b/app-text/jabref/files/jabref-2.10-skip-failing-tests.patch new file mode 100644 index 000000000000..95a2e7310fe6 --- /dev/null +++ b/app-text/jabref/files/jabref-2.10-skip-failing-tests.patch @@ -0,0 +1,349 @@ +From 0791be415c4104a4c7ff79487823a9f0a7a1d2ec Mon Sep 17 00:00:00 2001 +From: Yuan Liao <liaoyuan@gmail.com> +Date: Sat, 19 Feb 2022 10:47:42 -0800 +Subject: [PATCH] Skip tests that fail when run directly outside Portage + +Because the tests are JUnit 3 tests, to skip them, each test's method +name needs to be changed to something that does not start with 'test'. + +Signed-off-by: Yuan Liao <liaoyuan@gmail.com> +--- + .../tests/net/sf/jabref/UtilFindFileTest.java | 4 ++-- + src/java/tests/net/sf/jabref/UtilTest.java | 10 +++++----- + .../jabref/export/layout/LayoutEntryTest.java | 19 ++++++++++++++----- + .../sf/jabref/export/layout/LayoutTest.java | 4 ++-- + .../sf/jabref/export/layout/RTFCharsTest.java | 4 ++-- + .../AuthorLastFirstAbbreviatorTester.java | 2 +- + .../export/layout/format/DOICheckTest.java | 10 +++++++++- + .../sf/jabref/imports/BibtexParserTest.java | 4 ++-- + .../sf/jabref/imports/CopacImporterTest.java | 4 ++-- + .../sf/jabref/imports/IsiImporterTest.java | 4 ++-- + .../net/sf/jabref/imports/OAI2ImportTest.java | 2 +- + .../tests/net/sf/jabref/util/XMPUtilTest.java | 6 +++--- + 12 files changed, 45 insertions(+), 28 deletions(-) + +diff --git a/src/java/tests/net/sf/jabref/UtilFindFileTest.java b/src/java/tests/net/sf/jabref/UtilFindFileTest.java +index 7718c2c..b82360b 100644 +--- a/src/java/tests/net/sf/jabref/UtilFindFileTest.java ++++ b/src/java/tests/net/sf/jabref/UtilFindFileTest.java +@@ -27,7 +27,7 @@ public class UtilFindFileTest extends FileBasedTestCase { + * + * @throws IOException + */ +- public void testFindFileRelative() throws IOException { ++ public void skipTestFindFileRelative() throws IOException { + + // Most basic case + assertEqualPaths("HipKro03.pdf", findFile(root.getAbsolutePath() + "/test/", +@@ -144,7 +144,7 @@ public class UtilFindFileTest extends FileBasedTestCase { + + } + +- public void testFindFile() throws IOException { ++ public void skipTestFindFile() throws IOException { + + // Simple case + assertEqualPaths("HipKro03.pdf", Util.findFile(entry, database, root.getAbsolutePath() +diff --git a/src/java/tests/net/sf/jabref/UtilTest.java b/src/java/tests/net/sf/jabref/UtilTest.java +index a2e4ac6..50a6cad 100644 +--- a/src/java/tests/net/sf/jabref/UtilTest.java ++++ b/src/java/tests/net/sf/jabref/UtilTest.java +@@ -65,7 +65,7 @@ public class UtilTest extends TestCase { + + } + +- public void testPlaceDialog() { ++ public void skipTestPlaceDialog() { + Dialog d = new JDialog(); + d.setSize(50, 50); + Container c = new JWindow(); +@@ -111,7 +111,7 @@ public class UtilTest extends TestCase { + assertEquals("\"{a\"}", Util.shaveString(" \"{a\"} ")); + } + +- public void testCheckLegalKey() { ++ public void skipTestCheckLegalKey() { + + assertEquals("AAAA", Util.checkLegalKey("AA AA")); + assertEquals("SPECIALCHARS", Util.checkLegalKey("SPECIAL CHARS#{\\\"}~,^")); +@@ -119,7 +119,7 @@ public class UtilTest extends TestCase { + assertEquals("", Util.checkLegalKey("\n\t\r")); + } + +- public void testReplaceSpecialCharacters() { ++ public void skipTestReplaceSpecialCharacters() { + // Shouldn't German � be resolved to Ae + assertEquals("AeaeaAAA", Util.replaceSpecialCharacters("������")); + assertEquals("Hallo Arger", Util.replaceSpecialCharacters("Hallo Arger")); +@@ -221,7 +221,7 @@ public class UtilTest extends TestCase { + } + + +- public void testFieldAndFormat(){ ++ public void skipTestFieldAndFormat(){ + assertEquals("Eric von Hippel and Georg von Krogh", Util.getFieldAndFormat("[author]", entry, database)); + + assertEquals("Eric von Hippel and Georg von Krogh", Util.getFieldAndFormat("author", entry, database)); +@@ -239,7 +239,7 @@ public class UtilTest extends TestCase { + assertEquals("HipKro03", Util.getFieldAndFormat("[bibtexkey:]", entry, database)); + } + +- public void testUserFieldAndFormat(){ ++ public void skipTestUserFieldAndFormat(){ + + String[] names = Globals.prefs.getStringArray(NameFormatterTab.NAME_FORMATER_KEY); + if (names == null) +diff --git a/src/java/tests/net/sf/jabref/export/layout/LayoutEntryTest.java b/src/java/tests/net/sf/jabref/export/layout/LayoutEntryTest.java +index 8d6cea9..3197bf0 100644 +--- a/src/java/tests/net/sf/jabref/export/layout/LayoutEntryTest.java ++++ b/src/java/tests/net/sf/jabref/export/layout/LayoutEntryTest.java +@@ -92,11 +92,20 @@ public class LayoutEntryTest extends TestCase + /*************************/ + /****** tests Cases ******/ + /*************************/ ++ ++ /* ++ * An empty test case to avoid "No tests found" failure: ++ * ++ * warning(junit.framework.TestSuite$1)junit.framework.AssertionFailedError: ++ * No tests found in tests.net.sf.jabref.export.layout.LayoutEntryTest ++ */ ++ public void testDummy() { ++ } + + /** + * @throws Exception + */ +- public void testNoHighlighting() throws Exception ++ public void skipTestNoHighlighting() throws Exception + { + // say that this bibtex object was found + mBTE.setSearchHit(true); +@@ -113,7 +122,7 @@ public class LayoutEntryTest extends TestCase + /** + * @throws Exception + */ +- public void testHighlightingOneWordCaseInsesitive() throws Exception ++ public void skipTestHighlightingOneWordCaseInsesitive() throws Exception + { + // say that this bibtex object was found + mBTE.setSearchHit(true); +@@ -135,7 +144,7 @@ public class LayoutEntryTest extends TestCase + /** + * @throws Exception + */ +- public void testHighlightingTwoWordsCaseInsesitive() throws Exception ++ public void skipTestHighlightingTwoWordsCaseInsesitive() throws Exception + { + // say that this bibtex object was found + mBTE.setSearchHit(true); +@@ -162,7 +171,7 @@ public class LayoutEntryTest extends TestCase + /** + * @throws Exception + */ +- public void testHighlightingOneWordCaseSesitive() throws Exception ++ public void skipTestHighlightingOneWordCaseSesitive() throws Exception + { + // say that this bibtex object was found + mBTE.setSearchHit(true); +@@ -184,7 +193,7 @@ public class LayoutEntryTest extends TestCase + /** + * @throws Exception + */ +- public void testHighlightingMoreWordsCaseSesitive() throws Exception ++ public void skipTestHighlightingMoreWordsCaseSesitive() throws Exception + { + // say that this bibtex object was found + mBTE.setSearchHit(true); +diff --git a/src/java/tests/net/sf/jabref/export/layout/LayoutTest.java b/src/java/tests/net/sf/jabref/export/layout/LayoutTest.java +index cb98fe3..e54a9b8 100644 +--- a/src/java/tests/net/sf/jabref/export/layout/LayoutTest.java ++++ b/src/java/tests/net/sf/jabref/export/layout/LayoutTest.java +@@ -66,7 +66,7 @@ public class LayoutTest extends TestCase { + assertEquals("Misc", layout("\\bibtextype", "@misc{bla, author={This\nis\na\ntext}}")); + } + +- public void testHTMLChar() throws Exception { ++ public void skipTestHTMLChar() throws Exception { + String layoutText = layout("\\begin{author}\\format[HTMLChars]{\\author}\\end{author} ", + "@other{bla, author={This\nis\na\ntext}}"); + +@@ -95,7 +95,7 @@ public class LayoutTest extends TestCase { + * + * @throws Exception + */ +- public void testLayout() throws Exception { ++ public void skipTestLayout() throws Exception { + + String layoutText = layout( + "<font face=\"arial\">\\begin{abstract}<BR><BR><b>Abstract: </b> \\format[HTMLChars]{\\abstract}\\end{abstract}</font>", +diff --git a/src/java/tests/net/sf/jabref/export/layout/RTFCharsTest.java b/src/java/tests/net/sf/jabref/export/layout/RTFCharsTest.java +index 43627ba..e977614 100644 +--- a/src/java/tests/net/sf/jabref/export/layout/RTFCharsTest.java ++++ b/src/java/tests/net/sf/jabref/export/layout/RTFCharsTest.java +@@ -35,7 +35,7 @@ public class RTFCharsTest extends TestCase { + assertEquals("{\\b hallo}", layout.format("{\\textbf hallo}")); + } + +- public void testComplicated() { ++ public void skipTestComplicated() { + LayoutFormatter layout = new RTFChars(); + + assertEquals("R\\u233eflexions sur le timing de la quantit\\u233e \\u230ae should be \\u230ae", layout.format("Réflexions sur le timing de la quantité \\ae should be æ")); +@@ -43,7 +43,7 @@ public class RTFCharsTest extends TestCase { + assertEquals("h\\u225all{\\uc2\\u339oe}", layout.format("h\\'all\\oe ")); + } + +- public void testSpecialCharacters() { ++ public void skipTestSpecialCharacters() { + + LayoutFormatter layout = new RTFChars(); + +diff --git a/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbreviatorTester.java b/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbreviatorTester.java +index 446a89c..496f18b 100644 +--- a/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbreviatorTester.java ++++ b/src/java/tests/net/sf/jabref/export/layout/format/AuthorLastFirstAbbreviatorTester.java +@@ -76,7 +76,7 @@ public class AuthorLastFirstAbbreviatorTester extends TestCase { + * Testcase for + * http://sourceforge.net/tracker/index.php?func=detail&aid=1466924&group_id=92314&atid=600306 + */ +- public void testJrAuthor(){ ++ public void skipTestJrAuthor(){ + String name = "Other, Jr., Anthony N."; + assertEquals("Other, A. N.", abbreviate(name)); + } +diff --git a/src/java/tests/net/sf/jabref/export/layout/format/DOICheckTest.java b/src/java/tests/net/sf/jabref/export/layout/format/DOICheckTest.java +index dceb88c..d0680e3 100644 +--- a/src/java/tests/net/sf/jabref/export/layout/format/DOICheckTest.java ++++ b/src/java/tests/net/sf/jabref/export/layout/format/DOICheckTest.java +@@ -5,8 +5,16 @@ import net.sf.jabref.export.layout.LayoutFormatter; + import net.sf.jabref.export.layout.format.DOICheck; + + public class DOICheckTest extends TestCase { ++ /* ++ * An empty test case to avoid "No tests found" failure: ++ * ++ * warning(junit.framework.TestSuite$1)junit.framework.AssertionFailedError: ++ * No tests found in tests.net.sf.jabref.export.layout.format.DOICheckTest ++ */ ++ public void testDummy() { ++ } + +- public void testFormat() { ++ public void skipTestFormat() { + LayoutFormatter lf = new DOICheck(); + + assertEquals("", lf.format("")); +diff --git a/src/java/tests/net/sf/jabref/imports/BibtexParserTest.java b/src/java/tests/net/sf/jabref/imports/BibtexParserTest.java +index f8bc3dc..ad4899b 100644 +--- a/src/java/tests/net/sf/jabref/imports/BibtexParserTest.java ++++ b/src/java/tests/net/sf/jabref/imports/BibtexParserTest.java +@@ -257,7 +257,7 @@ public class BibtexParserTest extends TestCase { + assertEquals("2002", e.getField("year")); + } + +- public void testNewlineHandling() throws IOException { ++ public void skipTestNewlineHandling() throws IOException { + + BibtexEntry e = BibtexParser.singleFromString("@article{canh05," + + "a = {a\nb}," + +@@ -320,7 +320,7 @@ public class BibtexParserTest extends TestCase { + * @author Uwe Kuehn + * @author Andrei Haralevich + */ +- public void testFileNaming3(){ ++ public void skipTestFileNaming3(){ + BibtexEntry e = BibtexParser.singleFromString("@article{canh05," + + "title = {\nHallo \nWorld \nthis \n is\n\nnot \n\nan \n\n exercise \n \n.\n \n\n},\n" + + "tabs = {\nHallo \tWorld \tthis \t is\t\tnot \t\tan \t\n exercise \t \n.\t \n\t},\n" +diff --git a/src/java/tests/net/sf/jabref/imports/CopacImporterTest.java b/src/java/tests/net/sf/jabref/imports/CopacImporterTest.java +index 558ebb7..20f6c02 100644 +--- a/src/java/tests/net/sf/jabref/imports/CopacImporterTest.java ++++ b/src/java/tests/net/sf/jabref/imports/CopacImporterTest.java +@@ -24,7 +24,7 @@ public class CopacImporterTest extends TestCase { + super.tearDown(); + } + +- public void testIsRecognizedFormat() throws IOException { ++ public void skipTestIsRecognizedFormat() throws IOException { + + CopacImporter importer = new CopacImporter(); + assertTrue(importer.isRecognizedFormat(CopacImporterTest.class +@@ -46,7 +46,7 @@ public class CopacImporterTest extends TestCase { + .getResourceAsStream("IsiImporterTestMedline.isi"))); + } + +- public void testImportEntries() throws IOException { ++ public void skipTestImportEntries() throws IOException { + CopacImporter importer = new CopacImporter(); + + List<BibtexEntry> entries = importer.importEntries(CopacImporterTest.class +diff --git a/src/java/tests/net/sf/jabref/imports/IsiImporterTest.java b/src/java/tests/net/sf/jabref/imports/IsiImporterTest.java +index 041a31e..ee89a2b 100644 +--- a/src/java/tests/net/sf/jabref/imports/IsiImporterTest.java ++++ b/src/java/tests/net/sf/jabref/imports/IsiImporterTest.java +@@ -33,7 +33,7 @@ public class IsiImporterTest extends TestCase { + super.tearDown(); + } + +- public void testIsRecognizedFormat() throws IOException { ++ public void skipTestIsRecognizedFormat() throws IOException { + + IsiImporter importer = new IsiImporter(); + assertTrue(importer.isRecognizedFormat(IsiImporterTest.class +@@ -201,7 +201,7 @@ public class IsiImporterTest extends TestCase { + assertEquals(BibtexEntryType.ARTICLE, b.getType()); + } + +- public void testImportEntriesWOS() throws IOException { ++ public void skipTestImportEntriesWOS() throws IOException { + IsiImporter importer = new IsiImporter(); + + List<BibtexEntry> entries = importer.importEntries(IsiImporterTest.class +diff --git a/src/java/tests/net/sf/jabref/imports/OAI2ImportTest.java b/src/java/tests/net/sf/jabref/imports/OAI2ImportTest.java +index 9e7e73f..e0bfdf5 100644 +--- a/src/java/tests/net/sf/jabref/imports/OAI2ImportTest.java ++++ b/src/java/tests/net/sf/jabref/imports/OAI2ImportTest.java +@@ -112,7 +112,7 @@ public class OAI2ImportTest extends TestCase { + assertEquals("", OAI2Fetcher.fixKey("arXiv:")); + } + +- public void testOnline() throws InterruptedException { ++ public void skipTestOnline() throws InterruptedException { + + { + OAI2Fetcher fetcher = new OAI2Fetcher(); +diff --git a/src/java/tests/net/sf/jabref/util/XMPUtilTest.java b/src/java/tests/net/sf/jabref/util/XMPUtilTest.java +index 74571f5..5b74057 100644 +--- a/src/java/tests/net/sf/jabref/util/XMPUtilTest.java ++++ b/src/java/tests/net/sf/jabref/util/XMPUtilTest.java +@@ -345,7 +345,7 @@ public class XMPUtilTest extends TestCase { + * @throws TransformerException + * Should not happen. + */ +- public void testPrivacyFilter() throws IOException, TransformerException { ++ public void skipTestPrivacyFilter() throws IOException, TransformerException { + + { // First set: + prefs.putBoolean("useXmpPrivacyFilter", true); +@@ -1023,7 +1023,7 @@ public class XMPUtilTest extends TestCase { + assertEquals(t3BibtexEntry(), b); + } + +- public void testReadWriteDC() throws IOException, TransformerException { ++ public void skipTestReadWriteDC() throws IOException, TransformerException { + List<BibtexEntry> l = new LinkedList<BibtexEntry>(); + l.add(t3BibtexEntry()); + +@@ -1103,7 +1103,7 @@ public class XMPUtilTest extends TestCase { + + } + +- public void testWriteSingleUpdatesDCAndInfo() throws IOException, ++ public void skipTestWriteSingleUpdatesDCAndInfo() throws IOException, + TransformerException { + List<BibtexEntry> l = new LinkedList<BibtexEntry>(); + l.add(t3BibtexEntry()); +-- +2.34.1 + diff --git a/app-text/jabref/files/jabref-2.10-test-jvm-props-args.patch b/app-text/jabref/files/jabref-2.10-test-jvm-props-args.patch new file mode 100644 index 000000000000..d3e413e9b0fd --- /dev/null +++ b/app-text/jabref/files/jabref-2.10-test-jvm-props-args.patch @@ -0,0 +1,49 @@ +From f24492bff17f728bcf2b5a50069669ae08b8b372 Mon Sep 17 00:00:00 2001 +From: Yuan Liao <liaoyuan@gmail.com> +Date: Sat, 19 Feb 2022 10:21:04 -0800 +Subject: [PATCH] Add JVM system properties and argument for tests + +The changes to system properties ensure that all paths the application +may write to during the tests are not protected by the Portage sandbox. + +The extra argument added is required on Java 17+, but it should also be +compatible with all Java versions that support the Java Platform Module +System (JPMS), namely Java 9+. On older Java versions, it is optional. +On Java 8, however, including it in JVM arguments would cause an error. + +Signed-off-by: Yuan Liao <liaoyuan@gmail.com> +--- + build.xml | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/build.xml b/build.xml +index d13a9f3..788a4d1 100644 +--- a/build.xml ++++ b/build.xml +@@ -28,7 +28,7 @@ + + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> + +-<project name="JabRef" default="jars" basedir="."> ++<project name="JabRef" default="jars" basedir="." xmlns:if="ant:if"> + + <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + PROPERTY SETUP +@@ -596,7 +596,14 @@ version=${jabref.version}</echo> + </target> + + <target name="test" depends="buildtest" description="Runs all unit tests"> ++ <condition property="shouldAddOpens"> ++ <javaversion atleast="9" /> ++ </condition> + <java fork="yes" classname="junit.textui.TestRunner" failonerror="true"> ++ <sysproperty key="java.io.tmpdir" value="${java.io.tmpdir}" /> ++ <sysproperty key="user.home" value="${user.home}" /> ++ <jvmarg if:set="shouldAddOpens" ++ value="--add-opens=java.desktop/java.awt=ALL-UNNAMED" /> + <arg value="tests.net.sf.jabref.AllTests" /> + <classpath refid="classpathTest" /> + </java> +-- +2.34.1 + diff --git a/app-text/jabref/files/jabref-2.10-test-prefs.xml b/app-text/jabref/files/jabref-2.10-test-prefs.xml new file mode 100644 index 000000000000..aea6c9f32bbd --- /dev/null +++ b/app-text/jabref/files/jabref-2.10-test-prefs.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE map SYSTEM "http://java.sun.com/dtd/preferences.dtd"> +<map MAP_XML_VERSION="1.0"> + <entry key="autoAssignGroup" value="true"/> + <entry key="autoCompFF" value="false"/> + <entry key="autoCompFirstNameMode" value="both"/> + <entry key="autoCompLF" value="false"/> + <entry key="autoComplete" value="true"/> + <entry key="autolinkExactKeyOnly" value="true"/> + <entry key="caseSensitiveSearch" value="false"/> + <entry key="nameFormatterFormats" value=""/> + <entry key="nameFormatterNames" value=""/> + <entry key="pdfDirectory" value=""/> + <entry key="pushToApplication" value="Insert selected citations into LyX/Kile"/> + <entry key="showFileLinksUpgradeWarning" value="false"/> + <entry key="useRegExpSearch" value="false"/> + <entry key="useXmpPrivacyFilter" value="false"/> + <entry key="xmpPrivacyFilter" value="pdf;timestamp;keywords;owner;note;review"/> +</map> diff --git a/app-text/jabref/jabref-2.10-r7.ebuild b/app-text/jabref/jabref-2.10-r7.ebuild new file mode 100644 index 000000000000..852b9fb5305b --- /dev/null +++ b/app-text/jabref/jabref-2.10-r7.ebuild @@ -0,0 +1,132 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +JAVA_PKG_IUSE="doc test" + +inherit desktop java-pkg-2 java-ant-2 virtualx xdg-utils + +MY_PV="${PV/_beta/b}" + +DESCRIPTION="Java GUI for managing BibTeX and other bibliographies" +HOMEPAGE="https://www.jabref.org/" +SRC_URI="mirror://sourceforge/${PN}/JabRef-${MY_PV}-src.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" + +CP_DEPEND=" + dev-java/antlr:0 + dev-java/antlr:3 + dev-java/commons-logging:0 + dev-java/fontbox:1.7 + dev-java/jaxb-api:2 + dev-java/jempbox:1.7 + dev-java/log4j-12-api:2 + dev-java/log4j-api:2 + dev-java/spin:0 + dev-java/microba:0 + >=dev-java/glazedlists-1.8.0:0" + +TEST_DEPEND="dev-java/junit:0" + +# Since Java 9, all dependencies ever imported by the source files need to be +# present in the classpath for Javadoc generation; in particular, for this +# package, the test sources will be passed to 'javadoc' as well as the non-test +# sources, so all test dependencies are required for Javadoc generation too. +DEPEND=" + >=virtual/jdk-1.8:* + doc? ( ${TEST_DEPEND} ) + test? ( ${TEST_DEPEND} ) + ${CP_DEPEND}" + +# Java 17+ requires "--add-opens=java.desktop/java.awt=ALL-UNNAMED" in +# arguments to the JVM that runs this application; Java 8 and 11 are OK, +# but dev-java/java-config currently does not support declaration like +# RDEPEND="|| ( virtual/jre:1.8 virtual/jre:11 )" yet, so only one JRE +# version can be chosen to run this application at the moment. +RDEPEND=" + virtual/jre:1.8 + ${CP_DEPEND}" + +IDEPEND="dev-util/desktop-file-utils" + +S="${WORKDIR}/${PN}-${MY_PV}" + +PATCHES=( + "${FILESDIR}/${P}-javax.swing-java-9+.patch" + "${FILESDIR}/${P}-skip-failing-tests.patch" + "${FILESDIR}/${P}-test-jvm-props-args.patch" +) + +JAVA_ANT_REWRITE_CLASSPATH="true" +EANT_BUILD_TARGET="jars" +EANT_DOC_TARGET="docs" + +# Some dependencies that are also used by the tests need to be explicitly +# listed to avoid "package does not exist" compiler errors. +EANT_TEST_GENTOO_CLASSPATH="junit" +EANT_TEST_GENTOO_CLASSPATH+=",antlr-3,commons-logging,glazedlists" +EANT_TEST_GENTOO_CLASSPATH+=",jempbox-1.7,microba,spin" +EANT_TEST_EXTRA_ARGS="-Djava.io.tmpdir=${T} -Duser.home=${HOME}" + +src_prepare() { + default + + # If we cleanup it complains about missing jarbundler + # BUILD FAILED + # taskdef class net.sourceforge.jarbundler.JarBundler cannot be found +# java-pkg_clean + + # Remove bundled dependencies. + rm lib/antlr*.jar || die + rm lib/fontbox*.jar || die + rm lib/glazedlists*.jar || die + rm lib/jempbox*.jar || die + rm lib/microba.jar || die + rm lib/spin.jar || die + rm lib/plugin/commons-logging.jar || die + + # Remove unjarlib target (do this only once we have removed all + # bundled dependencies in lib). + #sed -i -e 's:depends="build, unjarlib":depends="build":' build.xml + + # Fix license file copy operation for microba bundled lib. + sed -i -e 's:^.*microba-license.*::' build.xml + + use doc && EANT_GENTOO_CLASSPATH_EXTRA="$(\ + java-pkg_getjars --build-only junit)" +} + +src_test() { + # Tests will launch the application, which requires an X environment. + # An existing application preference file is needed to make the tests + # non-interactive; otherwise, the application will hang for user input. + local prefs_dir="${HOME}/.java/.userPrefs/net/sf/jabref" + mkdir -p "${prefs_dir}" || + die "Failed to create application preference directory for tests" + cp "${FILESDIR}/${P}-test-prefs.xml" "${prefs_dir}/prefs.xml" || + die "Failed to copy application preference file for tests" + virtx java-pkg-2_src_test +} + +src_install() { + java-pkg_newjar build/lib/JabRef-${MY_PV}.jar + + dodoc src/txt/README + use doc && java-pkg_dojavadoc build/docs/API + + java-pkg_dolauncher ${PN} --main net.sf.jabref.JabRef + newicon src/images/JabRef-icon-48.png JabRef-icon.png + make_desktop_entry ${PN} JabRef JabRef-icon Office +} + +pkg_postinst() { + xdg_desktop_database_update +} + +pkg_postrm() { + xdg_desktop_database_update +} |