diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..c687d09 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,13 @@ +{ + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module", + "ecmaFeatures": { + "jsx": true + } + }, + "rules": { + "semi": 2, + "quotes": ["error", "single"] + } +} diff --git a/.npmignore b/.npmignore index 0b8b082..9b1dfbc 100644 --- a/.npmignore +++ b/.npmignore @@ -1,6 +1,7 @@ .appveyor.yml .coveralls.yml .editorconfig +.eslintrc .github .gitignore .npmignore diff --git a/bower.json b/bower.json index 415617e..dd83ec8 100644 --- a/bower.json +++ b/bower.json @@ -31,6 +31,7 @@ ".appveyor.yml", ".coveralls.yml", ".editorconfig", + ".eslintrc", ".github", ".gitignore", ".npmignore", diff --git a/component.json b/component.json index 6bd639e..6616f91 100644 --- a/component.json +++ b/component.json @@ -31,6 +31,7 @@ ".appveyor.yml", ".coveralls.yml", ".editorconfig", + ".eslintrc", ".github", ".gitignore", ".npmignore", diff --git a/composer.json b/composer.json index 5f716d2..e73dff1 100644 --- a/composer.json +++ b/composer.json @@ -31,6 +31,7 @@ ".appveyor.yml", ".coveralls.yml", ".editorconfig", + ".eslintrc", ".github", ".gitignore", ".npmignore", diff --git a/package.json b/package.json index 222c223..89116f8 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ ".appveyor.yml", ".coveralls.yml", ".editorconfig", + ".eslintrc", ".github", ".gitignore", ".npmignore", @@ -53,10 +54,15 @@ "autoprefixer": "^6.5.3", "backstopjs": "^2.3.3", "browser-sync": "^2.18.1", + "coveralls": "^2.11.15", + "intelli-espower-loader": "^1.0.1", + "istanbul": "^0.4.5", + "mocha": "^3.1.2", "node-sass": "^3.13.0", "npm-run-all": "^2.3.0", "onchange": "^2.5.0", "postcss-cli": "^2.6.0", + "power-assert": "^1.4.2", "sass-lint": "^1.10.2" }, "engines": { @@ -74,6 +80,7 @@ "serve": "browser-sync start --no-notify -s test --ss dist -f dist", "start": "run-p watch serve", "test": "run-s build", + "coverage": "istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- --require intelli-espower-loader test/unit/*.js", "reference": "backstop reference --configPath=backstop.conf.js", "compare": "backstop test --configPath=backstop.conf.js", "backstop": "run-s build && run-p serve compare" diff --git a/readme.md b/readme.md index ea699bf..c34c607 100644 --- a/readme.md +++ b/readme.md @@ -2,11 +2,13 @@ > A minimalist CSS framework. -[![Build Status](https://travis-ci.org/milligram/milligram.svg?branch=master)](https://travis-ci.org/milligram/milligram) -[![Dependencies Status](https://david-dm.org/milligram/milligram.svg)](https://travis-ci.org/milligram/milligram) -[![npm version](https://badge.fury.io/js/milligram.svg)](https://badge.fury.io/js/milligram) -[![Bower version](https://badge.fury.io/bo/milligram.svg)](https://badge.fury.io/bo/milligram) -[![Gitter chat](https://img.shields.io/badge/gitter-join_the_chat-4cc61e.svg)](https://gitter.im/milligram/milligram) +[![Travis Status](https://travis-ci.org/milligram/milligram.svg?branch=master)](https://travis-ci.org/milligram/milligram?branch=master) +[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/wabkk000uh6d97xk?svg=true)](https://ci.appveyor.com/project/cjpatoilo/milligram) +[![Version Status](https://badge.fury.io/js/milligram.svg)](https://www.npmjs.com/package/milligram) +[![Dependencies Status](https://david-dm.org/milligram/milligram.svg)](https://travis-ci.org/milligram/milligram?branch=master) +[![Codacy Status](https://img.shields.io/codacy/grade/848fb4bd6902434fab0bcfb5461284fe/master.svg)](https://www.codacy.com/app/cjpatoilo/milligram/dashboard) +[![Download Status](https://img.shields.io/npm/dt/milligram.svg)](https://www.npmjs.com/package/milligram) +[![Gitter Chat](https://img.shields.io/badge/gitter-join_the_chat-4cc61e.svg)](https://gitter.im/milligram/milligram) ## Why it's awesome? diff --git a/test/unit/package-spec.js b/test/unit/package-spec.js new file mode 100644 index 0000000..b98467d --- /dev/null +++ b/test/unit/package-spec.js @@ -0,0 +1,137 @@ +const fs = require('fs'); +const assert = require('power-assert'); +const npm = require('../../package.json'); +const bower = require('../../bower.json'); +const component = require('../../component.json'); +const composer = require('../../composer.json'); + +const packages = [ + npm, + bower, + component, + composer +]; + +describe('Package', () => { + + describe('Name', () => { + + it(`should be equal to ${npm.name}`, () => { + packages.map((referenceValue, referenceIndex) => { + packages.map((compareValue, compareIndex) => { + if (referenceIndex !== compareIndex) assert(referenceValue.name, compareValue.name); + }); + }); + }); + + }); + + describe('Version', () => { + + it(`should be equal to v${npm.version}`, () => { + packages.map((referenceValue, referenceIndex) => { + packages.map((compareValue, compareIndex) => { + if (referenceIndex !== compareIndex) assert(referenceValue.version, compareValue.version); + }); + }); + }); + + }); + + describe('Description', () => { + + it(`should be equal to ${npm.description}`, () => { + packages.map((referenceValue, referenceIndex) => { + packages.map((compareValue, compareIndex) => { + if (referenceIndex !== compareIndex) assert(referenceValue.description, compareValue.description); + }); + }); + }); + + }); + + describe('Homepage', () => { + + it(`should be equal to ${npm.homepage}`, () => { + packages.map((referenceValue, referenceIndex) => { + packages.map((compareValue, compareIndex) => { + if (referenceIndex !== compareIndex) assert(referenceValue.homepage, compareValue.homepage); + }); + }); + }); + + }); + + describe('Repository', () => { + + it(`should be equal to ${npm.repository}`, () => { + packages.map((referenceValue, referenceIndex) => { + packages.map((compareValue, compareIndex) => { + if (referenceIndex !== compareIndex) assert(referenceValue.repository, compareValue.repository); + }); + }); + }); + + }); + + describe('License', () => { + + it(`should be equal to ${npm.license}`, () => { + packages.map((referenceValue, referenceIndex) => { + packages.map((compareValue, compareIndex) => { + if (referenceIndex !== compareIndex) assert(referenceValue.license, compareValue.license); + }); + }); + }); + + }); + + describe('Author Name', () => { + + it(`should be equal to ${npm.author}`, () => { + packages.map((referenceValue, referenceIndex) => { + packages.map((compareValue, compareIndex) => { + if (referenceIndex !== compareIndex) assert(referenceValue.author, compareValue.author); + }); + }); + }); + + }); + + describe('Main File', () => { + + it(`should be equal to ${npm.main}`, () => { + packages.map((referenceValue, referenceIndex) => { + packages.map((compareValue, compareIndex) => { + if (referenceIndex !== compareIndex) assert(referenceValue.main, compareValue.main); + }); + }); + }); + + }); + + describe('Ignore', () => { + + it(`should be equal`, () => { + packages.map((referenceValue, referenceIndex) => { + packages.map((compareValue, compareIndex) => { + if (referenceIndex !== compareIndex) assert(referenceValue.ignore, compareValue.ignore); + }); + }); + }); + + }); + + describe('Keywords', () => { + + it(`should be equal`, () => { + packages.map((referenceValue, referenceIndex) => { + packages.map((compareValue, compareIndex) => { + if (referenceIndex !== compareIndex) assert(referenceValue.keywords, compareValue.keywords); + }); + }); + }); + + }); + +});