diff --git a/config.js b/config.js index 3dea0db..2e7bb7b 100644 --- a/config.js +++ b/config.js @@ -1,4 +1,5 @@ module.exports = { - 'table' : 'mysql_migrations_347ertt3e', - 'migrations_types' : ['up', 'down'] + 'table': 'mysql_migrations_347ertt3e', + 'migrations_types': ['up', 'down'], + 'script_pattern': /\.(js|cjs|mjs)$/i }; diff --git a/file.js b/file.js index b7ebaff..88ef117 100644 --- a/file.js +++ b/file.js @@ -1,4 +1,5 @@ var fs = require("fs"); +var config = require('./config'); function validate_file_name(file_name) { var patt = /^[0-9a-zA-Z-_]+$/; @@ -13,6 +14,8 @@ function readFolder(path, cb) { throw err; } + files = files.filter(file => config.script_pattern.test(file)); + var schemaPath = files.indexOf("schema.sql"); if (schemaPath > -1) { files.splice(schemaPath, 1); diff --git a/test/file.js b/test/file.js new file mode 100644 index 0000000..be1403f --- /dev/null +++ b/test/file.js @@ -0,0 +1,39 @@ +var chai = require('chai'); +var fs = require('fs'); + +var testCommons = require('./test_commons'); +var assert = require('assert'); +var file = require('../file'); + +describe('file.js', function () { + before(function (done) { + testCommons(done); + }); + + context('readFolder', function () { + it('ignores text files', function (done) { + var name = 'fc0e8593-f0f0-45f0-8282-3c426836a486.txt'; + fs.writeFileSync(__dirname + '/migrations/' + name, "test content", { encoding: 'utf-8' }); + file.readFolder(__dirname + '/migrations', function (files) { + assert.ok(!files.includes(name), `Not contains ${name}`); + done(); + }); + }); + it('reads JavaScript files', function (done) { + var name = 'fc0e8593-f0f0-45f0-8282-3c426836a486.js'; + fs.writeFileSync(__dirname + '/migrations/' + name, "test content", { encoding: 'utf-8' }); + file.readFolder(__dirname + '/migrations', function (files) { + assert.ok(files.includes(name), `Contains ${name}`); + done(); + }); + }); + it('ignores schema.sql', function (done) { + var name = 'schema.sql'; + fs.writeFileSync(__dirname + '/migrations/' + name, "test content", { encoding: 'utf-8' }); + file.readFolder(__dirname + '/migrations', function (files) { + assert.ok(!files.includes(name), `Not contains ${name}`); + done(); + }); + }); + }); +});