Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0ad1257

Browse files
committed
ci: don't install fixture's deps if next version requierment is not satisfied
1 parent 96ff784 commit 0ad1257

File tree

4 files changed

+37
-19
lines changed

4 files changed

+37
-19
lines changed

‎tests/prepare.mjs‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,12 @@ const promises = fixtures.map((fixture) =>
6060
})
6161
await Promise.all(publishDirectories.map((dir) => rm(dir, { recursive: true, force: true })))
6262

63-
if (NEXT_VERSION !== 'latest') {
64-
await setNextVersionInFixture(cwd, NEXT_VERSION, {
65-
logPrefix: `[${fixture}] `,
66-
})
63+
const fixtureNextVersionSatisfied = await setNextVersionInFixture(cwd, NEXT_VERSION, {
64+
logPrefix: `[${fixture}] `,
65+
})
66+
67+
if (!fixtureNextVersionSatisfied) {
68+
return
6769
}
6870

6971
let cmd = ``
@@ -104,12 +106,10 @@ const promises = fixtures.map((fixture) =>
104106
}
105107
output.stderr?.pipe(addPrefix).pipe(process.stderr)
106108
return output.finally(async () => {
107-
if (NEXT_VERSION !== 'latest') {
108-
await setNextVersionInFixture(cwd, 'latest', {
109-
logPrefix: `[${fixture}] `,
110-
operation: 'revert',
111-
})
112-
}
109+
await setNextVersionInFixture(cwd, 'latest', {
110+
logPrefix: `[${fixture}] `,
111+
operation: 'revert',
112+
})
113113
if (output.exitCode !== 0) {
114114
const errorMessage = `[${fixture}] 🚨 Failed to install dependencies or build a fixture`
115115
console.error(errorMessage)

‎tests/utils/create-e2e-fixture.ts‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,7 @@ export const createE2EFixture = async (fixture: string, config: E2EConfig = {})
7777
copyFixture(fixture, isolatedFixtureRoot, config),
7878
])
7979

80-
if (NEXT_VERSION !== 'latest') {
81-
await setNextVersionInFixture(isolatedFixtureRoot, NEXT_VERSION)
82-
}
80+
await setNextVersionInFixture(isolatedFixtureRoot, NEXT_VERSION)
8381
await installRuntime(packageName, isolatedFixtureRoot, config)
8482
await verifyFixture(isolatedFixtureRoot, config)
8583

‎tests/utils/fixture.ts‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,7 @@ const eszipHelper = join(actualCwd, 'tools/deno/eszip.ts')
3939

4040
async function installDependencies(cwd: string) {
4141
const NEXT_VERSION = process.env.NEXT_VERSION ?? 'latest'
42-
if (NEXT_VERSION !== 'latest') {
43-
await setNextVersionInFixture(cwd, NEXT_VERSION, { silent: true })
44-
}
42+
await setNextVersionInFixture(cwd, NEXT_VERSION, { silent: true })
4543

4644
const { packageManager } = JSON.parse(await readFile(join(cwd, 'package.json'), 'utf8'))
4745
if (packageManager?.startsWith('pnpm')) {

‎tests/utils/next-version-helpers.mjs‎

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export function nextVersionRequiresReact19(version) {
7070
* @param {'update' | 'revert'} [options.operation] This just informs log output wording, otherwise it has no effect
7171
* @param {boolean} [options.silent] Doesn't produce any logs if truthy
7272
* @param {boolean} [options.updateReact] Update React version to match Next version
73-
* @returns {Promise<void>}
73+
* @returns {Promise<boolean>} true if fixture's next version requirements are satisfied
7474
*/
7575
export async function setNextVersionInFixture(
7676
cwd,
@@ -100,7 +100,7 @@ export async function setNextVersionInFixture(
100100

101101
const isSemverVersion = valid(resolvedVersion)
102102

103-
await Promise.all(
103+
constareNextVersionConstraintsSatisfied=await Promise.all(
104104
packageJsons.map(async (packageJsonPath) => {
105105
const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf8'))
106106
if (packageJson.dependencies?.next) {
@@ -118,9 +118,29 @@ export async function setNextVersionInFixture(
118118
`${logPrefix}⏩ Skipping '${packageJson.name}' because it requires next@${versionConstraint}`,
119119
)
120120
}
121-
return
121+
returnfalse
122122
}
123+
}
124+
return true
125+
}),
126+
)
127+
128+
if (areNextVersionConstraintsSatisfied.some((isSatisfied) => !isSatisfied)) {
129+
// at least one next version constraint is not satisfied so we skip this fixture
130+
return false
131+
}
132+
133+
if (process.env.NEXT_VERSION ?? 'latest' === 'latest') {
134+
// latest is default so we don't want to make any changes
135+
return true
136+
}
137+
138+
await Promise.all(
139+
packageJsons.map(async (packageJsonPath) => {
140+
const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf8'))
141+
if (packageJson.dependencies?.next) {
123142
packageJson.dependencies.next = version
143+
const checkVersion = isSemverVersion ? resolvedVersion : FUTURE_NEXT_PATCH_VERSION
124144

125145
const { stdout } = await execaCommand(
126146
`npm info next@${resolvedVersion} peerDependencies --json`,
@@ -172,4 +192,6 @@ export async function setNextVersionInFixture(
172192
`${logPrefix}さんかく ${operation === 'revert' ? 'Reverted' : 'Updated'} to ${nextVersionForLogs}`,
173193
)
174194
}
195+
196+
return true
175197
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /