| import fs from 'fs'; | 
| import postcss from 'postcss'; | 
| import test from 'ava'; | 
| import {diffLines} from 'diff'; | 
| import chalk from 'chalk'; | 
| import plugin from '../'; | 
|   | 
| function getDiff (left, right) { | 
|     let msg = ['\n']; | 
|     diffLines(left, right).forEach(item => { | 
|         if (item.added || item.removed) { | 
|             let text = item.value | 
|                 .replace('\n', '\u00b6\n') | 
|                 .replace('\ufeff', '[[BOM]]'); | 
|             msg.push(chalk[item.added ? 'green' : 'red'](text)); | 
|         } else { | 
|             let value = item.value.replace('\ufeff', '[[BOM]]'); | 
|             let lines = value.split('\n'); | 
|   | 
|             // max line count for each item | 
|             let keepLines = 6; | 
|             // lines to be omitted | 
|             let omitLines = lines.length - keepLines; | 
|             if (lines.length > keepLines) { | 
|                 lines.splice( | 
|                     Math.floor(keepLines / 2), | 
|                     omitLines, | 
|                     chalk.gray('(...' + omitLines + ' lines omitted...)') | 
|                 ); | 
|             } | 
|             msg.concat(lines); | 
|         } | 
|     }); | 
|     msg.push('\n'); | 
|     return msg.map(line => '  ' + line).join(''); | 
| } | 
|   | 
| function read (file) { | 
|     return fs.readFileSync(__dirname + `/fixtures/${file}.css`, {encoding: 'utf-8'}); | 
| } | 
|   | 
| function exec (t, input) { | 
|     let output = read(`${input}.post`); | 
|     return postcss([ plugin() ]).process(read(input)) | 
|         .then( result => { | 
|             if (result.css !== output) { | 
|                 t.fail(getDiff(result.css, output)); | 
|             } | 
|             t.deepEqual(result.warnings().length, 0); | 
|         }); | 
| } | 
|   | 
| test( | 
|     'Overridden @keyframes should be discarded correctly.', | 
|     exec, | 
|     'keyframes' | 
| ); | 
|   | 
| test( | 
|     'Overridden @counter-style should be discarded correctly.', | 
|     exec, | 
|     'counter-style' | 
| ); |