Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Escape test/suite title for re in html reporter
  • Loading branch information
benvinegar committed Jul 2, 2015
commit 3166e701a356d472656878ae78e5b819099f95d9
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);
});
});