Skip to content

Commit

Permalink
Fixes #924, some files only have carriage returns, no newlines
Browse files Browse the repository at this point in the history
  • Loading branch information
jrburke committed Sep 26, 2016
1 parent 268fa77 commit cc7bfe7
Show file tree
Hide file tree
Showing 8 changed files with 75 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -8,6 +8,7 @@ build/tests/lib/anonUmdInteriorModules/main-built.js
build/tests/lib/appDirSrcOverwrite/www-built
build/tests/lib/arrow/main-built.js
build/tests/lib/bundlesConfig/built
build/tests/lib/carriageReturn/built.js
build/tests/lib/cjsTranslate/www-built
build/tests/lib/closureExterns/built
build/tests/lib/comments/built.js
Expand Down
11 changes: 11 additions & 0 deletions build/jslib/transform.js
Expand Up @@ -217,6 +217,17 @@ function (esprima, parse, logger, lang) {
//start.line is 1-based, not 0 based.
lineIndex = loc.start.line - 1,
line = contentLines[lineIndex];

if (!line) {
//In rare cases, file contains just \r instead of \r\n, so
//adjust the contentLines and try again.
//https://github.com/requirejs/r.js/issues/924
if (contents.indexOf('\r') !== -1) {
contentLines = contents.split('\r');
}
line = contentLines[lineIndex];
}

contentLines[lineIndex] = line.substring(0, startIndex) +
contentInsertion +
line.substring(startIndex,
Expand Down
18 changes: 18 additions & 0 deletions build/tests/builds.js
Expand Up @@ -2853,4 +2853,22 @@ define(['build', 'env!env/file', 'env', 'lang'], function (build, file, env, lan
);
doh.run();

//Test build with file that has no newlines just carriage returns.
//See https://github.com/requirejs/r.js/issues/924
doh.register("carriageReturn",
[
function carriageReturn(t) {
file.deleteFile("lib/carriageReturn/built.js");

build(["lib/carriageReturn/build.js"]);

t.is(nol(c("lib/carriageReturn/expected.js")),
nol(c("lib/carriageReturn/built.js")));
require._buildReset();
}

]
);
doh.run();

});
5 changes: 5 additions & 0 deletions build/tests/lib/carriageReturn/build.js
@@ -0,0 +1,5 @@
({
name: 'loginModule',
out: 'built.js',
optimize: 'none'
})
31 changes: 31 additions & 0 deletions build/tests/lib/carriageReturn/expected.js
@@ -0,0 +1,31 @@
define('modules/login/loginController',{
name: 'loginController'
});


define('modules/login/loginService',{
name: 'loginService'
});


/**
* This is the loginModule.
* The loginModule require {@link module:modules/login/loginController}, {@link module:modules/login/loginService}
* It also requires the ui.require, ngMaterial and ngMessages libs.
* @requires module:modules/login/loginController
* @requires module:modules/login/loginService
* @requires module:ui.require
* @requires module:ngMaterial
* @requires module:ngMessages
* @requires module:ngStorage
*/
define('loginModule',['modules/login/loginController',
'modules/login/loginService'],
function (loginController,
loginService) {
var loginModule = angular.module('loginModule', ['ui.router', 'ngMaterial', 'ngMessages', 'ngStorage']);
loginModule.controller('loginController', loginController);
loginModule.service('loginService', loginService);
return loginModule;
});

1 change: 1 addition & 0 deletions build/tests/lib/carriageReturn/loginModule.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

@@ -0,0 +1,4 @@
define({
name: 'loginController'
});

4 changes: 4 additions & 0 deletions build/tests/lib/carriageReturn/modules/login/loginService.js
@@ -0,0 +1,4 @@
define({
name: 'loginService'
});

0 comments on commit cc7bfe7

Please sign in to comment.