Skip to content

Commit 066369e

Browse files
committed
💚 fix CI runs for fork PRs
1 parent a97125a commit 066369e

3 files changed

Lines changed: 52 additions & 14 deletions

File tree

‎.github/workflows/test.yml‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
- run: npm install
3636
- run: npm run test:integration
3737
env:
38-
GITHUB_TOKEN: ${{ secrets.INT_TEST_TOKEN }}
38+
GITHUB_TOKEN: ${{ secrets.INT_TEST_TOKEN != '' && secrets.INT_TEST_TOKEN || secrets.GITHUB_TOKEN }}
3939
action-in-action:
4040
runs-on: ubuntu-latest
4141
steps:
@@ -47,6 +47,9 @@ jobs:
4747
- run: npm install
4848
- uses: ./
4949
id: maker
50+
env:
51+
TEST_REPOS: ${{ github.repository != 'pkgjs/meet' && github.repository || 'pkgjs/meet,pkgjs/meet' }}
52+
TEST_ORGS: ${{ github.repository != 'pkgjs/meet' && '' || 'pkgjs' }}
5053
with:
5154
token: ${{ secrets.GITHUB_TOKEN }}
5255
schedules: 2020-04-02T17:00:00.0Z/P1D
@@ -56,7 +59,7 @@ jobs:
5659
agendaLabel: meeting-agenda-test
5760
meetingLink: https://github.com/pkgjs/meet
5861
createNotes: true
59-
repos: pkgjs/meet,pkgjs/meet
60-
orgs: pkgjs
62+
repos: ${{ env.TEST_REPOS }}
63+
orgs: ${{ env.TEST_ORGS }}
6164
- name: clean up issue
6265
run: node ./test/_close-issue.js ${{ secrets.GITHUB_TOKEN }} ${{ steps.maker.outputs.issueNumber }}

‎test/_close-issue.js‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ const issues = require('../lib/issues')
66
if (!issueNumber) {
77
return
88
}
9-
console.log(`Closing test issue ${issueNumber}`)
109

1110
const client = getOctokit(token)
11+
const repo = context.repo
12+
13+
console.log(`Closing test issue ${issueNumber} in ${repo.owner}/${repo.repo}`)
14+
1215
await issues.closeIssue(client, issueNumber, {
13-
...context.repo
16+
...repo
1417
})
1518
})(process.argv)

‎test/integration.js‎

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,47 @@ const { getOctokit } = require('@actions/github')
1111
const pkg = require('../package.json')
1212
const meetings = require('../lib/meetings')
1313

14+
const mainRepo = 'pkgjs/meet'
15+
16+
function getTestRepo () {
17+
let testRepo = { owner: 'wesleytodd', repo: 'meeting-maker' } // ✨ Wes, the meeting maker ✨
18+
19+
if (process.env.GITHUB_REPOSITORY) {
20+
// we appear to be in a GH action
21+
if (process.env.GITHUB_REPOSITORY !== mainRepo) {
22+
// action running in a fork
23+
const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/')
24+
testRepo = { owner, repo }
25+
} else if (process.env.GITHUB_HEAD_REPO &&
26+
process.env.GITHUB_HEAD_REPO !== mainRepo) {
27+
// action running in a fork PR targeting main repo
28+
const [owner, repo] = process.env.GITHUB_HEAD_REPO.split('/')
29+
testRepo = { owner, repo }
30+
}
31+
}
32+
33+
console.log(`using repository ${testRepo.owner}/${testRepo.repo}`)
34+
return testRepo
35+
}
36+
1437
suite(`${pkg.name} integration`, () => {
1538
let client
39+
let testRepo
40+
1641
before(() => {
17-
client = getOctokit(process.env.GITHUB_TOKEN)
42+
const token = process.env.GITHUB_TOKEN
43+
if (!token) {
44+
throw new Error('GITHUB_TOKEN environment variable is required for integration tests')
45+
}
46+
47+
client = getOctokit(token)
48+
testRepo = getTestRepo()
1849
})
50+
1951
test('should create next meeting issue', async () => {
2052
const issue = await meetings.shouldCreateNextMeetingIssue(client, {
21-
owner: 'wesleytodd',
22-
repo: 'meeting-maker',
53+
owner: testRepo.owner,
54+
repo: testRepo.repo,
2355
issueTitle: ({ date }) => `Test Meeting ${date.toZonedDateTimeISO('UTC').toPlainDate().toString()}`,
2456
createWithin: 'P7D',
2557
agendaLabel: 'meeting-agenda',
@@ -30,8 +62,8 @@ suite(`${pkg.name} integration`, () => {
3062
now: Temporal.Instant.from('2020-04-13T13:00:00.0Z'),
3163
meetingLabels: ['testMeeting', 'test']
3264
})
33-
assert.deepStrictEqual(issue.owner, 'wesleytodd')
34-
assert.deepStrictEqual(issue.repo, 'meeting-maker')
65+
assert.deepStrictEqual(issue.owner, testRepo.owner)
66+
assert.deepStrictEqual(issue.repo, testRepo.repo)
3567
assert.deepStrictEqual(issue.title, `Test Meeting ${Temporal.Instant.from('2020-04-16T13:00:00.0Z').toZonedDateTimeISO('UTC').toPlainDate().toString()}`)
3668
assert.deepStrictEqual(issue.agendaLabel, 'meeting-agenda')
3769
assert.deepStrictEqual(issue.labels, ['testMeeting', 'test'])
@@ -41,8 +73,8 @@ suite(`${pkg.name} integration`, () => {
4173

4274
test('create next meeting issue', async () => {
4375
const issue = await meetings.createNextMeeting(client, {
44-
owner: 'wesleytodd',
45-
repo: 'meeting-maker',
76+
owner: testRepo.owner,
77+
repo: testRepo.repo,
4678
createWithin: 'P7D',
4779
schedules: [
4880
// 5pm GMT April 2 repeating every 28 days
@@ -60,8 +92,8 @@ suite(`${pkg.name} integration`, () => {
6092
assert.deepStrictEqual(issue.data.state, 'open')
6193

6294
await client.rest.issues.update({
63-
owner: 'wesleytodd',
64-
repo: 'meeting-maker',
95+
owner: testRepo.owner,
96+
repo: testRepo.repo,
6597
issue_number: issue.data.number,
6698
state: 'closed'
6799
})

0 commit comments

Comments
 (0)