Skip to content

Commit

Permalink
Better check for empty configs in checkAll
Browse files Browse the repository at this point in the history
  • Loading branch information
joshdales committed May 17, 2023
1 parent a256a58 commit 57d3407
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 13 deletions.
6 changes: 6 additions & 0 deletions __tests__/fixtures/any_and_all.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
tests:
- any:
- head-branch: ['^tests/', '^test/']
- changed-files: ['tests/**/*']
- all:
- changed-files: ['!tests/requirements.txt']
20 changes: 15 additions & 5 deletions __tests__/main.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ const getPullMock = jest.spyOn(gh.rest.pulls, 'get');
const yamlFixtures = {
'branches.yml': fs.readFileSync('__tests__/fixtures/branches.yml'),
'only_pdfs.yml': fs.readFileSync('__tests__/fixtures/only_pdfs.yml'),
'not_supported.yml': fs.readFileSync('__tests__/fixtures/not_supported.yml')
'not_supported.yml': fs.readFileSync('__tests__/fixtures/not_supported.yml'),
'any_and_all.yml': fs.readFileSync('__tests__/fixtures/any_and_all.yml')
};

afterAll(() => jest.restoreAllMocks());
Expand Down Expand Up @@ -167,19 +168,28 @@ describe('run', () => {
});
});

it('can support multiple branches by providing an array', async () => {
github.context.payload.pull_request!.head = {ref: 'array/123'};
usingLabelerConfigYaml('branches.yml');
it('adds a label when matching any and all patterns are provided', async () => {
usingLabelerConfigYaml('any_and_all.yml');
mockGitHubResponseChangedFiles('tests/test.ts');
await run();

expect(addLabelsMock).toHaveBeenCalledTimes(1);
expect(addLabelsMock).toHaveBeenCalledWith({
owner: 'monalisa',
repo: 'helloworld',
issue_number: 123,
labels: ['array-branch']
labels: ['tests']
});
});

it('does not add a label when not all any and all patterns are matched', async () => {
usingLabelerConfigYaml('any_and_all.yml');
mockGitHubResponseChangedFiles('tests/requirements.txt');
await run();

expect(addLabelsMock).toHaveBeenCalledTimes(0);
expect(removeLabelMock).toHaveBeenCalledTimes(0);
});
});

function usingLabelerConfigYaml(fixtureName: keyof typeof yamlFixtures): void {
Expand Down
6 changes: 3 additions & 3 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,8 @@ function checkMatch(changedFiles, matchConfig) {
// equivalent to "Array.some()" but expanded for debugging and clarity
function checkAny(matchConfigs, changedFiles) {
core.debug(` checking "any" patterns`);
if (!matchConfigs.length) {
if (!matchConfigs.length ||
!matchConfigs.some(configOption => Object.keys(configOption).length)) {
core.debug(` no "any" patterns to check`);
return false;
}
Expand Down Expand Up @@ -468,8 +469,7 @@ exports.checkAny = checkAny;
function checkAll(matchConfigs, changedFiles) {
core.debug(` checking "all" patterns`);
if (!matchConfigs.length ||
// Make sure that all the configs have keys that we can check for
!matchConfigs.some(configOption => ALLOWED_CONFIG_KEYS.includes(Object.keys(configOption)[0]))) {
!matchConfigs.some(configOption => Object.keys(configOption).length)) {
core.debug(` no "all" patterns to check`);
return false;
}
Expand Down
10 changes: 5 additions & 5 deletions src/labeler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,10 @@ export function checkAny(
changedFiles: string[]
): boolean {
core.debug(` checking "any" patterns`);
if (!matchConfigs.length) {
if (
!matchConfigs.length ||
!matchConfigs.some(configOption => Object.keys(configOption).length)
) {
core.debug(` no "any" patterns to check`);
return false;
}
Expand Down Expand Up @@ -262,10 +265,7 @@ export function checkAll(
core.debug(` checking "all" patterns`);
if (
!matchConfigs.length ||
// Make sure that all the configs have keys that we can check for
!matchConfigs.some(configOption =>
ALLOWED_CONFIG_KEYS.includes(Object.keys(configOption)[0])
)
!matchConfigs.some(configOption => Object.keys(configOption).length)
) {
core.debug(` no "all" patterns to check`);
return false;
Expand Down

0 comments on commit 57d3407

Please sign in to comment.