Skip to content

Commit

Permalink
Merge pull request #1 from levigo/feature/find_multiple_issue_keys
Browse files Browse the repository at this point in the history
feature/find_multiple_issue_keys
  • Loading branch information
hennejg committed May 26, 2023
2 parents cbb1f6c + 1a53a1d commit fa25713
Show file tree
Hide file tree
Showing 4 changed files with 6,250 additions and 250 deletions.
17 changes: 9 additions & 8 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,10 @@ let baseDir, commitId, mainBranch;
* </li>
* </ol>
*/
const defaultRegex = new RegExp("((?<!([A-Z]{1,10})-?)[A-Z]+-[1-9]\\d*(?![^\\s:.,;!\"/|)}\\]?+&]))");
const defaultPattern = "((?<!([A-Z]{1,10})-?)[A-Z]+-[1-9]\\d*(?![^\\s:.,;!\"/|)}\\]?+&]))";

/**
* Uses the Regex to extract a Jira issue key from the given commit messages. If multiple Jira issue keys
* are part of the commitMessages, only the first occurrence will be considered.
* Uses the Regex to extract one or more Jira issue key(s) from the given commit messages.
*
* @param commitMessages
* @returns {*[]}
Expand All @@ -69,14 +68,16 @@ function getJiraIssueKeys(commitMessages) {
const retVal = [];
for (let i = 0; i < commitMessages.length; i++) {
let commitMessage = commitMessages[i];
if (defaultRegex.test(commitMessage)) {
const message = defaultRegex.exec(commitMessage)[0];
if (retVal.indexOf(message)<0) {
retVal[retVal.length] = message;
}
const re = new RegExp(defaultPattern, "g"); // re-create due to stateful use
while ((match = re.exec(commitMessage)) !== null) {
retVal.push(match[0]);
}
}
return retVal;
}

// just for testing
module.exports = {
getJiraIssueKeys: getJiraIssueKeys
};

40 changes: 40 additions & 0 deletions index.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
const main = require('./index');

test('extracts simple keys', () => {
expect(main.getJiraIssueKeys([
"Bla fasel FOO-17 test 1 2 3",
])).toStrictEqual([
"FOO-17"
]);
});
test('extracts at start end end', () => {
expect(main.getJiraIssueKeys([
"FOO-1 Bla fasel test 1 2 3 FOO-2",
])).toStrictEqual([
"FOO-1",
"FOO-2"
]);
});
test('extracts multiple keys', () => {
expect(main.getJiraIssueKeys([
"Bla fasel FOO-17 test FOO-19 1 2 3",
])).toStrictEqual([
"FOO-17",
"FOO-19"
]);
});

test('extracts from conventionalcommit', () => {
expect(main.getJiraIssueKeys([
"fix(FOO-17): do something",
])).toStrictEqual([
"FOO-17"
]);
});

test('doesn\'t match junk', () => {
expect(main.getJiraIssueKeys([
"FOO_17 BAR-0123 BAZ-99a",
])).toStrictEqual([
]);
});
Loading

0 comments on commit fa25713

Please sign in to comment.