Fix #13274: Wrap sourceMap directive in multiline comments. Close gh-1143.

(cherry picked from commit ac93559eb9)
This commit is contained in:
Richard Gibson 2013-01-23 17:42:28 -05:00
parent fb0f295292
commit 487b703521
3 changed files with 42 additions and 2 deletions

View File

@ -409,7 +409,7 @@ module.exports = function( grunt ) {
nonascii = false;
distpaths.forEach(function( filename ) {
var i, c,
var i, c, map,
text = fs.readFileSync( filename, "utf8" );
// Ensure files use only \n for line endings, not \r\n
@ -438,7 +438,18 @@ module.exports = function( grunt ) {
text = text.replace( /"dist\//g, "\"" );
fs.writeFileSync( filename, text, "utf-8" );
} else if ( /\.min\.js$/.test( filename ) ) {
text = text.replace( /sourceMappingURL=dist\//, "sourceMappingURL=" );
// Wrap sourceMap directive in multiline comments (#13274)
text = text.replace( /\n?(\/\/@\s*sourceMappingURL=)(.*)/,
function( _, directive, path ) {
map = "\n" + directive + path.replace( /^dist\//, "" );
return "";
});
if ( map ) {
text = text.replace( /(^\/\*[\w\W]*?)\s*\*\/|$/,
function( _, comment ) {
return ( comment || "\n/*" ) + map + "\n*/";
});
}
fs.writeFileSync( filename, text, "utf-8" );
}

22
test/data/core/cc_on.html Normal file
View File

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script>
var cc_on = false,
errors = [];
/*@cc_on
cc_on = true;
@*/
window.onerror = function( errorMessage, filePath, lineNumber ) {
errors.push( errorMessage );
};
</script>
<script src="../../../dist/jquery.min.js"></script>
</head>
<body>
<script>
window.parent.iframeCallback( cc_on, errors, jQuery );
</script>
</body>
</html>

View File

@ -17,6 +17,13 @@ test("Basic requirements", function() {
ok( $, "$" );
});
testIframeWithCallback( "Conditional compilation compatibility (#13274)", "core/cc_on.html", function( cc_on, errors, $ ) {
expect( 3 );
ok( true, "JScript conditional compilation " + ( cc_on ? "supported" : "not supported" ) );
deepEqual( errors, [], "No errors" );
ok( $(), "jQuery executes" );
});
test("jQuery()", function() {
var elem, i,