diff --git a/packages/gatsby-plugin-sitemap/src/__tests__/internals.js b/packages/gatsby-plugin-sitemap/src/__tests__/internals.js index ad125320717a6..1dd792ddad7d6 100644 --- a/packages/gatsby-plugin-sitemap/src/__tests__/internals.js +++ b/packages/gatsby-plugin-sitemap/src/__tests__/internals.js @@ -97,4 +97,29 @@ describe(`gatsby-plugin-sitemap internals tests`, () => { expect(results).toMatchSnapshot() }) + + it(`pageFilter should filter correctly on consecutive runs`, () => { + const allPages = [ + { path: `/to/keep/1` }, + { path: `/to/keep/2` }, + { path: `/404.html` }, + ] + const filterPages = jest.fn() + + const { filteredPages } = pageFilter({ + allPages, + filterPages, + excludes: [], + }) + expect(filteredPages).toHaveLength(2) + expect(filteredPages).not.toContainEqual({ path: `/404.html` }) + + const { filteredPages: filteredPages2 } = pageFilter({ + allPages, + filterPages, + excludes: [], + }) + expect(filteredPages2).toHaveLength(2) + expect(filteredPages2).not.toContainEqual({ path: `/404.html` }) + }) }) diff --git a/packages/gatsby-plugin-sitemap/src/internals.js b/packages/gatsby-plugin-sitemap/src/internals.js index 255e25a8c303b..8d9cf621777ad 100644 --- a/packages/gatsby-plugin-sitemap/src/internals.js +++ b/packages/gatsby-plugin-sitemap/src/internals.js @@ -161,7 +161,7 @@ export function pageFilter({ allPages, filterPages, excludes }) { // TODO we should optimize these loops const filteredPages = allPages.filter(page => { - const defaultFilterMatches = defaultExcludes.some((exclude, i, arr) => { + const defaultFilterMatches = defaultExcludes.some(exclude => { try { const doesMatch = defaultFilterPages(page, exclude, { minimatch, @@ -169,11 +169,6 @@ export function pageFilter({ allPages, filterPages, excludes }) { resolvePagePath, }) - // default excludes can only be found once, so remove them from the arr once excluded - if (doesMatch) { - arr.splice(i, 1) - } - return doesMatch } catch { throw new Error(`${REPORTER_PREFIX} Error in default page filter`)