hooch 0.3.0 → 0.4.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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/hooch.js +395 -1
  3. data/jasmine/jasmine-fixture.js +433 -0
  4. data/jasmine/node_modules/karma-chrome-launcher/CHANGELOG.md +108 -0
  5. data/jasmine/node_modules/karma-chrome-launcher/LICENSE +20 -0
  6. data/jasmine/node_modules/karma-chrome-launcher/README.md +49 -0
  7. data/jasmine/node_modules/karma-chrome-launcher/examples/simple/index.spec.js +5 -0
  8. data/jasmine/node_modules/karma-chrome-launcher/examples/simple/karma.conf.js +32 -0
  9. data/jasmine/node_modules/karma-chrome-launcher/gruntfile.js +63 -0
  10. data/jasmine/node_modules/karma-chrome-launcher/index.js +181 -0
  11. data/jasmine/node_modules/karma-chrome-launcher/node_modules/.bin/which +14 -0
  12. data/jasmine/node_modules/karma-chrome-launcher/node_modules/fs-access/index.js +41 -0
  13. data/jasmine/node_modules/karma-chrome-launcher/node_modules/fs-access/license +21 -0
  14. data/jasmine/node_modules/karma-chrome-launcher/node_modules/fs-access/node_modules/null-check/index.js +19 -0
  15. data/jasmine/node_modules/karma-chrome-launcher/node_modules/fs-access/node_modules/null-check/license +21 -0
  16. data/jasmine/node_modules/karma-chrome-launcher/node_modules/fs-access/node_modules/null-check/package.json +65 -0
  17. data/jasmine/node_modules/karma-chrome-launcher/node_modules/fs-access/node_modules/null-check/readme.md +34 -0
  18. data/jasmine/node_modules/karma-chrome-launcher/node_modules/fs-access/package.json +71 -0
  19. data/jasmine/node_modules/karma-chrome-launcher/node_modules/fs-access/readme.md +53 -0
  20. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/.travis.yml +8 -0
  21. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/LICENSE +15 -0
  22. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/README.md +34 -0
  23. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/bin/which +14 -0
  24. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/node_modules/is-absolute/LICENSE +21 -0
  25. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/node_modules/is-absolute/README.md +53 -0
  26. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/node_modules/is-absolute/index.js +27 -0
  27. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/node_modules/is-absolute/node_modules/is-relative/LICENSE-MIT +21 -0
  28. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/node_modules/is-absolute/node_modules/is-relative/README.md +38 -0
  29. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/node_modules/is-absolute/node_modules/is-relative/index.js +21 -0
  30. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/node_modules/is-absolute/node_modules/is-relative/package.json +75 -0
  31. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/node_modules/is-absolute/package.json +75 -0
  32. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/package.json +56 -0
  33. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/test/basic.js +99 -0
  34. data/jasmine/node_modules/karma-chrome-launcher/node_modules/which/which.js +111 -0
  35. data/jasmine/node_modules/karma-chrome-launcher/package.json +142 -0
  36. data/jasmine/node_modules/karma-chrome-launcher/test/jsflags.spec.js +53 -0
  37. data/jasmine/spec/hoochSpec.js +66 -0
  38. data/lib/hooch/version.rb +1 -1
  39. metadata +37 -3
