stylus-source 0.28.2 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. data/VERSION +1 -1
  2. data/vendor/Readme.md +1 -1
  3. data/vendor/lib/functions/index.js +75 -1
  4. data/vendor/lib/functions/url.js +11 -12
  5. data/vendor/lib/lexer.js +2 -1
  6. data/vendor/lib/stylus.js +1 -1
  7. data/vendor/lib/visitor/compiler.js +1 -1
  8. data/vendor/lib/visitor/evaluator.js +2 -0
  9. data/vendor/node_modules/cssom/package.json +0 -3
  10. data/vendor/node_modules/mocha/History.md +21 -0
  11. data/vendor/node_modules/mocha/Makefile +2 -2
  12. data/vendor/node_modules/mocha/_mocha.js +141 -48
  13. data/vendor/node_modules/mocha/bin/_mocha +53 -61
  14. data/vendor/node_modules/mocha/bin/mocha +3 -0
  15. data/vendor/node_modules/mocha/lib/interfaces/bdd.js +23 -6
  16. data/vendor/node_modules/mocha/lib/mocha.js +55 -4
  17. data/vendor/node_modules/mocha/lib/reporters/base.js +5 -5
  18. data/vendor/node_modules/mocha/lib/reporters/dot.js +5 -4
  19. data/vendor/node_modules/mocha/lib/reporters/html.js +25 -12
  20. data/vendor/node_modules/mocha/lib/reporters/landing.js +2 -2
  21. data/vendor/node_modules/mocha/lib/reporters/min.js +2 -2
  22. data/vendor/node_modules/mocha/lib/reporters/nyan.js +6 -6
  23. data/vendor/node_modules/mocha/lib/reporters/progress.js +1 -1
  24. data/vendor/node_modules/mocha/lib/reporters/xunit.js +5 -1
  25. data/vendor/node_modules/mocha/lib/runnable.js +1 -1
  26. data/vendor/node_modules/mocha/lib/runner.js +3 -3
  27. data/vendor/node_modules/mocha/lib/suite.js +7 -1
  28. data/vendor/node_modules/mocha/lib/utils.js +1 -1
  29. data/vendor/node_modules/mocha/mocha.css +18 -1
  30. data/vendor/node_modules/mocha/mocha.js +141 -48
  31. data/vendor/node_modules/mocha/package.json +6 -3
  32. data/vendor/node_modules/mocha/test.js +3 -5
  33. data/vendor/node_modules/should/History.md +11 -0
  34. data/vendor/node_modules/should/Readme.md +22 -10
  35. data/vendor/node_modules/should/lib/should.js +70 -62
  36. data/vendor/node_modules/should/package.json +5 -2
  37. data/vendor/node_modules/should/test/should.test.js +64 -0
  38. data/vendor/package.json +1 -1
  39. data/vendor/testing/foo.css +3 -0
  40. data/vendor/testing/index.js +1 -0
  41. data/vendor/testing/small.styl +12 -10
  42. metadata +3 -16
  43. data/vendor/node_modules/mocha/editors/JavaScript mocha.tmbundle/Snippets/bdd - after each.tmSnippet +0 -16
  44. data/vendor/node_modules/mocha/editors/JavaScript mocha.tmbundle/Snippets/bdd - after.tmSnippet +0 -16
  45. data/vendor/node_modules/mocha/editors/JavaScript mocha.tmbundle/Snippets/bdd - before each.tmSnippet +0 -16
  46. data/vendor/node_modules/mocha/editors/JavaScript mocha.tmbundle/Snippets/bdd - before.tmSnippet +0 -16
  47. data/vendor/node_modules/mocha/editors/JavaScript mocha.tmbundle/Snippets/bdd - it.tmSnippet +0 -16
  48. data/vendor/node_modules/mocha/editors/JavaScript mocha.tmbundle/Snippets/untitled.tmSnippet +0 -16
  49. data/vendor/node_modules/mocha/editors/JavaScript mocha.tmbundle/info.plist +0 -19
  50. data/vendor/node_modules/mocha/support/compile.js +0 -154
  51. data/vendor/node_modules/mocha/support/foot.js +0 -1
  52. data/vendor/node_modules/mocha/support/head.js +0 -2
  53. data/vendor/node_modules/mocha/support/tail.js +0 -150
  54. data/vendor/node_modules/mocha/support/template.html +0 -16
