You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import assert from 'assert';
|
|
|
|
import * as fs from 'fs';
|
|
|
|
import { svelte } from '../helpers.js';
|
|
|
|
|
|
|
|
function tryRequire ( file ) {
|
|
|
|
try {
|
|
|
|
return require( file ).default;
|
|
|
|
} catch ( err ) {
|
|
|
|
if ( err.code !== 'MODULE_NOT_FOUND' ) throw err;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
describe( 'css', () => {
|
|
|
|
fs.readdirSync( 'test/css/samples' ).forEach( dir => {
|
|
|
|
if ( dir[0] === '.' ) return;
|
|
|
|
|
|
|
|
// add .solo to a sample directory name to only run that test
|
|
|
|
const solo = /\.solo/.test( dir );
|
|
|
|
|
|
|
|
if ( solo && process.env.CI ) {
|
|
|
|
throw new Error( 'Forgot to remove `solo: true` from test' );
|
|
|
|
}
|
|
|
|
|
|
|
|
( solo ? it.only : it )( dir, () => {
|
|
|
|
const config = tryRequire( `./samples/${dir}/_config.js` ) || {};
|
|
|
|
const input = fs.readFileSync( `test/css/samples/${dir}/input.html`, 'utf-8' ).replace( /\s+$/, '' );
|
|
|
|
|
|
|
|
const actual = svelte.compile( input, config ).css;
|
|
|
|
fs.writeFileSync( `test/css/samples/${dir}/_actual.css`, actual );
|
|
|
|
const expected = fs.readFileSync( `test/css/samples/${dir}/expected.css`, 'utf-8' );
|
|
|
|
|
|
|
|
assert.equal( actual.trim(), expected.trim() );
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|