@@ -0,0 +1,433 @@
1
+ /* jasmine-fixture - 1.3.2
2
+ * Makes injecting HTML snippets into the DOM easy & clean!
3
+ * https://github.com/searls/jasmine-fixture
4
+ */
5
+ (function() {
6
+ var createHTMLBlock,
7
+ __slice = [].slice;
8
+
9
+ (function($) {
10
+ var ewwSideEffects, jasmineFixture, originalAffix, originalJasmineDotFixture, originalJasmineFixture, root, _, _ref;
11
+ root = (1, eval)('this');
12
+ originalJasmineFixture = root.jasmineFixture;
13
+ originalJasmineDotFixture = (_ref = root.jasmine) != null ? _ref.fixture : void 0;
14
+ originalAffix = root.affix;
15
+ _ = function(list) {
16
+ return {
17
+ inject: function(iterator, memo) {
18
+ var item, _i, _len, _results;
19
+ _results = [];
20
+ for (_i = 0, _len = list.length; _i < _len; _i++) {
21
+ item = list[_i];
22
+ _results.push(memo = iterator(memo, item));
23
+ }
24
+ return _results;
25
+ }
26
+ };
27
+ };
28
+ root.jasmineFixture = function($) {
29
+ var $whatsTheRootOf, affix, create, jasmineFixture, noConflict;
30
+ affix = function(selectorOptions) {
31
+ return create.call(this, selectorOptions, true);
32
+ };
33
+ create = function(selectorOptions, attach) {
34
+ var $top;
35
+ $top = null;
36
+ _(selectorOptions.split(/[ ](?![^\{]*\})(?=[^\]]*?(?:\[|$))/)).inject(function($parent, elementSelector) {
37
+ var $el;
38
+ if (elementSelector === ">") {
39
+ return $parent;
40
+ }
41
+ $el = createHTMLBlock($, elementSelector);
42
+ if (attach || $top) {
43
+ $el.appendTo($parent);
44
+ }
45
+ $top || ($top = $el);
46
+ return $el;
47
+ }, $whatsTheRootOf(this));
48
+ return $top;
49
+ };
50
+ noConflict = function() {
51
+ var currentJasmineFixture, _ref1;
52
+ currentJasmineFixture = jasmine.fixture;
53
+ root.jasmineFixture = originalJasmineFixture;
54
+ if ((_ref1 = root.jasmine) != null) {
55
+ _ref1.fixture = originalJasmineDotFixture;
56
+ }
57
+ root.affix = originalAffix;
58
+ return currentJasmineFixture;
59
+ };
60
+ $whatsTheRootOf = function(that) {
61
+ if ((that != null ? that.jquery : void 0) != null) {
62
+ return that;
63
+ } else if ($('#jasmine_content').length > 0) {
64
+ return $('#jasmine_content');
65
+ } else {
66
+ return $('<div id="jasmine_content"></div>').appendTo('body');
67
+ }
68
+ };
69
+ jasmineFixture = {
70
+ affix: affix,
71
+ create: create,
72
+ noConflict: noConflict
73
+ };
74
+ ewwSideEffects(jasmineFixture);
75
+ return jasmineFixture;
76
+ };
77
+ ewwSideEffects = function(jasmineFixture) {
78
+ var _ref1;
79
+ if ((_ref1 = root.jasmine) != null) {
80
+ _ref1.fixture = jasmineFixture;
81
+ }
82
+ $.fn.affix = root.affix = jasmineFixture.affix;
83
+ return afterEach(function() {
84
+ return $('#jasmine_content').remove();
85
+ });
86
+ };
87
+ if ($) {
88
+ return jasmineFixture = root.jasmineFixture($);
89
+ } else {
90
+ return root.affix = function() {
91
+ var nowJQueryExists;
92
+ nowJQueryExists = window.jQuery || window.$;
93
+ if (nowJQueryExists != null) {
94
+ jasmineFixture = root.jasmineFixture(nowJQueryExists);
95
+ return affix.call.apply(affix, [this].concat(__slice.call(arguments)));
96
+ } else {
97
+ throw new Error("jasmine-fixture requires jQuery to be defined at window.jQuery or window.$");
98
+ }
99
+ };
100
+ }
101
+ })(window.jQuery || window.$);
102
+
103
+ createHTMLBlock = (function() {
104
+ var bindData, bindEvents, parseAttributes, parseClasses, parseContents, parseEnclosure, parseReferences, parseVariableScope, regAttr, regAttrDfn, regAttrs, regCBrace, regClass, regClasses, regData, regDatas, regEvent, regEvents, regExclamation, regId, regReference, regTag, regTagNotContent, regZenTagDfn;
105
+ createHTMLBlock = function($, ZenObject, data, functions, indexes) {
106
+ var ZenCode, arr, block, blockAttrs, blockClasses, blockHTML, blockId, blockTag, blocks, el, el2, els, forScope, indexName, inner, len, obj, origZenCode, paren, result, ret, zc, zo;
107
+ if ($.isPlainObject(ZenObject)) {
108
+ ZenCode = ZenObject.main;
109
+ } else {
110
+ ZenCode = ZenObject;
111
+ ZenObject = {
112
+ main: ZenCode
113
+ };
114
+ }
115
+ origZenCode = ZenCode;
116
+ if (indexes === undefined) {
117
+ indexes = {};
118
+ }
119
+ if (ZenCode.charAt(0) === "!" || $.isArray(data)) {
120
+ if ($.isArray(data)) {
121
+ forScope = ZenCode;
122
+ } else {
123
+ obj = parseEnclosure(ZenCode, "!");
124
+ obj = obj.substring(obj.indexOf(":") + 1, obj.length - 1);
125
+ forScope = parseVariableScope(ZenCode);
126
+ }
127
+ while (forScope.charAt(0) === "@") {
128
+ forScope = parseVariableScope("!for:!" + parseReferences(forScope, ZenObject));
129
+ }
130
+ zo = ZenObject;
131
+ zo.main = forScope;
132
+ el = $();
133
+ if (ZenCode.substring(0, 5) === "!for:" || $.isArray(data)) {
134
+ if (!$.isArray(data) && obj.indexOf(":") > 0) {
135
+ indexName = obj.substring(0, obj.indexOf(":"));
136
+ obj = obj.substr(obj.indexOf(":") + 1);
137
+ }
138
+ arr = ($.isArray(data) ? data : data[obj]);
139
+ zc = zo.main;
140
+ if ($.isArray(arr) || $.isPlainObject(arr)) {
141
+ $.map(arr, function(value, index) {
142
+ var next;
143
+ zo.main = zc;
144
+ if (indexName !== undefined) {
145
+ indexes[indexName] = index;
146
+ }
147
+ if (!$.isPlainObject(value)) {
148
+ value = {
149
+ value: value
150
+ };
151
+ }
152
+ next = createHTMLBlock($, zo, value, functions, indexes);
153
+ if (el.length !== 0) {
154
+ return $.each(next, function(index, value) {
155
+ return el.push(value);
156
+ });
157
+ }
158
+ });
159
+ }
160
+ if (!$.isArray(data)) {
161
+ ZenCode = ZenCode.substr(obj.length + 6 + forScope.length);
162
+ } else {
163
+ ZenCode = "";
164
+ }
165
+ } else if (ZenCode.substring(0, 4) === "!if:") {
166
+ result = parseContents("!" + obj + "!", data, indexes);
167
+ if (result !== "undefined" || result !== "false" || result !== "") {
168
+ el = createHTMLBlock($, zo, data, functions, indexes);
169
+ }
170
+ ZenCode = ZenCode.substr(obj.length + 5 + forScope.length);
171
+ }
172
+ ZenObject.main = ZenCode;
173
+ } else if (ZenCode.charAt(0) === "(") {
174
+ paren = parseEnclosure(ZenCode, "(", ")");
175
+ inner = paren.substring(1, paren.length - 1);
176
+ ZenCode = ZenCode.substr(paren.length);
177
+ zo = ZenObject;
178
+ zo.main = inner;
179
+ el = createHTMLBlock($, zo, data, functions, indexes);
180
+ } else {
181
+ blocks = ZenCode.match(regZenTagDfn);
182
+ block = blocks[0];
183
+ if (block.length === 0) {
184
+ return "";
185
+ }
186
+ if (block.indexOf("@") >= 0) {
187
+ ZenCode = parseReferences(ZenCode, ZenObject);
188
+ zo = ZenObject;
189
+ zo.main = ZenCode;
190
+ return createHTMLBlock($, zo, data, functions, indexes);
191
+ }
192
+ block = parseContents(block, data, indexes);
193
+ blockClasses = parseClasses($, block);
194
+ if (regId.test(block)) {
195
+ blockId = regId.exec(block)[1];
196
+ }
197
+ blockAttrs = parseAttributes(block, data);
198
+ blockTag = (block.charAt(0) === "{" ? "span" : "div");
199
+ if (ZenCode.charAt(0) !== "#" && ZenCode.charAt(0) !== "." && ZenCode.charAt(0) !== "{") {
200
+ blockTag = regTag.exec(block)[1];
201
+ }
202
+ if (block.search(regCBrace) !== -1) {
203
+ blockHTML = block.match(regCBrace)[1];
204
+ }
205
+ blockAttrs = $.extend(blockAttrs, {
206
+ id: blockId,
207
+ "class": blockClasses,
208
+ html: blockHTML
209
+ });
210
+ el = $("<" + blockTag + ">", blockAttrs);
211
+ el.attr(blockAttrs);
212
+ el = bindEvents(block, el, functions);
213
+ el = bindData(block, el, data);
214
+ ZenCode = ZenCode.substr(blocks[0].length);
215
+ ZenObject.main = ZenCode;
216
+ }
217
+ if (ZenCode.length > 0) {
218
+ if (ZenCode.charAt(0) === ">") {
219
+ if (ZenCode.charAt(1) === "(") {
220
+ zc = parseEnclosure(ZenCode.substr(1), "(", ")");
221
+ ZenCode = ZenCode.substr(zc.length + 1);
222
+ } else if (ZenCode.charAt(1) === "!") {
223
+ obj = parseEnclosure(ZenCode.substr(1), "!");
224
+ forScope = parseVariableScope(ZenCode.substr(1));
225
+ zc = obj + forScope;
226
+ ZenCode = ZenCode.substr(zc.length + 1);
227
+ } else {
228
+ len = Math.max(ZenCode.indexOf("+"), ZenCode.length);
229
+ zc = ZenCode.substring(1, len);
230
+ ZenCode = ZenCode.substr(len);
231
+ }
232
+ zo = ZenObject;
233
+ zo.main = zc;
234
+ els = $(createHTMLBlock($, zo, data, functions, indexes));
235
+ els.appendTo(el);
236
+ }
237
+ if (ZenCode.charAt(0) === "+") {
238
+ zo = ZenObject;
239
+ zo.main = ZenCode.substr(1);
240
+ el2 = createHTMLBlock($, zo, data, functions, indexes);
241
+ $.each(el2, function(index, value) {
242
+ return el.push(value);
243
+ });
244
+ }
245
+ }
246
+ ret = el;
247
+ return ret;
248
+ };
249
+ bindData = function(ZenCode, el, data) {
250
+ var datas, i, split;
251
+ if (ZenCode.search(regDatas) === 0) {
252
+ return el;
253
+ }
254
+ datas = ZenCode.match(regDatas);
255
+ if (datas === null) {
256
+ return el;
257
+ }
258
+ i = 0;
259
+ while (i < datas.length) {
260
+ split = regData.exec(datas[i]);
261
+ if (split[3] === undefined) {
262
+ $(el).data(split[1], data[split[1]]);
263
+ } else {
264
+ $(el).data(split[1], data[split[3]]);
265
+ }
266
+ i++;
267
+ }
268
+ return el;
269
+ };
270
+ bindEvents = function(ZenCode, el, functions) {
271
+ var bindings, fn, i, split;
272
+ if (ZenCode.search(regEvents) === 0) {
273
+ return el;
274
+ }
275
+ bindings = ZenCode.match(regEvents);
276
+ if (bindings === null) {
277
+ return el;
278
+ }
279
+ i = 0;
280
+ while (i < bindings.length) {
281
+ split = regEvent.exec(bindings[i]);
282
+ if (split[2] === undefined) {
283
+ fn = functions[split[1]];
284
+ } else {
285
+ fn = functions[split[2]];
286
+ }
287
+ $(el).bind(split[1], fn);
288
+ i++;
289
+ }
290
+ return el;
291
+ };
292
+ parseAttributes = function(ZenBlock, data) {
293
+ var attrStrs, attrs, i, parts;
294
+ if (ZenBlock.search(regAttrDfn) === -1) {
295
+ return undefined;
296
+ }
297
+ attrStrs = ZenBlock.match(regAttrDfn);
298
+ attrs = {};
299
+ i = 0;
300
+ while (i < attrStrs.length) {
301
+ parts = regAttr.exec(attrStrs[i]);
302
+ attrs[parts[1]] = "";
303
+ if (parts[3] !== undefined) {
304
+ attrs[parts[1]] = parseContents(parts[3], data);
305
+ }
306
+ i++;
307
+ }
308
+ return attrs;
309
+ };
310
+ parseClasses = function($, ZenBlock) {
311
+ var classes, clsString, i;
312
+ ZenBlock = ZenBlock.match(regTagNotContent)[0];
313
+ if (ZenBlock.search(regClasses) === -1) {
314
+ return undefined;
315
+ }
316
+ classes = ZenBlock.match(regClasses);
317
+ clsString = "";
318
+ i = 0;
319
+ while (i < classes.length) {
320
+ clsString += " " + regClass.exec(classes[i])[1];
321
+ i++;
322
+ }
323
+ return $.trim(clsString);
324
+ };
325
+ parseContents = function(ZenBlock, data, indexes) {
326
+ var html;
327
+ if (indexes === undefined) {
328
+ indexes = {};
329
+ }
330
+ html = ZenBlock;
331
+ if (data === undefined) {
332
+ return html;
333
+ }
334
+ while (regExclamation.test(html)) {
335
+ html = html.replace(regExclamation, function(str, str2) {
336
+ var begChar, fn, val;
337
+ begChar = "";
338
+ if (str.indexOf("!for:") > 0 || str.indexOf("!if:") > 0) {
339
+ return str;
340
+ }
341
+ if (str.charAt(0) !== "!") {
342
+ begChar = str.charAt(0);
343
+ str = str.substring(2, str.length - 1);
344
+ }
345
+ fn = new Function("data", "indexes", "var r=undefined;" + "with(data){try{r=" + str + ";}catch(e){}}" + "with(indexes){try{if(r===undefined)r=" + str + ";}catch(e){}}" + "return r;");
346
+ val = unescape(fn(data, indexes));
347
+ return begChar + val;
348
+ });
349
+ }
350
+ html = html.replace(/\\./g, function(str) {
351
+ return str.charAt(1);
352
+ });
353
+ return unescape(html);
354
+ };
355
+ parseEnclosure = function(ZenCode, open, close, count) {
356
+ var index, ret;
357
+ if (close === undefined) {
358
+ close = open;
359
+ }
360
+ index = 1;
361
+ if (count === undefined) {
362
+ count = (ZenCode.charAt(0) === open ? 1 : 0);
363
+ }
364
+ if (count === 0) {
365
+ return;
366
+ }
367
+ while (count > 0 && index < ZenCode.length) {
368
+ if (ZenCode.charAt(index) === close && ZenCode.charAt(index - 1) !== "\\") {
369
+ count--;
370
+ } else {
371
+ if (ZenCode.charAt(index) === open && ZenCode.charAt(index - 1) !== "\\") {
372
+ count++;
373
+ }
374
+ }
375
+ index++;
376
+ }
377
+ ret = ZenCode.substring(0, index);
378
+ return ret;
379
+ };
380
+ parseReferences = function(ZenCode, ZenObject) {
381
+ ZenCode = ZenCode.replace(regReference, function(str) {
382
+ var fn;
383
+ str = str.substr(1);
384
+ fn = new Function("objs", "var r=\"\";" + "with(objs){try{" + "r=" + str + ";" + "}catch(e){}}" + "return r;");
385
+ return fn(ZenObject, parseReferences);
386
+ });
387
+ return ZenCode;
388
+ };
389
+ parseVariableScope = function(ZenCode) {
390
+ var forCode, rest, tag;
391
+ if (ZenCode.substring(0, 5) !== "!for:" && ZenCode.substring(0, 4) !== "!if:") {
392
+ return undefined;
393
+ }
394
+ forCode = parseEnclosure(ZenCode, "!");
395
+ ZenCode = ZenCode.substr(forCode.length);
396
+ if (ZenCode.charAt(0) === "(") {
397
+ return parseEnclosure(ZenCode, "(", ")");
398
+ }
399
+ tag = ZenCode.match(regZenTagDfn)[0];
400
+ ZenCode = ZenCode.substr(tag.length);
401
+ if (ZenCode.length === 0 || ZenCode.charAt(0) === "+") {
402
+ return tag;
403
+ } else if (ZenCode.charAt(0) === ">") {
404
+ rest = "";
405
+ rest = parseEnclosure(ZenCode.substr(1), "(", ")", 1);
406
+ return tag + ">" + rest;
407
+ }
408
+ return undefined;
409
+ };
410
+ regZenTagDfn = /([#\.\@]?[\w-]+|\[([\w-!?=:"']+(="([^"]|\\")+")? {0,})+\]|\~[\w$]+=[\w$]+|&[\w$]+(=[\w$]+)?|[#\.\@]?!([^!]|\\!)+!){0,}(\{([^\}]|\\\})+\})?/i;
411
+ regTag = /(\w+)/i;
412
+ regId = /(?:^|\b)#([\w-!]+)/i;
413
+ regTagNotContent = /((([#\.]?[\w-]+)?(\[([\w!]+(="([^"]|\\")+")? {0,})+\])?)+)/i;
414
+ /*
415
+ See lookahead syntax (?!) at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
416
+ */
417
+
418
+ regClasses = /(\.[\w-]+)(?!["\w])/g;
419
+ regClass = /\.([\w-]+)/i;
420
+ regReference = /(@[\w$_][\w$_\d]+)/i;
421
+ regAttrDfn = /(\[([\w-!]+(="?([^"]|\\")+"?)? {0,})+\])/ig;
422
+ regAttrs = /([\w-!]+(="([^"]|\\")+")?)/g;
423
+ regAttr = /([\w-!]+)(="?((([\w]+(\[.*?\])+)|[^"\]]|\\")+)"?)?/i;
424
+ regCBrace = /\{(([^\}]|\\\})+)\}/i;
425
+ regExclamation = /(?:([^\\]|^))!([^!]|\\!)+!/g;
426
+ regEvents = /\~[\w$]+(=[\w$]+)?/g;
427
+ regEvent = /\~([\w$]+)=([\w$]+)/i;
428
+ regDatas = /&[\w$]+(=[\w$]+)?/g;
429
+ regData = /&([\w$]+)(=([\w$]+))?/i;
430
+ return createHTMLBlock;
431
+ })();
432
+
433
+ }).call(this);
@@ -0,0 +1,108 @@
1
+ <a name"0.2.0"></a>
2
+ ## 0.2.0 (2015-06-23)
3
+
4
+
5
+ #### Bug Fixes
6
+
7
+ * Use fs-access shim for file detection. ([6355ca88](https://github.com/karma-runner/karma-chrome-launcher/commit/6355ca88), closes [#53](https://github.com/karma-runner/karma-chrome-launcher/issues/53))
8
+
9
+
10
+ <a name"0.1.9"></a>
11
+ ### 0.1.9 (2015-06-23)
12
+
13
+
14
+ <a name"0.1.8"></a>
15
+ ### 0.1.8 (2015-06-23)
16
+
17
+
18
+ <a name"0.1.7"></a>
19
+ ### 0.1.7 (2015-06-23)
20
+
21
+
22
+ <a name"0.1.6"></a>
23
+ ### 0.1.6 (2015-06-23)
24
+
25
+
26
+ #### Bug Fixes
27
+
28
+ * **jsFlags:** un-quote --js-flags flag and automatically merge with presets ([4509c277](https://github.com/karma-runner/karma-chrome-launcher/commit/4509c277))
29
+
30
+
31
+ <a name"0.1.5"></a>
32
+ ### 0.1.5 (2015-06-23)
33
+
34
+
35
+ #### Bug Fixes
36
+
37
+ * better error when DARTIUM_BIN not set ([27462e86](https://github.com/karma-runner/karma-chrome-launcher/commit/27462e86))
38
+
39
+
40
+ <a name"0.1.4"></a>
41
+ ### 0.1.4 (2015-06-23)
42
+
43
+
44
+ #### Bug Fixes
45
+
46
+ * the translation is now disabled on launch ([b2f389ba](https://github.com/karma-runner/karma-chrome-launcher/commit/b2f389ba))
47
+
48
+
49
+ <a name"0.1.3"></a>
50
+ ### 0.1.3 (2015-06-23)
51
+
52
+
53
+ #### Features
54
+
55
+ * **Launcher:** Add Dartium launcher. ([ae81c0c1](https://github.com/karma-runner/karma-chrome-launcher/commit/ae81c0c1))
56
+
57
+
58
+ <a name"0.1.2"></a>
59
+ ### 0.1.2 (2015-06-23)
60
+
61
+
62
+ <a name"0.1.12"></a>
63
+ ### 0.1.12 (2015-06-23)
64
+
65
+
66
+ <a name"0.1.11"></a>
67
+ ### 0.1.11 (2015-06-23)
68
+
69
+
70
+ <a name"0.1.10"></a>
71
+ ### 0.1.10 (2015-06-23)
72
+
73
+
74
+ #### Bug Fixes
75
+
76
+ * better error when DARTIUM_BIN not set ([27462e86](https://github.com/karma-runner/karma-chrome-launcher/commit/27462e86))
77
+ * the translation is now disabled on launch ([b2f389ba](https://github.com/karma-runner/karma-chrome-launcher/commit/b2f389ba))
78
+ * **jsFlags:** un-quote --js-flags flag and automatically merge with presets ([4509c277](https://github.com/karma-runner/karma-chrome-launcher/commit/4509c277))
79
+
80
+
81
+ #### Features
82
+
83
+ * disable popup blocking by default ([2cdace9e](https://github.com/karma-runner/karma-chrome-launcher/commit/2cdace9e))
84
+ * **Launcher:** Add Dartium launcher. ([ae81c0c1](https://github.com/karma-runner/karma-chrome-launcher/commit/ae81c0c1))
85
+
86
+
87
+ <a name"0.1.1"></a>
88
+ ### 0.1.1 (2015-06-23)
89
+
90
+
91
+ #### Bug Fixes
92
+
93
+ * handle Chrome location on Windows ([62df3014](https://github.com/karma-runner/karma-chrome-launcher/commit/62df3014))
94
+ * correct Chrome path on Windows ([9ebd9974](https://github.com/karma-runner/karma-chrome-launcher/commit/9ebd9974), closes [#2](https://github.com/karma-runner/karma-chrome-launcher/issues/2))
95
+
96
+
97
+ <a name"0.1.0"></a>
98
+ ## 0.1.0 (2015-06-23)
99
+
100
+
101
+ <a name"0.0.2"></a>
102
+ ### 0.0.2 (2015-06-23)
103
+
104
+
105
+ #### Features
106
+
107
+ * allow passing custom flags ([4ebc7694](https://github.com/karma-runner/karma-chrome-launcher/commit/4ebc7694))
108
+
@@ -0,0 +1,20 @@
1
+ The MIT License
2
+
3
+ Copyright (C) 2011-2013 Google, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9
+ of the Software, and to permit persons to whom the Software is furnished to do
10
+ so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,49 @@
1
+ # karma-chrome-launcher
2
+
3
+ [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/karma-runner/karma-chrome-launcher)
4
+ [![npm version](https://img.shields.io/npm/v/karma-chrome-launcher.svg?style=flat-square)](https://www.npmjs.com/package/karma-chrome-launcher) [![npm downloads](https://img.shields.io/npm/dm/karma-chrome-launcher.svg?style=flat-square)](https://www.npmjs.com/package/karma-chrome-launcher)
5
+
6
+ [![Build Status](https://img.shields.io/travis/karma-runner/karma-chrome-launcher/master.svg?style=flat-square)](https://travis-ci.org/karma-runner/karma-chrome-launcher) [![Dependency Status](https://img.shields.io/david/karma-runner/karma-chrome-launcher.svg?style=flat-square)](https://david-dm.org/karma-runner/karma-chrome-launcher) [![devDependency Status](https://img.shields.io/david/dev/karma-runner/karma-chrome-launcher.svg?style=flat-square)](https://david-dm.org/karma-runner/karma-chrome-launcher#info=devDependencies)
7
+
8
+ > Launcher for Google Chrome and Google Chrome Canary.
9
+
10
+ ## Installation
11
+
12
+ The easiest way is to keep `karma-chrome-launcher` as a devDependency in your `package.json`,
13
+ by running
14
+
15
+ ```bash
16
+ $ npm install karma-chrome-launcher --save-dev
17
+ ```
18
+
19
+ ## Configuration
20
+
21
+ ```js
22
+ // karma.conf.js
23
+ module.exports = function(config) {
24
+ config.set({
25
+ browsers: ['Chrome', 'Chrome_without_security'],
26
+
27
+ // you can define custom flags
28
+ customLaunchers: {
29
+ Chrome_without_security: {
30
+ base: 'Chrome',
31
+ flags: ['--disable-web-security']
32
+ }
33
+ }
34
+ })
35
+ }
36
+ ```
37
+
38
+ You can pass list of browsers as a CLI argument too:
39
+
40
+ ```bash
41
+ $ karma start --browsers Chrome,Chrome_without_security
42
+ ```
43
+
44
+ ----
45
+
46
+ For more information on Karma see the [homepage].
47
+
48
+
49
+ [homepage]: http://karma-runner.github.com
@@ -0,0 +1,5 @@
1
+ describe('ChromeLauncher', function () {
2
+ it('works', function () {
3
+ 1 + 1 === 2
4
+ })
5
+ })
@@ -0,0 +1,32 @@
1
+ module.exports = function (config) {
2
+ config.set({
3
+ basePath: '',
4
+
5
+ frameworks: ['mocha'],
6
+
7
+ files: [
8
+ '*.js'
9
+ ],
10
+
11
+ exclude: [],
12
+
13
+ reporters: ['progress'],
14
+
15
+ port: 9876,
16
+
17
+ colors: true,
18
+
19
+ logLevel: config.LOG_INFO,
20
+
21
+ autoWatch: false,
22
+
23
+ browsers: ['Chrome'],
24
+
25
+ singleRun: false,
26
+
27
+ plugins: [
28
+ require('../../'),
29
+ 'karma-mocha'
30
+ ]
31
+ })
32
+ }