@@ -28,11 +28,6 @@ module.exports = function(suite){
28
28
 
29
29
  suite.on('pre-require', function(context){
30
30
 
31
- // noop variants
32
-
33
- context.xdescribe = function(){};
34
- context.xit = function(){};
35
-
36
31
  /**
37
32
  * Execute before running tests.
38
33
  */
@@ -65,6 +60,18 @@ module.exports = function(suite){
65
60
  suites[0].afterEach(fn);
66
61
  };
67
62
 
63
+ /**
64
+ * Pending describe.
65
+ */
66
+
67
+ context.xdescribe = context.xcontext = function(title, fn){
68
+ var suite = Suite.create(suites[0], title);
69
+ suite.pending = true;
70
+ suites.unshift(suite);
71
+ fn();
72
+ suites.shift();
73
+ };
74
+
68
75
  /**
69
76
  * Describe a "suite" with the given `title`
70
77
  * and callback `fn` containing nested suites
@@ -85,7 +92,17 @@ module.exports = function(suite){
85
92
  */
86
93
 
87
94
  context.it = context.specify = function(title, fn){
88
- suites[0].addTest(new Test(title, fn));
95
+ var suite = suites[0];
96
+ if (suite.pending) var fn = null;
97
+ suite.addTest(new Test(title, fn));
98
+ };
99
+
100
+ /**
101
+ * Pending test case.
102
+ */
103
+
104
+ context.xit = context.xspecify = function(title){
105
+ context.it(title);
89
106
  };
90
107
  });
91
108
  };
