Skip to content

Commit aecf7e7

Browse files
committed
Tidy up.
* Using ava instead of tape. * Update to babel 6 for compiling. * Code coverage. * Update CI environment. * Using eslint instead of jshint. * Update editorconfig. * Code style tweaks.
1 parent 37750c7 commit aecf7e7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+697
-783
lines changed

.babelrc

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"presets": ["es2015-loose", "stage-0"],
3+
"plugins": ["add-module-exports"],
4+
"env": {
5+
"development": {
6+
"sourceMaps": "inline"
7+
}
8+
}
9+
}

.editorconfig

+10-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1-
# editorconfig.org
21
root = true
32

43
[*]
5-
indent_style = space
6-
indent_size = 4
7-
end_of_line = lf
84
charset = utf-8
9-
trim_trailing_whitespace = true
5+
end_of_line = lf
6+
indent_size = 4
7+
indent_style = space
108
insert_final_newline = true
9+
trim_trailing_whitespace = true
10+
11+
[*.{json,yml}]
12+
indent_size = 2
13+
14+
[*.md]
15+
trim_trailing_whitespace = false

.eslintrc

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
root: true
2+
3+
rules:
4+
brace-style: [2, '1tbs', {allowSingleLine: false}]
5+
camelcase: [2]
6+
comma-spacing: [2]
7+
curly: [2, 'all']
8+
dot-notation: [2]
9+
eqeqeq: [2]
10+
handle-callback-err: [2]
11+
new-cap: [2]
12+
new-parens: [2]
13+
no-alert: [2]
14+
no-caller: [2]
15+
no-empty: [2]
16+
no-empty-character-class: [2]
17+
no-eval: [2]
18+
no-irregular-whitespace: [2]
19+
no-labels: [2]
20+
no-lonely-if: [2]
21+
no-multiple-empty-lines: [2]
22+
no-new: [2]
23+
no-octal: [2]
24+
no-proto: [2]
25+
no-redeclare: [2]
26+
no-shadow: [2]
27+
no-shadow-restricted-names: [2]
28+
no-sparse-arrays: [2]
29+
no-undef: [2]
30+
no-unused-vars: [2]
31+
no-useless-call: [2]
32+
no-void: [2]
33+
no-warning-comments: [2]
34+
no-with: [2]
35+
object-curly-spacing: [2, 'never']
36+
quote-props: [2, 'as-needed']
37+
radix: [2]
38+
semi: [2, 'always']
39+
semi-spacing: [2]
40+
space-after-keywords: [2, 'always']
41+
space-before-function-paren: [2, 'always']
42+
space-before-blocks: [2, 'always']
43+
space-return-throw-case: [2]
44+
spaced-comment: [2, 'always']
45+
strict: [2, 'global']
46+
yoda: [2, 'never']
47+
48+
ecmaFeatures:
49+
arrowFunctions: true
50+
binaryLiterals: true
51+
blockBindings: true
52+
classes: true
53+
defaultParams: true
54+
destructuring: true
55+
experimentalObjectRestSpread: true
56+
forOf: true
57+
generators: true
58+
modules: true
59+
objectLiteralComputedProperties: true
60+
objectLiteralDuplicateProperties: true
61+
objectLiteralShorthandMethods: true
62+
objectLiteralShorthandProperties: true
63+
octalLiterals: true
64+
regexUFlag: true
65+
regexYFlag: true
66+
restParams: true
67+
spread: true
68+
superInFunctions: true
69+
templateStrings: true
70+
71+
env:
72+
node: true

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1+
.nyc_output
2+
coverage
13
node_modules
24
dist

.jshintrc

-15
This file was deleted.

.travis.yml

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1+
sudo: false
2+
13
language: node_js
24
node_js:
3-
- 'iojs'
5+
- '5'
6+
- '4'
47
- '0.12'
8+
9+
after_success:
10+
- './node_modules/.bin/nyc report --reporter=text-lcov | ./node_modules/.bin/coveralls'

package.json

