Skip to content

Commit

Permalink
Merge pull request #1698 from benvinegar/fix-1687-2
Browse files Browse the repository at this point in the history
Escape test/suite title for re in html reporter
  • Loading branch information
boneskull committed Jul 3, 2015
2 parents 28e0a4f + 3166e70 commit f652414
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 1 deletion.
3 changes: 2 additions & 1 deletion lib/reporters/html.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
var Base = require('./base')
, utils = require('../utils')
, Progress = require('../browser/progress')
, escapeRe = require('../browser/escape-string-regexp')
, escape = utils.escape;

/**
Expand Down Expand Up @@ -200,7 +201,7 @@ var makeUrl = function makeUrl(s) {
search = search.replace(/[?&]grep=[^&\s]*/g, '').replace(/^&/, '?');
}

return window.location.pathname + (search ? search + '&' : '?' ) + 'grep=' + encodeURIComponent(s);
return window.location.pathname + (search ? search + '&' : '?' ) + 'grep=' + encodeURIComponent(escapeRe(s));
};

/**
Expand Down
46 changes: 46 additions & 0 deletions test/browser/ui.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<html>
<head>
<title>Mocha</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../../mocha.css" />
<script src="../../mocha.js"></script>
<script>mocha.setup('bdd')</script>
<script>
function assert(expr, msg) {
if (!expr) throw new Error(msg || 'failed');
}
</script>
<script src="ui.js"></script>
</head>
<body>
<div id="mocha"></div>
<script>
(function(window) {
var location = window.location;
mocha.checkLeaks();
var runner = mocha.run();
var count = 0;
setTimeout(run, 1000);

function run() {
var regex = [
'', // All
'%5C%24%5C.jQuery', // $.jQuery
'%5C%24%5C.jQuery%20%5C.on%5C(%5C)', // $.jQuery .on()
]
, qs = location.search.replace('?grep=', '')
, re = ~qs.indexOf('%') ? qs : decodeURIComponent(qs)
, grep = regex[regex.indexOf(re) + 1]
, anchors = document.getElementsByTagName('a');

// Locate first 'a' element w/ matching grep param; click it
for (var i = 0; i < anchors.length; i++) {
if (anchors[i].href && anchors[i].href.indexOf(grep) > -1)
return void anchors[i].click();
}
}
})(window);
</script>
</body>
</html>
31 changes: 31 additions & 0 deletions test/browser/ui.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// test titles containing regex-conflicting characters

// leading $
describe('$.jQuery', function() {
// parens
describe('.on()', function () {
it('should set an event', function() {
assert(true);
});
});

describe('.off()', function () {
it('should remove an event', function () {

});
});
});

// another generic describe block to verify it is absent
// when greeping on $.jQuery
describe('@Array', function() {
it('.pop()', function() {
assert(true);
});
it('.push()', function() {
assert(true);
});
it('.length', function() {
assert(true);
});
});

0 comments on commit f652414

Please sign in to comment.