+++ /dev/null
-'use strict';
-
-const fs = require('fs');
-const test = require('ava');
-const tempWrite = require('temp-write');
-const stylelint = require('stylelint');
-const resolveFrom = require('resolve-from');
-const { format, resolveConfig, getPrettierConfig } = require('./index');
-
-const linterAPI = stylelint.createLinter({ fix: true });
-
-test('resolveConfig', t =>
- resolveConfig({ filePath: './fixtures/style.css' }).then(config =>
- t.deepEqual(config[1], {
- rules: {
- 'string-quotes': ['single'],
- 'indentation': [4, { except: ['value'] }],
- 'color-hex-case': ['upper'],
- 'color-hex-length': ['short'],
- 'block-no-empty': null,
- 'color-no-invalid-hex': [true],
- 'comment-empty-line-before': [
- 'always',
- { ignore: ['stylelint-commands', 'after-comment'] }
- ],
- 'declaration-colon-space-after': ['always'],
- 'max-empty-lines': [2],
- 'rule-empty-line-before': [
- 'always',
- {
- except: ['first-nested'],
- ignore: ['after-comment']
- }
- ],
- 'unit-whitelist': [['em', 'rem', '%', 's']]
- }
- })
- ));
-
-test('resolveConfig not found fallback process.cwd', (t) => {
- const tempPath = tempWrite.sync(
- 'a[id="foo"] { content: "x"; }',
- 'test.css'
- );
-
- return resolveConfig({ filePath: tempPath }).then((config) => {
- t.is(config[1].rules['function-comma-newline-after'], null);
-
- return config;
- });
-});
-
-test('resolveConfig shortcircuit ', t =>
- resolveConfig({ stylelintConfig: { rules: { 'max-line-length': [20] } } }).then((config) => {
- t.is(config[0].printWidth, 20);
-
- return config;
- }));
-
-test('resolve string quotes === double ', (t) => {
- const config = resolveConfig.resolve({ rules: { 'string-quotes': ['double'] } });
-
- t.is(config[0].singleQuote, undefined);
-});
-
-test('resolve indentation === tab', (t) => {
- const config = resolveConfig.resolve({ rules: { indentation: ['tab'] } });
-
- t.plan(2);
- t.is(config[0].useTabs, true);
- t.is(config[0].tabWidth, 2);
-});
-
-test('resolveConfig prettier merge', t =>
- resolveConfig({
- filePath: './fixtures/style.css',
- prettierOptions: getPrettierConfig('./fixtures/style.css')
- }).then((config) => {
- t.is(config[0].semi, false);
-
- return config;
- }));
-
-test('format', (t) => {
- const source = fs.readFileSync('./fixtures/style.css', 'utf8');
-
- return format({
- text: source,
- filePath: './fixtures/style.css'
- }).then((source) => {
- t.is(
- source,
- `@media print {
- a {
- color: #FFF;
- background-position: top left, top right;
- }
-}
-
-a[id='foo'] {
- content: 'x';
-}
-`
- );
-
- return source;
- });
-});
-
-test('format without code but with filePath', t =>
- format({ filePath: './fixtures/style.css' }).then((source) => {
- t.is(
- source,
- `@media print {
- a {
- color: #FFF;
- background-position: top left, top right;
- }
-}
-
-a[id='foo'] {
- content: 'x';
-}
-`
- );
-
- return source;
- }));
-
-test('format less', (t) => {
- const source = fs.readFileSync('./fixtures/less.less', 'utf8');
-
- return format({
- text: source,
- filePath: './fixtures/less.less'
- }).then((source) => {
- t.is(
- source,
- `@base: #F938AB;
-
-.box-shadow(@style, @c) when (iscolor(@c)) {
- -webkit-box-shadow: @style @c;
- box-shadow: @style @c;
-}
-.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
- .box-shadow(@style, rgba(0, 0, 0, @alpha));
-}
-
-.box {
- color: saturate(@base, 5%);
- border-color: lighten(@base, 30%);
-
- div {
- .box-shadow(0 0 5px, 30%);
- }
-}
-`
- );
-
- return source;
- });
-});
-
-test('format with syntax error from prettier', (t) => {
- const source = fs.readFileSync('./tests/error-syntax.css', 'utf8');
-
- return format({
- text: source,
- filePath: './tests/error-syntax.css'
- }).catch((err) => {
- t.is(err.name, 'SyntaxError');
- });
-});
-
-test('alternate stylelint format', (t) => {
- const source = fs.readFileSync('./fixtures/style.css', 'utf8');
-
- return linterAPI
- ._lintSource({
- code: source
- // codeFilename: process.cwd()
- // codeFilename: path.resolve(process.cwd(), './tests/less.less')
- // filePath: path.resolve(process.cwd(), './fixtures/style.css')
- })
- .then((result) => {
- const fixed = result.root.toString(result.opts.syntax);
-
- t.is(
- result.root.toString(result.opts.syntax),
- `@media print {
- a {
- color: #FFF;
- background-position: top left,
- top right;
- }
-}
-
-
-
-
-a[id="foo"] { content: "x"; }
-`
- );
-
- return fixed;
- });
-});
-
-test('resolve relative package', (t) => {
- const path = resolveFrom('./fixtures/find-package/style.css', 'prettier');
-
- t.is('1.6.0', require(path).version);
-});
-
-test('resolve relative package deep', (t) => {
- const path = resolveFrom(
- './fixtures/find-package/deep/style.css',
- 'prettier'
- );
-
- t.is('1.6.0', require(path).version);
-});
-
-test('resolve relative package fallback', (t) => {
- const path = resolveFrom('./fixtures/style.css', 'prettier');
-
- t.is('1.7.0', require(path).version);
-});
-
-test('resolve relative package null', (t) => {
- const path = resolveFrom(__filename, 'prettier');
-
- t.is('1.7.0', require(path).version);
-});