Skip to content
This repository has been archived by the owner on Apr 6, 2022. It is now read-only.

Commit

Permalink
[FIXED JENKINS-23635] Use upper case tag as type when parsing with ig…
Browse files Browse the repository at this point in the history
…nore case option.
  • Loading branch information
uhafner committed Aug 31, 2014
1 parent 2599a79 commit cfdc299
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 15 deletions.
8 changes: 7 additions & 1 deletion src/main/java/hudson/plugins/tasks/parser/TaskScanner.java
Expand Up @@ -31,6 +31,7 @@ public class TaskScanner {

/** The regular expression patterns to be used to scan the files. One pattern per priority. */
private final Map<Priority, Pattern> patterns = new HashMap<Priority, Pattern>();
private final boolean ignoreCase;

private boolean isInvalidPattern;
private final StringBuilder errorMessage = new StringBuilder();
Expand All @@ -55,6 +56,7 @@ public TaskScanner() {
* if case should be ignored during matching
*/
public TaskScanner(final String high, final String normal, final String low, final boolean ignoreCase) {
this.ignoreCase = ignoreCase;
if (StringUtils.isNotBlank(high)) {
patterns.put(Priority.HIGH, compile(high, ignoreCase));
}
Expand Down Expand Up @@ -141,7 +143,11 @@ public Collection<Task> scan(final Reader reader) throws IOException {
Matcher matcher = patterns.get(priority).matcher(line);
if (matcher.matches() && matcher.groupCount() == 2) {
String message = matcher.group(2).trim();
tasks.add(new Task(priority, lineNumber, matcher.group(1), StringUtils.remove(message, ":").trim()));
String tag = matcher.group(1);
if (ignoreCase) {
tag = StringUtils.upperCase(tag);
}
tasks.add(new Task(priority, lineNumber, tag, StringUtils.remove(message, ":").trim()));
}
}
}
Expand Down
23 changes: 9 additions & 14 deletions src/test/java/hudson/plugins/tasks/parser/TaskScannerTest.java
Expand Up @@ -106,25 +106,17 @@ public void scanFileWithWords() throws IOException {
*/
@Test
public void testCaseSensitive() throws IOException {
InputStream file = TaskScannerTest.class.getResourceAsStream(TEST_FILE);

Collection<Task> result = new TaskScanner(null, "todo", null, false).scan(new InputStreamReader(file));
assignProperties(result);
assertEquals(WRONG_NUMBER_OF_TASKS_ERROR, 1, result.size());
verifyOneTaskWhenCheckingCase("todo", 25);
verifyOneTaskWhenCheckingCase("ToDo", 27);
}

/**
* Checks case sensitivity.
*
* @throws IOException if we can't read the file
*/
@Test
public void testCaseSensitive2() throws IOException {
private void verifyOneTaskWhenCheckingCase(final String tag, final int lineNumber) throws IOException {
InputStream file = TaskScannerTest.class.getResourceAsStream(TEST_FILE);

Collection<Task> result = new TaskScanner(null, "ToDo", null, false).scan(new InputStreamReader(file));
Collection<Task> result = new TaskScanner(null, tag, null, false).scan(new InputStreamReader(file));
assignProperties(result);
assertEquals(WRONG_NUMBER_OF_TASKS_ERROR, 1, result.size());
Task task = result.iterator().next();
verifyTask(task, Priority.NORMAL, tag, lineNumber, "");
}

/**
Expand All @@ -139,6 +131,9 @@ public void testCaseInsensitive() throws IOException {
Collection<Task> result = new TaskScanner(null, "todo", null, true).scan(new InputStreamReader(file));
assignProperties(result);
assertEquals(WRONG_NUMBER_OF_TASKS_ERROR, 9, result.size());
for (Task task : result) {
assertEquals("Tag name should be case insensitive", "TODO", task.getType());
}
}

/**
Expand Down

0 comments on commit cfdc299

Please sign in to comment.