11import assert from 'node:assert/strict'
2- import fs from 'node:fs'
3- import path from 'node:path'
2+ import fs from 'node:fs/promises'
43import test from 'tape'
54import { slug } from 'github-slugger'
65import { toHast } from 'mdast-util-to-hast'
@@ -11,55 +10,60 @@ import {gfm} from 'micromark-extension-gfm'
1110import { gfmFromMarkdown , gfmToMarkdown } from '../index.js'
1211import { spec } from './spec.js'
1312
14- test ( 'markdown -> mdast' , ( t ) => {
13+ test ( 'markdown -> mdast' , async ( t ) => {
1514 const files = spec . filter (
1615 ( example ) => ! / d i s a l l o w e d r a w h t m l / i. test ( example . category )
1716 )
1817 let index = - 1
1918
2019 while ( ++ index < files . length ) {
2120 const example = files [ index ]
22- const category = slug ( example . category )
23- const name = index + '-' + category
24- const fixtureHtmlPath = path . join ( 'test' , name + '.html' )
25- const fixtureMarkdownPath = path . join ( 'test' , name + '.md' )
26-
21+ const name = index + '-' + slug ( example . category )
2722 const mdast = fromMarkdown ( example . input , {
2823 extensions : [ gfm ( ) ] ,
2924 mdastExtensions : [ gfmFromMarkdown ( ) ]
3025 } )
3126
3227 const hast = toHast ( mdast , { allowDangerousHtml : true } )
3328 assert ( hast , 'expected node' )
34-
35- const html = toHtml ( hast , {
29+ const actualHtml = toHtml ( hast , {
3630 allowDangerousHtml : true ,
3731 entities : { useNamedReferences : true } ,
3832 closeSelfClosing : true
3933 } )
4034
4135 /** @type {string } */
42- let fixtureHtml
36+ let expectedHtml
4337 /** @type {string } */
44- let fixtureMarkdown
38+ let expectedMarkdown
39+ const expectedUrl = new URL ( name + '.html' , import . meta. url )
40+ const inputUrl = new URL ( name + '.md' , import . meta. url )
4541
4642 try {
47- fixtureHtml = String ( fs . readFileSync ( fixtureHtmlPath ) )
43+ expectedHtml = String ( await fs . readFile ( expectedUrl ) )
4844 } catch {
49- fixtureHtml = example . output . slice ( 0 , - 1 )
45+ expectedHtml = example . output . slice ( 0 , - 1 )
5046 }
5147
52- const md = toMarkdown ( mdast , { extensions : [ gfmToMarkdown ( ) ] } )
48+ const actualMarkdown = toMarkdown ( mdast , { extensions : [ gfmToMarkdown ( ) ] } )
5349
5450 try {
55- fixtureMarkdown = String ( fs . readFileSync ( fixtureMarkdownPath ) )
51+ expectedMarkdown = String ( await fs . readFile ( inputUrl ) )
5652 } catch {
57- fixtureMarkdown = md
58- fs . writeFileSync ( fixtureMarkdownPath , fixtureMarkdown )
53+ expectedMarkdown = actualMarkdown
54+ await fs . writeFile ( inputUrl , expectedMarkdown )
5955 }
6056
61- t . deepEqual ( html , fixtureHtml , category + ' (' + index + ') -> html' )
62- t . equal ( md , fixtureMarkdown , category + ' (' + index + ') -> md' )
57+ t . deepEqual (
58+ actualHtml ,
59+ expectedHtml ,
60+ example . category + ' (' + index + ') -> html'
61+ )
62+ t . equal (
63+ actualMarkdown ,
64+ expectedMarkdown ,
65+ example . category + ' (' + index + ') -> md'
66+ )
6367 }
6468
6569 t . end ( )
0 commit comments