Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix parser exception when loading tex-groups with non-existing file #4839

Merged
merged 3 commits into from
Apr 2, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix build
  • Loading branch information
tobiasdiez committed Apr 2, 2019
commit d96b62eb2f458e0082d648a07e686b2bae7b20d7
32 changes: 16 additions & 16 deletions src/test/java/org/jabref/logic/exporter/GroupSerializerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,31 +30,31 @@

import static org.junit.jupiter.api.Assertions.assertEquals;

public class GroupSerializerTest {
class GroupSerializerTest {

private GroupSerializer groupSerializer;

@BeforeEach
public void setUp() throws Exception {
void setUp() throws Exception {
groupSerializer = new GroupSerializer();
}

@Test
public void serializeSingleAllEntriesGroup() {
void serializeSingleAllEntriesGroup() {
AllEntriesGroup group = new AllEntriesGroup("");
List<String> serialization = groupSerializer.serializeTree(GroupTreeNode.fromGroup(group));
assertEquals(Collections.singletonList("0 AllEntriesGroup:"), serialization);
}

@Test
public void serializeSingleExplicitGroup() {
void serializeSingleExplicitGroup() {
ExplicitGroup group = new ExplicitGroup("myExplicitGroup", GroupHierarchyType.INDEPENDENT, ',');
List<String> serialization = groupSerializer.serializeTree(GroupTreeNode.fromGroup(group));
assertEquals(Collections.singletonList("0 StaticGroup:myExplicitGroup;0;1;;;;"), serialization);
}

@Test
public void serializeSingleExplicitGroupWithIconAndDescription() {
void serializeSingleExplicitGroupWithIconAndDescription() {
ExplicitGroup group = new ExplicitGroup("myExplicitGroup", GroupHierarchyType.INDEPENDENT, ',');
group.setIconName("test icon");
group.setExpanded(true);
Expand All @@ -66,63 +66,63 @@ public void serializeSingleExplicitGroupWithIconAndDescription() {

@Test
// For https://github.com/JabRef/jabref/issues/1681
public void serializeSingleExplicitGroupWithEscapedSlash() {
void serializeSingleExplicitGroupWithEscapedSlash() {
ExplicitGroup group = new ExplicitGroup("B{\\\"{o}}hmer", GroupHierarchyType.INDEPENDENT, ',');
List<String> serialization = groupSerializer.serializeTree(GroupTreeNode.fromGroup(group));
assertEquals(Collections.singletonList("0 StaticGroup:B{\\\\\"{o}}hmer;0;1;;;;"), serialization);
}

@Test
public void serializeSingleSimpleKeywordGroup() {
void serializeSingleSimpleKeywordGroup() {
WordKeywordGroup group = new WordKeywordGroup("name", GroupHierarchyType.INDEPENDENT, "keywords", "test", false, ',', false);
List<String> serialization = groupSerializer.serializeTree(GroupTreeNode.fromGroup(group));
assertEquals(Collections.singletonList("0 KeywordGroup:name;0;keywords;test;0;0;1;;;;"), serialization);
}

@Test
public void serializeSingleRegexKeywordGroup() {
void serializeSingleRegexKeywordGroup() {
KeywordGroup group = new RegexKeywordGroup("myExplicitGroup", GroupHierarchyType.REFINING, "author", "asdf", false);
List<String> serialization = groupSerializer.serializeTree(GroupTreeNode.fromGroup(group));
assertEquals(Collections.singletonList("0 KeywordGroup:myExplicitGroup;1;author;asdf;0;1;1;;;;"), serialization);
}

@Test
public void serializeSingleSearchGroup() {
void serializeSingleSearchGroup() {
SearchGroup group = new SearchGroup("myExplicitGroup", GroupHierarchyType.INDEPENDENT, "author=harrer", true, true);
List<String> serialization = groupSerializer.serializeTree(GroupTreeNode.fromGroup(group));
assertEquals(Collections.singletonList("0 SearchGroup:myExplicitGroup;0;author=harrer;1;1;1;;;;"), serialization);
}

@Test
public void serializeSingleSearchGroupWithRegex() {
void serializeSingleSearchGroupWithRegex() {
SearchGroup group = new SearchGroup("myExplicitGroup", GroupHierarchyType.INCLUDING, "author=\"harrer\"", true, false);
List<String> serialization = groupSerializer.serializeTree(GroupTreeNode.fromGroup(group));
assertEquals(Collections.singletonList("0 SearchGroup:myExplicitGroup;2;author=\"harrer\";1;0;1;;;;"), serialization);
}

@Test
public void serializeSingleAutomaticKeywordGroup() {
void serializeSingleAutomaticKeywordGroup() {
AutomaticGroup group = new AutomaticKeywordGroup("myAutomaticGroup", GroupHierarchyType.INDEPENDENT, "keywords", ',', '>');
List<String> serialization = groupSerializer.serializeTree(GroupTreeNode.fromGroup(group));
assertEquals(Collections.singletonList("0 AutomaticKeywordGroup:myAutomaticGroup;0;keywords;,;>;1;;;;"), serialization);
}

@Test
public void serializeSingleAutomaticPersonGroup() {
void serializeSingleAutomaticPersonGroup() {
AutomaticPersonsGroup group = new AutomaticPersonsGroup("myAutomaticGroup", GroupHierarchyType.INDEPENDENT, "authors");
List<String> serialization = groupSerializer.serializeTree(GroupTreeNode.fromGroup(group));
assertEquals(Collections.singletonList("0 AutomaticPersonsGroup:myAutomaticGroup;0;authors;1;;;;"), serialization);
}

@Test
public void serializeSingleTexGroup() throws Exception {
TexGroup group = new TexGroup("myTexGroup", GroupHierarchyType.INDEPENDENT, Paths.get("path", "To", "File"), new DefaultAuxParser(new BibDatabase()), new DummyFileUpdateMonitor(), new MetaData());
void serializeSingleTexGroup() throws Exception {
TexGroup group = TexGroup.createWithoutFileMonitoring("myTexGroup", GroupHierarchyType.INDEPENDENT, Paths.get("path", "To", "File"), new DefaultAuxParser(new BibDatabase()), new DummyFileUpdateMonitor(), new MetaData());
List<String> serialization = groupSerializer.serializeTree(GroupTreeNode.fromGroup(group));
assertEquals(Collections.singletonList("0 TexGroup:myTexGroup;0;path/To/File;1;;;;"), serialization);
}

@Test
public void getTreeAsStringInSimpleTree() throws Exception {
void getTreeAsStringInSimpleTree() throws Exception {
GroupTreeNode root = GroupTreeNodeTest.getRoot();
GroupTreeNodeTest.getNodeInSimpleTree(root);

Expand All @@ -136,7 +136,7 @@ public void getTreeAsStringInSimpleTree() throws Exception {
}

@Test
public void getTreeAsStringInComplexTree() throws Exception {
void getTreeAsStringInComplexTree() throws Exception {
GroupTreeNode root = GroupTreeNodeTest.getRoot();
GroupTreeNodeTest.getNodeInComplexTree(root);

Expand Down
26 changes: 13 additions & 13 deletions src/test/java/org/jabref/logic/importer/util/GroupsParserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,46 +27,46 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

public class GroupsParserTest {
class GroupsParserTest {
private FileUpdateMonitor fileMonitor;
private MetaData metaData;

@BeforeEach
public void setUp() throws Exception {
void setUp() throws Exception {
fileMonitor = new DummyFileUpdateMonitor();
metaData = new MetaData();
}

@Test
// For https://github.com/JabRef/jabref/issues/1681
public void fromStringParsesExplicitGroupWithEscapedCharacterInName() throws Exception {
void fromStringParsesExplicitGroupWithEscapedCharacterInName() throws Exception {
ExplicitGroup expected = new ExplicitGroup("B{\\\"{o}}hmer", GroupHierarchyType.INDEPENDENT, ',');
AbstractGroup parsed = GroupsParser.fromString("ExplicitGroup:B{\\\\\"{o}}hmer;0;", ',', fileMonitor, metaData);

assertEquals(expected, parsed);
}

@Test
public void keywordDelimiterThatNeedsToBeEscaped() throws Exception {
void keywordDelimiterThatNeedsToBeEscaped() throws Exception {
AutomaticGroup expected = new AutomaticKeywordGroup("group1", GroupHierarchyType.INDEPENDENT, "keywords", ';', '>');
AbstractGroup parsed = GroupsParser.fromString("AutomaticKeywordGroup:group1;0;keywords;\\;;>;1;;;;;", ';', fileMonitor, metaData);
assertEquals(expected, parsed);
}

@Test
public void hierarchicalDelimiterThatNeedsToBeEscaped() throws Exception {
void hierarchicalDelimiterThatNeedsToBeEscaped() throws Exception {
AutomaticGroup expected = new AutomaticKeywordGroup("group1", GroupHierarchyType.INDEPENDENT, "keywords", ',', ';');
AbstractGroup parsed = GroupsParser.fromString("AutomaticKeywordGroup:group1;0;keywords;,;\\;;1;;;;;", ';', fileMonitor, metaData);
assertEquals(expected, parsed);
}

@Test
public void fromStringThrowsParseExceptionForNotEscapedGroupName() throws Exception {
void fromStringThrowsParseExceptionForNotEscapedGroupName() throws Exception {
assertThrows(ParseException.class, () -> GroupsParser.fromString("ExplicitGroup:slit\\\\;0\\;mertsch_slit2_2007\\;;", ',', fileMonitor, metaData));
}

@Test
public void testImportSubGroups() throws Exception {
void testImportSubGroups() throws Exception {

List<String> orderedData = Arrays.asList("0 AllEntriesGroup:", "1 ExplicitGroup:1;0;",
"2 ExplicitGroup:2;0;", "0 ExplicitGroup:3;0;");
Expand All @@ -93,7 +93,7 @@ public void testImportSubGroups() throws Exception {
}

@Test
public void fromStringParsesExplicitGroupWithIconAndDescription() throws Exception {
void fromStringParsesExplicitGroupWithIconAndDescription() throws Exception {
ExplicitGroup expected = new ExplicitGroup("myExplicitGroup", GroupHierarchyType.INDEPENDENT, ',');
expected.setIconName("test icon");
expected.setExpanded(true);
Expand All @@ -105,28 +105,28 @@ public void fromStringParsesExplicitGroupWithIconAndDescription() throws Excepti
}

@Test
public void fromStringParsesAutomaticKeywordGroup() throws Exception {
void fromStringParsesAutomaticKeywordGroup() throws Exception {
AutomaticGroup expected = new AutomaticKeywordGroup("myAutomaticGroup", GroupHierarchyType.INDEPENDENT, "keywords", ',', '>');
AbstractGroup parsed = GroupsParser.fromString("AutomaticKeywordGroup:myAutomaticGroup;0;keywords;,;>;1;;;;", ',', fileMonitor, metaData);
assertEquals(expected, parsed);
}

@Test
public void fromStringParsesAutomaticPersonGroup() throws Exception {
void fromStringParsesAutomaticPersonGroup() throws Exception {
AutomaticPersonsGroup expected = new AutomaticPersonsGroup("myAutomaticGroup", GroupHierarchyType.INDEPENDENT, "authors");
AbstractGroup parsed = GroupsParser.fromString("AutomaticPersonsGroup:myAutomaticGroup;0;authors;1;;;;", ',', fileMonitor, metaData);
assertEquals(expected, parsed);
}

@Test
public void fromStringParsesTexGroup() throws Exception {
TexGroup expected = new TexGroup("myTexGroup", GroupHierarchyType.INDEPENDENT, Paths.get("path", "To", "File"), new DefaultAuxParser(new BibDatabase()), fileMonitor, metaData);
void fromStringParsesTexGroup() throws Exception {
TexGroup expected = TexGroup.createWithoutFileMonitoring("myTexGroup", GroupHierarchyType.INDEPENDENT, Paths.get("path", "To", "File"), new DefaultAuxParser(new BibDatabase()), fileMonitor, metaData);
AbstractGroup parsed = GroupsParser.fromString("TexGroup:myTexGroup;0;path/To/File;1;;;;", ',', fileMonitor, metaData);
assertEquals(expected, parsed);
}

@Test
public void fromStringUnknownGroupThrowsException() throws Exception {
void fromStringUnknownGroupThrowsException() throws Exception {
assertThrows(ParseException.class, () -> GroupsParser.fromString("0 UnknownGroup:myUnknownGroup;0;;1;;;;", ',', fileMonitor, metaData));
}
}