From 1cc7986f44a0a5ee91487598af67569819f28433 Mon Sep 17 00:00:00 2001 From: Lewis Moten Date: Mon, 3 Jun 2024 02:52:12 -0400 Subject: [PATCH 1/2] Only read JavaScript migrations --- config.js | 5 +++-- file.js | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) 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); From becfcec02b9ffdff9d64062517f34c0e4bec9f43 Mon Sep 17 00:00:00 2001 From: Lewis Moten Date: Mon, 3 Jun 2024 02:53:00 -0400 Subject: [PATCH 2/2] test only JavaScript files are read --- test/file.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 test/file.js 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(); + }); + }); + }); +});