+24-8
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@
22
"name": "postcss-selector-parser",
33
"version": "1.3.0",
44
"devDependencies": {
5-
"babel": "^5.4.3",
6-
"babel-tape-runner": "^1.1.0",
7-
"faucet": "0.0.1",
8-
"tape": "^4.0.0"
5+
"ava": "^0.11.0",
6+
"babel-cli": "^6.4.0",
7+
"babel-core": "^6.4.0",
8+
"babel-plugin-add-module-exports": "^0.1.2",
9+
"babel-preset-es2015": "^6.3.13",
10+
"babel-preset-es2015-loose": "^7.0.0",
11+
"babel-preset-stage-0": "^6.3.13",
12+
"coveralls": "^2.11.6",
13+
"del-cli": "^0.1.2",
14+
"eslint": "^1.10.3",
15+
"nyc": "^5.3.0"
916
},
1017
"main": "dist/index.js",
1118
"files": [
@@ -15,9 +22,10 @@
1522
"dist"
1623
],
1724
"scripts": {
18-
"prepublish": "babel src --out-dir dist --ignore /__tests__/",
19-
"test-unformatted": "babel-tape-runner \"src/**/__tests__/*.js\"",
20-
"test": "npm run test-unformatted | faucet"
25+
"pretest": "eslint src",
26+
"prepublish": "de dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
27+
"report": "nyc report --reporter=html",
28+
"test": "nyc ava src/__tests__/*.js"
2129
},
2230
"dependencies": {
2331
"flatten": "0.0.1",
@@ -31,5 +39,13 @@
3139
"email": "[email protected]",
3240
"url": "http://beneb.info"
3341
},
34-
"repository": "postcss/postcss-selector-parser"
42+
"repository": "postcss/postcss-selector-parser",
43+
"ava": {
44+
"require": "babel-core/register"
45+
},
46+
"nyc": {
47+
"exclude": [
48+
"**/__tests__"
49+
]
50+
}
3551
}

src/__tests__/attributes.js

+54-64
Original file line numberDiff line numberDiff line change
@@ -1,105 +1,95 @@
1-
'use strict';
2-
31
import {test} from './util/helpers';
42

53
test('attribute selector', '[href]', (t, tree) => {
6-
t.plan(2);
7-
t.equal(tree.nodes[0].nodes[0].attribute, 'href');
8-
t.equal(tree.nodes[0].nodes[0].type, 'attribute');
4+
t.same(tree.nodes[0].nodes[0].attribute, 'href');
5+
t.same(tree.nodes[0].nodes[0].type, 'attribute');
96
});
107

118
test('multiple attribute selectors', '[href][class][name]', (t, tree) => {
12-
t.plan(3);
13-
t.equal(tree.nodes[0].nodes[0].attribute, 'href');
14-
t.equal(tree.nodes[0].nodes[1].attribute, 'class');
15-
t.equal(tree.nodes[0].nodes[2].attribute, 'name');
9+
t.same(tree.nodes[0].nodes[0].attribute, 'href');
10+
t.same(tree.nodes[0].nodes[1].attribute, 'class');
11+
t.same(tree.nodes[0].nodes[2].attribute, 'name');
1612
});
1713

1814
test('attribute selector with a value', '[name=james]', (t, tree) => {
19-
t.plan(3);
20-
t.equal(tree.nodes[0].nodes[0].attribute, 'name');
21-
t.equal(tree.nodes[0].nodes[0].operator, '=');
22-
t.equal(tree.nodes[0].nodes[0].value, 'james');
15+
t.same(tree.nodes[0].nodes[0].attribute, 'name');
16+
t.same(tree.nodes[0].nodes[0].operator, '=');
17+
t.same(tree.nodes[0].nodes[0].value, 'james');
2318
});
2419

2520
test('attribute selector with quoted value', '[name="james"]', (t, tree) => {
26-
t.plan(3);
27-
t.equal(tree.nodes[0].nodes[0].attribute, 'name');
28-
t.equal(tree.nodes[0].nodes[0].operator, '=');
29-
t.equal(tree.nodes[0].nodes[0].value, '"james"');
21+
t.same(tree.nodes[0].nodes[0].attribute, 'name');
22+
t.same(tree.nodes[0].nodes[0].operator, '=');
23+
t.same(tree.nodes[0].nodes[0].value, '"james"');
3024
});
3125

