mirror of
https://github.com/esphome/esphome.git
synced 2026-08-22 22:26:21 +00:00
[ci] Compare merge-branch base ref against the default branch (#18385)
This commit is contained in:
@@ -70,6 +70,7 @@ async function isStackedPr(github, context) {
|
|||||||
async function detectMergeBranch(github, context) {
|
async function detectMergeBranch(github, context) {
|
||||||
const labels = new Set();
|
const labels = new Set();
|
||||||
const baseRef = context.payload.pull_request.base.ref;
|
const baseRef = context.payload.pull_request.base.ref;
|
||||||
|
const defaultBranch = context.payload.repository.default_branch;
|
||||||
|
|
||||||
if (baseRef === 'release') {
|
if (baseRef === 'release') {
|
||||||
labels.add('merging-to-release');
|
labels.add('merging-to-release');
|
||||||
@@ -78,7 +79,7 @@ async function detectMergeBranch(github, context) {
|
|||||||
} else if (await isStackedPr(github, context)) {
|
} else if (await isStackedPr(github, context)) {
|
||||||
// GitHub manages the merge order for a stack, so these are not blocked.
|
// GitHub manages the merge order for a stack, so these are not blocked.
|
||||||
labels.add('stacked-pr');
|
labels.add('stacked-pr');
|
||||||
} else if (baseRef !== 'dev') {
|
} else if (baseRef !== defaultBranch) {
|
||||||
// A chain built by hand: it must not merge until its base branch does.
|
// A chain built by hand: it must not merge until its base branch does.
|
||||||
labels.add('chained-pr');
|
labels.add('chained-pr');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,14 +43,14 @@ const WITHOUT_SCHEMA = 'CODEOWNERS = ["@esphome/core"]';
|
|||||||
|
|
||||||
// Builds a fresh context for detectMergeBranch tests instead of mutating the
|
// Builds a fresh context for detectMergeBranch tests instead of mutating the
|
||||||
// shared CONTEXT fixture above (which other describe blocks rely on).
|
// shared CONTEXT fixture above (which other describe blocks rely on).
|
||||||
function makeMergeContext(baseRef, { stack } = {}) {
|
function makeMergeContext(baseRef, { stack, defaultBranch = 'dev' } = {}) {
|
||||||
const pull_request = { number: 1, base: { ref: baseRef } };
|
const pull_request = { number: 1, base: { ref: baseRef } };
|
||||||
if (stack !== undefined) {
|
if (stack !== undefined) {
|
||||||
pull_request.stack = stack;
|
pull_request.stack = stack;
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
repo: { owner: 'esphome', repo: 'esphome' },
|
repo: { owner: 'esphome', repo: 'esphome' },
|
||||||
payload: { pull_request }
|
payload: { pull_request, repository: { default_branch: defaultBranch } }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,6 +136,21 @@ describe('detectMergeBranch', () => {
|
|||||||
assert.deepEqual(Array.from(labels).sort(), ['chained-pr']);
|
assert.deepEqual(Array.from(labels).sort(), ['chained-pr']);
|
||||||
assert.equal(state.calls, 1);
|
assert.equal(state.calls, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('base ref matches default branch adds no labels', async () => {
|
||||||
|
const { github } = makeStackGithub({ stack: null });
|
||||||
|
const context = makeMergeContext('other', { defaultBranch: 'other' });
|
||||||
|
const labels = await detectMergeBranch(github, context);
|
||||||
|
assert.deepEqual(Array.from(labels).sort(), []);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('base ref dev when the default branch is main adds chained-pr', async () => {
|
||||||
|
const { github } = makeStackGithub({ stack: null });
|
||||||
|
const context = makeMergeContext('dev', { defaultBranch: 'main' });
|
||||||
|
const labels = await detectMergeBranch(github, context);
|
||||||
|
assert.deepEqual(Array.from(labels).sort(), ['chained-pr']);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user