diff options
author | 2022-09-30 17:13:44 -0500 | |
---|---|---|
committer | 2022-09-30 17:13:44 -0500 | |
commit | cf2bba1e4a32ff7d424cc1c4954d6328167af8d7 (patch) | |
tree | 5b5f9b2fda89c1dfdbf9eda111b930de1a03f1e0 /packages/integrations/mdx/test | |
parent | 0ae81479888ae76ce5ba6dc31b1c379675763797 (diff) | |
download | astro-cf2bba1e4a32ff7d424cc1c4954d6328167af8d7.tar.gz astro-cf2bba1e4a32ff7d424cc1c4954d6328167af8d7.tar.zst astro-cf2bba1e4a32ff7d424cc1c4954d6328167af8d7.zip |
P5: fix MDX memory leak (#4939)
* fix(astro): tag jsx vnodes with renderer so errors are properly handled
* chore: fix missing package in test
Co-authored-by: Nate Moore <nate@astro.build>
Diffstat (limited to 'packages/integrations/mdx/test')
6 files changed, 60 insertions, 0 deletions
diff --git a/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/astro.config.ts b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/astro.config.ts new file mode 100644 index 000000000..75a2b5f3a --- /dev/null +++ b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/astro.config.ts @@ -0,0 +1,6 @@ +import mdx from '@astrojs/mdx'; +import preact from '@astrojs/preact'; + +export default { + integrations: [mdx(), preact()] +} diff --git a/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/package.json b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/package.json new file mode 100644 index 000000000..5d1ab5632 --- /dev/null +++ b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/package.json @@ -0,0 +1,10 @@ +{ + "name": "@test/mdx-infinite-loop", + "type": "module", + "dependencies": { + "@astrojs/mdx": "workspace:*", + "@astrojs/preact": "workspace:*", + "preact": "^10.7.3", + "astro": "workspace:*" + } +} diff --git a/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/src/components/Test.js b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/src/components/Test.js new file mode 100644 index 000000000..831fb327c --- /dev/null +++ b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/src/components/Test.js @@ -0,0 +1,3 @@ +export default function () { + return 'Hello world' +} diff --git a/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/src/pages/doc.mdx b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/src/pages/doc.mdx new file mode 100644 index 000000000..8b8dc5e07 --- /dev/null +++ b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/src/pages/doc.mdx @@ -0,0 +1,6 @@ +import Test, { Missing } from '../components/Test'; + +# Hello page! + +<Test /> +<Missing /> diff --git a/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/src/pages/index.astro b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/src/pages/index.astro new file mode 100644 index 000000000..11f7af385 --- /dev/null +++ b/packages/integrations/mdx/test/fixtures/mdx-infinite-loop/src/pages/index.astro @@ -0,0 +1,5 @@ +--- +const files = await Astro.glob('./**/*.mdx') +--- + +{files.map((file: any) => <file.Content />)} diff --git a/packages/integrations/mdx/test/mdx-infinite-loop.test.js b/packages/integrations/mdx/test/mdx-infinite-loop.test.js new file mode 100644 index 000000000..c76c24270 --- /dev/null +++ b/packages/integrations/mdx/test/mdx-infinite-loop.test.js @@ -0,0 +1,30 @@ +import mdx from '@astrojs/mdx'; + +import { expect } from 'chai'; +import { loadFixture } from '../../../astro/test/test-utils.js'; + +describe('MDX Infinite Loop', () => { + let fixture; + + before(async () => { + fixture = await loadFixture({ + root: new URL('./fixtures/mdx-infinite-loop/', import.meta.url), + integrations: [mdx()], + }); + }); + + describe('build', () => { + let err; + before(async () => { + try { + await fixture.build(); + } catch (e) { + err = e; + } + }); + + it('does not hang forever if an error is thrown', async () => { + expect(!!err).to.be.true; + }); + }); +}); |