3226
test('multiple attribute selectors + combinator', '[href][class][name] h1 > h2', (t, tree) => {
33-
t.plan(4);
34-
t.equal(tree.nodes[0].nodes[2].attribute, 'name');
35-
t.equal(tree.nodes[0].nodes[3].value, ' ');
36-
t.equal(tree.nodes[0].nodes[5].value, '>');
37-
t.equal(tree.nodes[0].nodes[6].value, 'h2');
27+
t.same(tree.nodes[0].nodes[2].attribute, 'name');
28+
t.same(tree.nodes[0].nodes[3].value, ' ');
29+
t.same(tree.nodes[0].nodes[5].value, '>');
30+
t.same(tree.nodes[0].nodes[6].value, 'h2');
3831
});
3932

4033
test('attribute, class, combinator', '[href] > h2.test', (t, tree) => {
41-
t.plan(4);
42-
t.equal(tree.nodes[0].nodes[0].attribute, 'href');
43-
t.equal(tree.nodes[0].nodes[1].value, '>');
44-
t.equal(tree.nodes[0].nodes[2].value, 'h2');
45-
t.equal(tree.nodes[0].nodes[3].value, 'test');
34+
t.same(tree.nodes[0].nodes[0].attribute, 'href');
35+
t.same(tree.nodes[0].nodes[1].value, '>');
36+
t.same(tree.nodes[0].nodes[2].value, 'h2');
37+
t.same(tree.nodes[0].nodes[3].value, 'test');
4638
});
4739

4840
test('attribute selector with quoted value & combinator', '[name="james"] > h1', (t, tree) => {
49-
t.plan(3);
50-
t.equal(tree.nodes[0].nodes[0].value, '"james"');
51-
t.equal(tree.nodes[0].nodes[1].value, '>');
52-
t.equal(tree.nodes[0].nodes[2].value, 'h1');
41+
t.same(tree.nodes[0].nodes[0].value, '"james"');
42+
t.same(tree.nodes[0].nodes[1].value, '>');
43+
t.same(tree.nodes[0].nodes[2].value, 'h1');
5344
});
5445

5546
test('multiple quoted attribute selectors', '[href*="test.com"][rel="external"][id][class~="test"] > [name]', (t, tree) => {
56-
t.plan(11);
57-
t.equal(tree.nodes[0].nodes[0].attribute, 'href');
58-
t.equal(tree.nodes[0].nodes[0].value, '"test.com"');
59-
t.equal(tree.nodes[0].nodes[1].attribute, 'rel');
60-
t.equal(tree.nodes[0].nodes[1].value, '"external"');
61-
t.equal(tree.nodes[0].nodes[2].attribute, 'id');
47+
t.same(tree.nodes[0].nodes[0].attribute, 'href');
48+
t.same(tree.nodes[0].nodes[0].value, '"test.com"');
49+
t.same(tree.nodes[0].nodes[1].attribute, 'rel');
50+
t.same(tree.nodes[0].nodes[1].value, '"external"');
51+
t.same(tree.nodes[0].nodes[2].attribute, 'id');
6252
t.notOk(tree.nodes[0].nodes[2].value, 'should not have a value');
63-
t.equal(tree.nodes[0].nodes[3].attribute, 'class');
64-
t.equal(tree.nodes[0].nodes[3].value, '"test"');
65-
t.equal(tree.nodes[0].nodes[4].value, '>');
66-
t.equal(tree.nodes[0].nodes[5].attribute, 'name');
53+
t.same(tree.nodes[0].nodes[3].attribute, 'class');
54+
t.same(tree.nodes[0].nodes[3].value, '"test"');
55+
t.same(tree.nodes[0].nodes[4].value, '>');
56+
t.same(tree.nodes[0].nodes[5].attribute, 'name');
6757
t.notOk(tree.nodes[0].nodes[5].value, 'should not have a value');
6858
});
6959

