import * as fs from 'fs' ; import * as assert from 'assert' ; import { loadConfig , svelte } from '../helpers' ; describe ( 'preprocess' , ( ) => { fs . readdirSync ( `${ __dirname }/samples` ) . forEach ( dir => { if ( dir [ 0 ] === '.' ) return ; const config = loadConfig ( `${ __dirname }/samples/${ dir }/_config.js` ) ; const solo = config . solo || /\.solo/ . test ( dir ) ; const skip = config . skip || /\.skip/ . test ( dir ) ; if ( solo && process . env . CI ) { throw new Error ( 'Forgot to remove `solo: true` from test' ) ; } ( skip ? it . skip : solo ? it . only : it ) ( dir , async ( ) => { const input = fs . readFileSync ( `${ __dirname }/samples/${ dir }/input.svelte` , 'utf-8' ) ; const expected = fs . readFileSync ( `${ __dirname }/samples/${ dir }/output.svelte` , 'utf-8' ) ; const result = await svelte . preprocess ( input , config . preprocess || { } , config . options || { filename : 'input.svelte' } ) ; fs . writeFileSync ( `${ __dirname }/samples/${ dir }/_actual.html` , result . code ) ; if ( result . map ) { fs . writeFileSync ( `${ __dirname }/samples/${ dir }/_actual.html.map` , JSON . stringify ( result . map , null , 2 ) ) ; } assert . equal ( result . code , expected ) ; assert . deepEqual ( result . dependencies , config . dependencies || [ ] ) ; } ) ; } ) ; } ) ;