blob: 2bd998f646814ac34190e3b9e4d11cbf36ee8454 [file]
/*
* Copyright DataStax, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
const assert = require("assert");
const path = require("path");
const fs = require("fs");
const licenseHeaderRegex = new RegExp(
`/\\*
\\* Copyright DataStax, Inc\\.
\\*
\\* Licensed under the Apache License, Version 2\\.0 \\(the "License"\\);
\\* you may not use this file except in compliance with the License\\.
\\* You may obtain a copy of the License at
\\*
\\* http://www\\.apache\\.org/licenses/LICENSE-2\\.0
\\*
\\* Unless required by applicable law or agreed to in writing, software
\\* distributed under the License is distributed on an "AS IS" BASIS,
\\* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\\.
\\* See the License for the specific language governing permissions and
\\* limitations under the License\\.
\\*/`
);
describe('All source files', function() {
this.timeout(5000);
it('should start with license header', function () {
// eslint-disable-next-line no-undef
const root = path.normalize(path.join(__dirname, '../../'));
// Files to capture and validate header on.
const candidateRE = /.*\.(js|ts)$/;
// List of directories to ignore, this may not be comprehensive depending on your local workspace.
const dirsToIgnoreRE = /(node_modules)|(\.git)|(\.idea)|(coverage)|(out)|(examples)/;
const filesToIgnoreRE = /(\/test\/unit\/typescript\/.*\.js)|(integer\.js)|(generated\.(?:js|ts))/;
function validateLicenses(dir) {
fs.readdirSync(dir).forEach(function(file) {
const filePath = path.join(dir, file);
if (fs.statSync(filePath).isDirectory() && !file.match(dirsToIgnoreRE)) {
validateLicenses(filePath);
}
else if (file.charAt(0) !== '.' && file.match(candidateRE) && !filePath.match(filesToIgnoreRE)) {
const data = fs.readFileSync(filePath, 'utf8');
assert.ok(licenseHeaderRegex.test(data), 'Beginning of ' + filePath + ' does not start with license header.');
}
});
}
validateLicenses(root);
});
});