Skip to content

Commit

Permalink
fix(gatsby): use correct stageLabel instead of undefined (#28701)
Browse files Browse the repository at this point in the history
* add basic tests for webpack-error-utils

* fix(gatsby): use correct stageLabel instead of undefined
  • Loading branch information
pieh committed Dec 19, 2020
1 parent 0a06a79 commit a77e1d8
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`structureWebpackErrors stage: build-html Can't resolve (98124) 1`] = `
Object {
"context": Object {
"packageName": "wat.js",
"sourceMessage": "Can't resolve 'wat.js' in 'foo.js'",
"stage": "build-html",
"stageLabel": "Generating SSR bundle",
},
"filePath": "foo.js",
"id": "98124",
"location": Object {
"start": Object {
"column": 10,
"line": 5,
},
},
}
`;

exports[`structureWebpackErrors stage: build-javascript Can't resolve (98124) 1`] = `
Object {
"context": Object {
"packageName": "wat.js",
"sourceMessage": "Can't resolve 'wat.js' in 'foo.js'",
"stage": "build-javascript",
"stageLabel": "Generating JavaScript bundles",
},
"filePath": "foo.js",
"id": "98124",
"location": Object {
"start": Object {
"column": 10,
"line": 5,
},
},
}
`;

exports[`structureWebpackErrors stage: develop Can't resolve (98124) 1`] = `
Object {
"context": Object {
"packageName": "wat.js",
"sourceMessage": "Can't resolve 'wat.js' in 'foo.js'",
"stage": "develop",
"stageLabel": "Generating development JavaScript bundle",
},
"filePath": "foo.js",
"id": "98124",
"location": Object {
"start": Object {
"column": 10,
"line": 5,
},
},
}
`;

exports[`structureWebpackErrors stage: develop-html Can't resolve (98124) 1`] = `
Object {
"context": Object {
"packageName": "wat.js",
"sourceMessage": "Can't resolve 'wat.js' in 'foo.js'",
"stage": "develop-html",
"stageLabel": "Generating development SSR bundle",
},
"filePath": "foo.js",
"id": "98124",
"location": Object {
"start": Object {
"column": 10,
"line": 5,
},
},
}
`;
32 changes: 32 additions & 0 deletions packages/gatsby/src/utils/__tests__/webpack-error-utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { structureWebpackErrors } from "../webpack-error-utils"
import { Stage } from "../../commands/types"

describe(`structureWebpackErrors`, () => {
const stages: Array<Stage> = [
Stage.BuildJavascript,
Stage.BuildHTML,
Stage.DevelopHTML,
Stage.Develop,
]

describe.each(stages)(`stage: %s`, (stage: Stage) => {
it(`Can't resolve (98124)`, () => {
const error = new Error(`Can't resolve 'wat.js' in 'foo.js'`) as any
error.module = { resource: `foo.js` }
error.error = {
loc: {
line: 5,
column: 10,
},
}
let structuredError = structureWebpackErrors(stage, error)
if (Array.isArray(structuredError)) {
structuredError = structuredError[0]
}

expect(structuredError).toMatchSnapshot()
expect(structuredError.context.stageLabel).not.toBeUndefined()
expect(structuredError.context.stage).not.toBeUndefined()
})
})
})
17 changes: 7 additions & 10 deletions packages/gatsby/src/utils/webpack-error-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,12 @@ import { Stats } from "webpack"
import { IMatch } from "../types"
import { Stage as StageEnum } from "../commands/types"

const stageCodeToReadableLabel = {
BuildJavascript: `Generating JavaScript bundles`,
BuildHTML: `Generating SSR bundle`,
DevelopHTML: `Generating development SSR bundle`,
Develop: `Generating development JavaScript bundle`,
} as const

type Stage = keyof typeof StageEnum
type StageLabel = typeof stageCodeToReadableLabel[Stage]
const stageCodeToReadableLabel: Record<StageEnum, string> = {
[StageEnum.BuildJavascript]: `Generating JavaScript bundles`,
[StageEnum.BuildHTML]: `Generating SSR bundle`,
[StageEnum.DevelopHTML]: `Generating development SSR bundle`,
[StageEnum.Develop]: `Generating development JavaScript bundle`,
}

interface ITransformedWebpackError {
id: string
Expand All @@ -21,7 +18,7 @@ interface ITransformedWebpackError {
}
context: {
stage: StageEnum
stageLabel: StageLabel
stageLabel: string
sourceMessage?: string
[key: string]: unknown
}
Expand Down

0 comments on commit a77e1d8

Please sign in to comment.