@@ -116,13 +116,15 @@ Mocha.prototype.ui = function(name){
116
116
  * @api private
117
117
  */
118
118
 
119
- Mocha.prototype.loadFiles = function(){
119
+ Mocha.prototype.loadFiles = function(fn){
120
120
  var suite = this.suite;
121
+ var pending = this.files.length;
121
122
  this.files.forEach(function(file){
122
123
  file = path.resolve(file);
123
124
  suite.emit('pre-require', global, file);
124
125
  suite.emit('require', require(file), file);
125
126
  suite.emit('post-require', global, file);
127
+ --pending || (fn && fn());
126
128
  });
127
129
  };
128
130
 
@@ -132,7 +134,7 @@ Mocha.prototype.loadFiles = function(){
132
134
  * @api private
133
135
  */
134
136
 
135
- Mocha.prototype.growl = function(runner, reporter) {
137
+ Mocha.prototype._growl = function(runner, reporter) {
136
138
  var notify = require('growl');
137
139
 
138
140
  runner.on('end', function(){
@@ -165,6 +167,55 @@ Mocha.prototype.grep = function(re){
165
167
  return this;
166
168
  };
167
169
 
170
+ /**
171
+ * Invert `.grep()` matches.
172
+ *
173
+ * @return {Mocha}
174
+ * @api public
175
+ */
176
+
177
+ Mocha.prototype.invert = function(){
178
+ this.options.invert = true;
179
+ return this;
180
+ };
181
+
182
+ /**
183
+ * Ignore global leaks.
184
+ *
185
+ * @return {Mocha}
186
+ * @api public
187
+ */
188
+
189
+ Mocha.prototype.ignoreLeaks = function(){
190
+ this.options.ignoreLeaks = true;
191
+ return this;
192
+ };
193
+
194
+ /**
195
+ * Enable growl support.
196
+ *
197
+ * @return {Mocha}
198
+ * @api public
199
+ */
200
+
201
+ Mocha.prototype.growl = function(){
202
+ this.options.growl = true;
203
+ return this;
204
+ };
205
+
206
+ /**
207
+ * Ignore `globals`.
208
+ *
209
+ * @param {Array} globals
210
+ * @return {Mocha}
211
+ * @api public
212
+ */
213
+
214
+ Mocha.prototype.globals = function(globals){
215
+ this.options.globals = globals;
216
+ return this;
217
+ };
218
+
168
219
  /**
169
220
  * Run tests and invoke `fn()` when complete.
170
221
  *
@@ -180,8 +231,8 @@ Mocha.prototype.run = function(fn){
180
231
  var runner = new exports.Runner(suite);
181
232
  var reporter = new this._reporter(runner);
182
233
  runner.ignoreLeaks = options.ignoreLeaks;
183
- if (options.grep) runner.grep(options.grep);
234
+ if (options.grep) runner.grep(options.grep, options.invert);
184
235
  if (options.globals) runner.globals(options.globals);
185
- if (options.growl) this.growl(runner, reporter);
236
+ if (options.growl) this._growl(runner, reporter);
186
237
  return runner.run(fn);
187
238
  };
@@ -74,7 +74,7 @@ exports.colors = {
74
74
 
75
75
  var color = exports.color = function(type, str) {
76
76
  if (!exports.useColors) return str;
77
- return '\033[' + exports.colors[type] + 'm' + str + '\033[0m';
77
+ return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m';
78
78
  };
79
79
 
80
80
  /**
@@ -97,19 +97,19 @@ exports.window = {
97
97
 
98
98
  exports.cursor = {
99
99
  hide: function(){
100
- process.stdout.write('\033[?25l');
100
+ process.stdout.write('\u001b[?25l');
101
101
  },
102
102
 
103
103
  show: function(){
104
- process.stdout.write('\033[?25h');
104
+ process.stdout.write('\u001b[?25h');
105
105
  },
106
106
 
107
107
  deleteLine: function(){
108
- process.stdout.write('\033[2K');
108
+ process.stdout.write('\u001b[2K');
109
109
  },
110
110
 
111
111
  beginningOfLine: function(){
112
- process.stdout.write('\033[0G');
112
+ process.stdout.write('\u001b[0G');
113
113
  },
114
114
 
115
115
  CR: function(){
@@ -25,6 +25,7 @@ function Dot(runner) {
25
25
  var self = this
26
26
  , stats = this.stats
27
27
  , width = Base.window.width * .75 | 0
28
+ , c = '․'
28
29
  , n = 0;
29
30
 
30
31
  runner.on('start', function(){
@@ -32,21 +33,21 @@ function Dot(runner) {
32
33
  });
33
34
 
34
35
  runner.on('pending', function(test){
35
- process.stdout.write(color('pending', '.'));
36
+ process.stdout.write(color('pending', c));
36
37
  });
37
38
 
38
39
  runner.on('pass', function(test){
39
40
  if (++n % width == 0) process.stdout.write('\n ');
40
41
  if ('slow' == test.speed) {
41
- process.stdout.write(color('bright yellow', '.'));
42
+ process.stdout.write(color('bright yellow', c));
42
43
  } else {
43
- process.stdout.write(color(test.speed, '.'));
44
+ process.stdout.write(color(test.speed, c));
44
45
  }
45
46
  });
46
47
 
47
48
  runner.on('fail', function(test, err){
48
49
  if (++n % width == 0) process.stdout.write('\n ');
49
- process.stdout.write(color('fail', '.'));
50
+ process.stdout.write(color('fail', c));
50
51
  });
51
52
 
52
53
  runner.on('end', function(){
@@ -30,8 +30,8 @@ exports = module.exports = HTML;
30
30
 
31
31
  var statsTemplate = '<ul id="stats">'
32
32
  + '<li class="progress"><canvas width="40" height="40"></canvas></li>'
33
- + '<li class="passes">passes: <em>0</em></li>'
34
- + '<li class="failures">failures: <em>0</em></li>'
33
+ + '<li class="passes"><a href="#">passes:</a> <em>0</em></li>'
34
+ + '<li class="failures"><a href="#">failures:</a> <em>0</em></li>'
35
35
  + '<li class="duration">duration: <em>0</em>s</li>'
36
36
  + '</ul>';
37
37
 
@@ -52,7 +52,9 @@ function HTML(runner) {
52
52
  , stat = fragment(statsTemplate)
53
53
  , items = stat.getElementsByTagName('li')
54
54
  , passes = items[1].getElementsByTagName('em')[0]
55
+ , passesLink = items[1].getElementsByTagName('a')[0]
55
56
  , failures = items[2].getElementsByTagName('em')[0]
57
+ , failuresLink = items[2].getElementsByTagName('a')[0]
56
58
  , duration = items[3].getElementsByTagName('em')[0]
57
59
  , canvas = stat.getElementsByTagName('canvas')[0]
58
60
  , report = fragment('<ul id="report"></ul>')
@@ -67,6 +69,18 @@ function HTML(runner) {
67
69
 
68
70
  if (!root) return error('#mocha div missing, add it to your document');
69
71
 
72
+ // pass toggle
73
+ on(passesLink, 'click', function () {
74
+ var className = /pass/.test(report.className) ? '' : ' pass';
75
+ report.className = report.className.replace(/fail|pass/g, '') + className;
76
+ });
77
+
78
+ // failure toggle
79
+ on(failuresLink, 'click', function () {
80
+ var className = /fail/.test(report.className) ? '' : ' fail';
81
+ report.className = report.className.replace(/fail|pass/g, '') + className;
82
+ });
83
+
70
84
  root.appendChild(stat);
71
85
  root.appendChild(report);
72
86
 
@@ -134,17 +148,16 @@ function HTML(runner) {
134
148
  }
135
149
 
136
150
  // toggle code
137
- var h2 = el.getElementsByTagName('h2')[0];
138
-
139
- on(h2, 'click', function(){
140
- pre.style.display = 'none' == pre.style.display
141
- ? 'block'
142
- : 'none';
143
- });
144
-
145
- // code
146
151
  // TODO: defer
147
152
  if (!test.pending) {
153
+ var h2 = el.getElementsByTagName('h2')[0];
154
+
155
+ on(h2, 'click', function(){
156
+ pre.style.display = 'none' == pre.style.display
157
+ ? 'inline-block'
158
+ : 'none';
159
+ });
160
+
148
161
  var pre = fragment('<pre><code>%e</code></pre>', utils.clean(test.fn.toString()));
149
162
  el.appendChild(pre);
150
163
  pre.style.display = 'none';
@@ -203,4 +216,4 @@ function on(el, event, fn) {
203
216
  } else {
204
217
  el.attachEvent('on' + event, fn);
205
218
  }
206
- }
219
+ }
@@ -73,14 +73,14 @@ function Landing(runner) {
73
73
  }
74
74
 
75
75
  // render landing strip
76
- stream.write('\033[4F\n\n');
76
+ stream.write('\u001b[4F\n\n');
77
77
  stream.write(runway());
78
78
  stream.write('\n ');
79
79
  stream.write(color('runway', Array(col).join('⋅')));
80
80
  stream.write(plane)
81
81
  stream.write(color('runway', Array(width - col).join('⋅') + '\n'));
82
82
  stream.write(runway());
83
- stream.write('\033[0m');
83
+ stream.write('\u001b[0m');
84
84
  });
85
85
 
86
86
  runner.on('end', function(){
@@ -23,9 +23,9 @@ function Min(runner) {
23
23
 
24
24
  runner.on('start', function(){
25
25
  // clear screen
26
- process.stdout.write('\033[2J');
26
+ process.stdout.write('\u001b[2J');
27
27
  // set cursor position
28
- process.stdout.write('\033[1;3H');
28
+ process.stdout.write('\u001b[1;3H');
29
29
  });
30
30
 
31
31
  runner.on('end', this.epilogue.bind(this));
@@ -87,7 +87,7 @@ NyanCat.prototype.drawScoreboard = function(){
87
87
 
88
88
  function draw(color, n) {
89
89
  write(' ');
90
- write('\033[' + color + 'm' + n + '\033[0m');
90
+ write('\u001b[' + color + 'm' + n + '\u001b[0m');
91
91
  write('\n');
92
92
  }
93
93
 
@@ -126,7 +126,7 @@ NyanCat.prototype.drawRainbow = function(){
126
126
  var self = this;
127
127
 
128
128
  this.trajectories.forEach(function(line, index) {
129
- write('\033[' + self.scoreboardWidth + 'C');
129
+ write('\u001b[' + self.scoreboardWidth + 'C');
130
130
  write(line.join(''));
131
131
  write('\n');
132
132
  });
@@ -146,7 +146,7 @@ NyanCat.prototype.drawNyanCat = function(status) {
146
146
  var startWidth = this.scoreboardWidth + this.trajectories[0].length;
147
147
 
148
148
  [0, 1, 2, 3].forEach(function(index) {
149
- write('\033[' + startWidth + 'C');
149
+ write('\u001b[' + startWidth + 'C');
150
150
 
151
151
  switch (index) {
152
152
  case 0:
@@ -194,7 +194,7 @@ NyanCat.prototype.drawNyanCat = function(status) {
194
194
  */
195
195
 
196
196
  NyanCat.prototype.cursorUp = function(n) {
197
- write('\033[' + n + 'A');
197
+ write('\u001b[' + n + 'A');
198
198
  };
199
199
 
200
200
  /**
@@ -205,7 +205,7 @@ NyanCat.prototype.cursorUp = function(n) {
205
205
  */
206
206
 
207
207
  NyanCat.prototype.cursorDown = function(n) {
208
- write('\033[' + n + 'B');
208
+ write('\u001b[' + n + 'B');
209
209
  };
210
210
 
211
211
  /**
@@ -241,7 +241,7 @@ NyanCat.prototype.generateColors = function(){
241
241
  NyanCat.prototype.rainbowify = function(str){
242
242
  var color = this.rainbowColors[this.colorIndex % this.rainbowColors.length];
243
243
  this.colorIndex += 1;
244
- return '\033[38;5;' + color + 'm' + str + '\033[0m';
244
+ return '\u001b[38;5;' + color + 'm' + str + '\u001b[0m';
245
245
  };
246
246
 
247
247
  /**
@@ -60,7 +60,7 @@ function Progress(runner, options) {
60
60
  , i = width - n;
61
61
 
62
62
  cursor.CR();
63
- process.stdout.write('\033[J');
63
+ process.stdout.write('\u001b[J');
64
64
  process.stdout.write(color('progress', ' ' + options.open));
65
65
  process.stdout.write(Array(n).join(options.complete));
66
66
  process.stdout.write(Array(i).join(options.incomplete));
@@ -36,7 +36,11 @@ function XUnit(runner) {
36
36
  , tests = []
37
37
  , self = this;
38
38
 
39
- runner.on('test end', function(test){
39
+ runner.on('pass', function(test){
40
+ tests.push(test);
41
+ });
42
+
43
+ runner.on('fail', function(test){
40
44
  tests.push(test);
41
45
  });
42
46
 
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  var EventEmitter = require('events').EventEmitter
7
- , debug = require('debug')('runnable');
7
+ , debug = require('debug')('mocha:runnable');
8
8
 
9
9
  /**
10
10
  * Save timer references to avoid Sinon interfering (see GH-237).
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  var EventEmitter = require('events').EventEmitter
7
- , debug = require('debug')('runner')
7
+ , debug = require('debug')('mocha:runner')
8
8
  , Test = require('./test')
9
9
  , utils = require('./utils')
10
10
  , filter = utils.filter
@@ -411,9 +411,9 @@ Runner.prototype.runSuite = function(suite, fn){
411
411
  */
412
412
 
413
413
  Runner.prototype.uncaught = function(err){
414
- debug('uncaught exception');
414
+ debug('uncaught exception %s', err.message);
415
415
  var runnable = this.currentRunnable;
416
- if ('failed' == runnable.state) return;
416
+ if (!runnable || 'failed' == runnable.state) return;
417
417
  runnable.clearTimeout();
418
418
  err.uncaught = true;
419
419
  this.fail(runnable, err);
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  var EventEmitter = require('events').EventEmitter
7
- , debug = require('debug')('suite')
7
+ , debug = require('debug')('mocha:suite')
8
8
  , utils = require('./utils')
9
9
  , Hook = require('./hook');
10
10
 
@@ -30,6 +30,7 @@ exports = module.exports = Suite;
30
30
  exports.create = function(parent, title){
31
31
  var suite = new Suite(title, parent.ctx);
32
32
  suite.parent = parent;
33
+ if (parent.pending) suite.pending = true;
33
34
  title = suite.fullTitle();
34
35
  parent.addSuite(suite);
35
36
  return suite;
@@ -49,6 +50,7 @@ function Suite(title, ctx) {
49
50
  this.ctx = ctx;
50
51
  this.suites = [];
51
52
  this.tests = [];
53
+ this.pending = false;
52
54
  this._beforeEach = [];
53
55
  this._beforeAll = [];
54
56
  this._afterEach = [];
@@ -120,6 +122,7 @@ Suite.prototype.bail = function(bail){
120
122
  */
121
123
 
122
124
  Suite.prototype.beforeAll = function(fn){
125
+ if (this.pending) return this;
123
126
  var hook = new Hook('"before all" hook', fn);
124
127
  hook.parent = this;
125
128
  hook.timeout(this.timeout());
@@ -138,6 +141,7 @@ Suite.prototype.beforeAll = function(fn){
138
141
  */
139
142
 
140
143
  Suite.prototype.afterAll = function(fn){
144
+ if (this.pending) return this;
141
145
  var hook = new Hook('"after all" hook', fn);
142
146
  hook.parent = this;
143
147
  hook.timeout(this.timeout());
@@ -156,6 +160,7 @@ Suite.prototype.afterAll = function(fn){
156
160
  */
157
161
 
158
162
  Suite.prototype.beforeEach = function(fn){
163
+ if (this.pending) return this;
159
164
  var hook = new Hook('"before each" hook', fn);
160
165
  hook.parent = this;
161
166
  hook.timeout(this.timeout());
@@ -174,6 +179,7 @@ Suite.prototype.beforeEach = function(fn){
174
179
  */
175
180
 
176
181
  Suite.prototype.afterEach = function(fn){
182
+ if (this.pending) return this;
177
183
  var hook = new Hook('"after each" hook', fn);
178
184
  hook.parent = this;
179
185
  hook.timeout(this.timeout());
@@ -6,7 +6,7 @@
6
6
  var fs = require('fs')
7
7
  , path = require('path')
8
8
  , join = path.join
9
- , debug = require('debug')('watch');
9
+ , debug = require('debug')('mocha:watch');
10
10
 
11
11
  /**
12
12
  * Ignored directories.
@@ -1,4 +1,4 @@
1
-
1
+ @charset "UTF-8";
2
2
  body {
3
3
  font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
4
4
  padding: 60px 50px;
@@ -143,6 +143,14 @@ body {
143
143
  -webkit-box-shadow: 0 1px 3px #eee;
144
144
  }
145
145
 
146
+ #report.pass .test.fail {
147
+ display: none;
148
+ }
149
+
150
+ #report.fail .test.pass {
151
+ display: none;
152
+ }
153
+
146
154
  #error {
147
155
  color: #c00;
148
156
  font-size: 1.5 em;
@@ -168,6 +176,15 @@ body {
168
176
  color: black;
169
177
  }
170
178
 
179
+ #stats a {
180
+ text-decoration: none;
181
+ color: inherit;
182
+ }
183
+
184
+ #stats a:hover {
185
+ border-bottom: 1px solid #eee;
186
+ }
187
+
171
188
  #stats li {
172
189
  display: inline-block;
173
190
  margin: 0 5px;