70-
test('more attribute operators','[href*=test],[href^=test],[href$=test],[href|=test]', (t, tree) => {
71-
t.plan(4);
72-
t.equal(tree.nodes[0].nodes[0].operator, '*=');
73-
t.equal(tree.nodes[1].nodes[0].operator, '^=');
74-
t.equal(tree.nodes[2].nodes[0].operator, '$=');
75-
t.equal(tree.nodes[3].nodes[0].operator, '|=');
60+
test('more attribute operators', '[href*=test],[href^=test],[href$=test],[href|=test]', (t, tree) => {
61+
t.same(tree.nodes[0].nodes[0].operator, '*=');
62+
t.same(tree.nodes[1].nodes[0].operator, '^=');
63+
t.same(tree.nodes[2].nodes[0].operator, '$=');
64+
t.same(tree.nodes[3].nodes[0].operator, '|=');
7665
});
7766

7867
test('spaces in attribute selectors', 'h1[ href *= "test" ]', (t, tree) => {
79-
t.plan(3);
80-
t.equal(tree.nodes[0].nodes[1].attribute, ' href ');
81-
t.equal(tree.nodes[0].nodes[1].operator, '*=');
82-
t.equal(tree.nodes[0].nodes[1].value, ' "test" ');
68+
t.same(tree.nodes[0].nodes[1].attribute, ' href ');
69+
t.same(tree.nodes[0].nodes[1].operator, '*=');
70+
t.same(tree.nodes[0].nodes[1].value, ' "test" ');
8371
});
8472

8573
test('insensitive attribute selector 1', '[href="test" i]', (t, tree) => {
86-
t.plan(2);
87-
t.equal(tree.nodes[0].nodes[0].value, '"test"');
88-
t.equal(tree.nodes[0].nodes[0].insensitive, true);
74+
t.same(tree.nodes[0].nodes[0].value, '"test"');
75+
t.same(tree.nodes[0].nodes[0].insensitive, true);
8976
});
9077

9178
test('insensitive attribute selector 2', '[href=TEsT i ]', (t, tree) => {
92-
t.plan(2);
93-
t.equal(tree.nodes[0].nodes[0].value, 'TEsT');
94-
t.equal(tree.nodes[0].nodes[0].raw.insensitive, ' i ');
79+
t.same(tree.nodes[0].nodes[0].value, 'TEsT');
80+
t.same(tree.nodes[0].nodes[0].raw.insensitive, ' i ');
81+
});
82+
83+
test('insensitive attribute selector 3', '[href=test i]', (t, tree) => {
84+
t.same(tree.nodes[0].nodes[0].value, 'test');
85+
t.same(tree.nodes[0].nodes[0].insensitive, true);
9586
});
9687

9788
test('extraneous non-combinating whitespace', ' [href] , [class] ', (t, tree) => {
98-
t.plan(6);
99-
t.equal(tree.nodes[0].nodes[0].attribute, 'href');
100-
t.equal(tree.nodes[0].nodes[0].spaces.before, ' ');
101-
t.equal(tree.nodes[0].nodes[0].spaces.after, ' ');
102-
t.equal(tree.nodes[1].nodes[0].attribute, 'class');
103-
t.equal(tree.nodes[1].nodes[0].spaces.before, ' ');
104-
t.equal(tree.nodes[1].nodes[0].spaces.after, ' ');
89+
t.same(tree.nodes[0].nodes[0].attribute, 'href');
90+
t.same(tree.nodes[0].nodes[0].spaces.before, ' ');
91+
t.same(tree.nodes[0].nodes[0].spaces.after, ' ');
92+
t.same(tree.nodes[1].nodes[0].attribute, 'class');
93+
t.same(tree.nodes[1].nodes[0].spaces.before, ' ');
94+
t.same(tree.nodes[1].nodes[0].spaces.after, ' ');
10595
});

0 commit comments

Comments
 (0)