Steven Silvester 7 years ago
parent
commit
ecdd435e77
4 changed files with 7 additions and 137 deletions
  1. 1 1
      package.json
  2. 0 0
      scripts/ensure-integrity.js
  3. 0 136
      scripts/package-integrity.js
  4. 6 0
      scripts/travis_script.sh

+ 1 - 1
package.json

@@ -19,7 +19,7 @@
     "coverage": "lerna run coverage --stream",
     "docs": "lerna run docs",
     "get:dependency": "node scripts/get-dependency.js",
-    "integrity": "node scripts/package-integrity.js",
+    "integrity": "node scripts/ensure-integrity.js",
     "publish": "npm run clean:slate && lerna publish --force-publish=* -m \"Publish\"",
     "test": "cd test && npm test",
     "test:services": "cd packages/services && npm test && npm run test:integration && cd examples/node && python main.py",

+ 0 - 0
scripts/ensure-packages.js → scripts/ensure-integrity.js


+ 0 - 136
scripts/package-integrity.js

@@ -1,136 +0,0 @@
-/**
- * Verify the integrity of each package - ensure package json matches
- * imports
- */
-var readFileSync = require("fs").readFileSync;
-var writeFileSync = require("fs").writeFileSync;
-var ts = require("typescript");
-var glob = require("glob");
-var childProcess = require('child_process');
-var path = require('path');
-
-
-// Packages to ignore
-var IGNORE = ['..', '.', 'd3', 'vega', 'vega-lite', 'font-awesome', 'es6-promise', 'path'];
-
-
-/**
- * Extract the module imports from a TypeScript source file.
- */
-function getImports(sourceFile) {
-    var imports = [];
-    handleNode(sourceFile);
-
-    function handleNode(node) {
-        switch (node.kind) {
-            case ts.SyntaxKind.ImportDeclaration:
-                imports.push(node.moduleSpecifier.text);
-                break;
-            case ts.SyntaxKind.ImportEqualsDeclaration:
-                imports.push(node.moduleReference.expression.text);
-                break;
-        }
-        ts.forEachChild(node, handleNode);
-    }
-    return imports;
-}
-
-
-/**
- * Validate the integrity of a package in a directory.
- */
-function validate(dname) {
-    filenames = glob.sync(dname + '/src/*.ts*');
-    filenames = filenames.concat(glob.sync(dname + '/src/**/*.ts*'));
-
-    if (filenames.length == 0) {
-        return [];
-    }
-
-    var imports = [];
-
-    try {
-        var pkg = require(path.resolve(dname) + '/package.json');
-    } catch (e) {
-        return [];
-    }
-    var deps = pkg['dependencies'];
-
-    // Extract all of the imports from the TypeScript files.
-    filenames.forEach(fileName => {
-        var sourceFile = ts.createSourceFile(fileName, readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true);
-        imports = imports.concat(getImports(sourceFile));
-    });
-    var names = Array.from(new Set(imports)).sort();
-    names = names.map(function(name) {
-        var parts = name.split('/');
-        if (name.indexOf('@') === 0) {
-            return parts[0] + '/' + parts[1];
-        }
-        return parts[0];
-    })
-
-    var problems = [];
-    names.forEach(function(name) {
-        if (IGNORE.indexOf(name) !== -1) {
-            return;
-        }
-        if (!deps[name]) {
-            problems.push('Missing package: ' + name);
-        }
-    });
-    Object.keys(deps).forEach(function(name) {
-        if (versions[name]) {
-            var desired = '^' + versions[name];
-            if (deps[name] !== desired) {
-                problems.push('Bad core version: ' + name + ' should be ' + desired);
-            }
-        }
-        if (IGNORE.indexOf(name) !== -1) {
-            return;
-        }
-        if (names.indexOf(name) === -1) {
-            problems.push('Unused package: ' + name);
-        }
-    });
-    return problems;
-}
-
-// Find all of the packages.
-var basePath = path.resolve('.');
-var lernaConfig = require(path.join(basePath, 'lerna.json'));
-
-// Gather the versions of each package.
-var versions = {};
-lernaConfig.packages.forEach(function(spec) {
-    var dirs = glob.sync(path.join(basePath, spec));
-    dirs.forEach(function(dname) {
-        try {
-            var pkg = require(path.resolve(dname) + '/package.json');
-            versions[pkg['name']] = pkg['version'];
-        } catch (e) {
-            return;
-        }
-    });
-});
-
-var errors = {};
-
-// Validate each package.
-lernaConfig.packages.forEach(function(spec) {
-    var dirs = glob.sync(path.join(basePath, spec));
-    dirs.forEach(function(dname) {
-        var name = path.relative('.', dname);
-        var problems = validate(dname);
-        if (problems.length > 0) {
-            errors[name] = problems;
-        }
-    });
-});
-
-// Handle any errors.
-if (Object.keys(errors).length > 0) {
-    console.log('Package integrity failures:')
-    console.log(JSON.stringify(errors, null, 2));
-    process.exit(1);
-}

+ 6 - 0
scripts/travis_script.sh

@@ -109,6 +109,12 @@ if [[ $GROUP == other ]]; then
     npm install -g postcss-cli
     postcss packages/**/style/*.css --dir /tmp
 
+    # Make sure we can add and remove a sibling package.
+    npm run addsibling jupyterlab/tests/mockextension
+    npm run build
+    npm run removesibling mockextension
+    npm run build
+
     # Make sure we can make release assets
     npm run build:static
     if [ ! -f ./build/release_data.json ]; then