diff --git a/test/common.js b/test/common.js index ef8197996..59d3d84d0 100644 --- a/test/common.js +++ b/test/common.js @@ -76,6 +76,14 @@ common.createFakeServer = function(options) { return new FakeServer(common.extend({}, options)); }; +common.detectNewline = function detectNewline(path) { + var newlines = fs.readFileSync(path, 'utf8').match(/(?:\r?\n)/g) || []; + var crlf = newlines.filter(function (nl) { return nl === '\r\n'; }).length; + var lf = newlines.length - crlf; + + return crlf > lf ? '\r\n' : '\n'; +}; + common.extend = function extend(dest, src) { for (var key in src) { dest[key] = src[key]; diff --git a/test/integration/connection/test-load-data-infile.js b/test/integration/connection/test-load-data-infile.js index 456d854e2..8803936e3 100644 --- a/test/integration/connection/test-load-data-infile.js +++ b/test/integration/connection/test-load-data-infile.js @@ -5,6 +5,7 @@ var fs = require('fs'); var badPath = common.fixtures + '/does_not_exist.csv'; var path = common.fixtures + '/data.csv'; var table = 'load_data_test'; +var newline = common.detectNewline(path); common.getTestConnection(function (err, connection) { assert.ifError(err); @@ -21,9 +22,11 @@ common.getTestConnection(function (err, connection) { var sql = 'LOAD DATA LOCAL INFILE ? INTO TABLE ?? CHARACTER SET utf8 ' + - 'FIELDS TERMINATED BY ? (id, title)'; + 'FIELDS TERMINATED BY ? ' + + 'LINES TERMINATED BY ? ' + + '(id, title)'; - connection.query(sql, [path, table, ','], function (err, result) { + connection.query(sql, [path, table, ',', newline], function (err, result) { assert.ifError(err); assert.equal(result.affectedRows, 5); }); @@ -40,7 +43,7 @@ common.getTestConnection(function (err, connection) { assert.equal(rows[4].title, 'this is a long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long string'); }); - connection.query(sql, [badPath, table, ','], function (err) { + connection.query(sql, [badPath, table, ',', newline], function (err) { assert.ok(err); assert.equal(err.code, 'ENOENT'); }); diff --git a/test/integration/connection/test-multiple-statements-load-data-infile.js b/test/integration/connection/test-multiple-statements-load-data-infile.js index dd9748eee..2916ecc64 100644 --- a/test/integration/connection/test-multiple-statements-load-data-infile.js +++ b/test/integration/connection/test-multiple-statements-load-data-infile.js @@ -2,8 +2,9 @@ var assert = require('assert'); var common = require('../../common'); var fs = require('fs'); -var path = common.fixtures + '/data.csv'; -var table = 'multi_load_data_test'; +var path = common.fixtures + '/data.csv'; +var table = 'multi_load_data_test'; +var newline = common.detectNewline(path); common.getTestConnection({multipleStatements: true}, function (err, connection) { assert.ifError(err); @@ -20,11 +21,13 @@ common.getTestConnection({multipleStatements: true}, function (err, connection) var stmt = 'LOAD DATA LOCAL INFILE ? INTO TABLE ?? CHARACTER SET utf8 ' + - 'FIELDS TERMINATED BY ? (id, title)'; + 'FIELDS TERMINATED BY ? ' + + 'LINES TERMINATED BY ? ' + + '(id, title)'; var sql = - connection.format(stmt, [path, table, ',']) + ';' + - connection.format(stmt, [path, table, ',']) + ';'; + connection.format(stmt, [path, table, ',', newline]) + ';' + + connection.format(stmt, [path, table, ',', newline]) + ';'; connection.query(sql, function (err, results) { assert.ifError(err);