From e6c5ce114959fa5697a4a2f3624bb851f4b10b35 Mon Sep 17 00:00:00 2001 From: Oskar Hane Date: Wed, 23 Nov 2016 12:25:12 +0100 Subject: [PATCH 1/7] Use babel-runtime instead of babel-polyfill --- .babelrc | 3 ++- gulpfile.babel.js | 5 ++--- package.json | 6 +++++- src/v1/driver.js | 1 - src/v1/result.js | 3 --- src/v1/routing-driver.js | 1 - 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.babelrc b/.babelrc index 26a660ba5..b04518bd3 100644 --- a/.babelrc +++ b/.babelrc @@ -1,3 +1,4 @@ { - "presets": ["es2015", "stage-3"] + "presets": ["es2015", "stage-3"], + "plugins": ["transform-runtime"] } diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 9f4c20b16..05162f35b 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -16,7 +16,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -require("babel-polyfill"); var browserify = require('browserify'); var source = require('vinyl-source-stream'); @@ -100,7 +99,7 @@ gulp.task('build-browser-test', function(){ cache: {}, debug: true }).transform(babelify.configure({ - presets: ['es2015', 'stage-3'], ignore: /external/ + presets: ['es2015', 'stage-3'], plugins: ['transform-runtime'], ignore: /external/ })) .bundle(function(err, res){ cb(); @@ -117,7 +116,7 @@ gulp.task('build-browser-test', function(){ var buildNode = function(options) { return gulp.src(options.src) - .pipe(babel({presets: ['es2015', 'stage-3'], ignore: ['src/external/**/*.js']})) + .pipe(babel({presets: ['es2015', 'stage-3'], plugins: ['transform-runtime'], ignore: ['src/external/**/*.js']})) .pipe(gulp.dest(options.dest)) }; diff --git a/package.json b/package.json index 42046b4f2..d2a9bf789 100644 --- a/package.json +++ b/package.json @@ -20,9 +20,10 @@ "main": "lib/index.js", "devDependencies": { "babel-core": "^6.17.0", - "babel-polyfill": "^6.16.0", + "babel-plugin-transform-runtime": "^6.15.0", "babel-preset-es2015": "^6.16.0", "babel-preset-stage-3": "^6.17.0", + "babel-register": "^6.18.0", "babelify": "^7.3.0", "browserify": "^13.1.0", "esdoc": "^0.4.0", @@ -51,5 +52,8 @@ "through2": "~2.0.0", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.1.0" + }, + "dependencies": { + "babel-runtime": "^6.18.0" } } diff --git a/src/v1/driver.js b/src/v1/driver.js index 934048071..907a3bf1a 100644 --- a/src/v1/driver.js +++ b/src/v1/driver.js @@ -23,7 +23,6 @@ import Integer from './integer'; import {connect} from "./internal/connector"; import StreamObserver from './internal/stream-observer'; import {newError, SERVICE_UNAVAILABLE} from "./error"; -import "babel-polyfill"; let READ = 'READ', WRITE = 'WRITE'; /** diff --git a/src/v1/result.js b/src/v1/result.js index e94a90486..dd770a02c 100644 --- a/src/v1/result.js +++ b/src/v1/result.js @@ -19,9 +19,6 @@ import ResultSummary from './result-summary'; -// Ensure Promise is available -import "babel-polyfill"; - /** * A stream of {@link Record} representing the result of a statement. * @access public diff --git a/src/v1/routing-driver.js b/src/v1/routing-driver.js index 0cad5411b..d747e6a7b 100644 --- a/src/v1/routing-driver.js +++ b/src/v1/routing-driver.js @@ -23,7 +23,6 @@ import {newError, SERVICE_UNAVAILABLE, SESSION_EXPIRED} from "./error"; import RoundRobinArray from './internal/round-robin-array'; import {int} from './integer' import Integer from './integer' -import "babel-polyfill"; /** * A driver that supports routing in a core-edge cluster. From 8724a7575744f4ebefea2a49008c07b5135df59e Mon Sep 17 00:00:00 2001 From: Oskar Hane Date: Wed, 23 Nov 2016 15:23:28 +0100 Subject: [PATCH 2/7] Test driver package in sandbox --- gulpfile.babel.js | 11 ++++++- package.json | 2 ++ test/resources/test-package.json | 5 ++++ test/v1/package.test.js | 51 ++++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 test/resources/test-package.json create mode 100644 test/v1/package.test.js diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 05162f35b..5fae675e5 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -44,6 +44,8 @@ var childProcess = require("child_process"); var minimist = require('minimist'); var cucumber = require('gulp-cucumber'); var merge = require('merge-stream'); +var install = require("gulp-install"); +var rename = require("gulp-rename"); gulp.task('default', ["test"]); @@ -131,8 +133,15 @@ gulp.task('all', function(cb){ runSequence('nodejs', 'browser', cb); }); +gulp.task('install-driver-into-sandbox', ['nodejs'], function(){ + return gulp.src('./test/resources/test-package.json') + .pipe(rename('package.json')) + .pipe(gulp.dest('./build/sandbox')) + .pipe(install()) +}) + gulp.task('test', function(cb){ - runSequence('test-nodejs', 'test-browser', 'run-tck', function (err) { + runSequence('install-driver-into-sandbox', 'test-nodejs', 'test-browser', 'run-tck', function (err) { if (err) { var exitCode = 2; console.log('[FAIL] test task failed - exiting with code ' + exitCode); diff --git a/package.json b/package.json index d2a9bf789..7f5a278ed 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,10 @@ "gulp-decompress": "^1.2.0", "gulp-download": "^0.0.1", "gulp-if": "^1.2.5", + "gulp-install": "^0.6.0", "gulp-jasmine": "^2.1.0", "gulp-jasmine-browser": "^0.2.3", + "gulp-rename": "^1.2.2", "gulp-replace": "^0.5.4", "gulp-shell": "^0.4.3", "gulp-uglify": "^1.4.2", diff --git a/test/resources/test-package.json b/test/resources/test-package.json new file mode 100644 index 000000000..1c9c3705b --- /dev/null +++ b/test/resources/test-package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "neo4j-driver": "file:../../" + } +} diff --git a/test/v1/package.test.js b/test/v1/package.test.js new file mode 100644 index 000000000..6dd8d3154 --- /dev/null +++ b/test/v1/package.test.js @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2002-2016 "Neo Technology," + * Network Engine for Objects in Lund AB [http://neotechnology.com] + * + * This file is part of Neo4j. + * + * 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. + */ + +var neo4jv1 = require("../../build/sandbox/node_modules/neo4j-driver/lib/v1"); + +describe('Package', function() { + var driverGlobal, originalTimeout; + beforeAll(function () { + var neo4j = neo4jv1; + originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; + jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; + + //tag::construct-driver[] + var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j")); + //end::construct-driver[] + driverGlobal = driver; + }); + afterAll(function() { + jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; + driverGlobal.close(); + }); + + fit('should work work', function(done){ + var session = driverGlobal.session(); + session.run('RETURN 1').then(function(r) { + expect(1).toBe(1); + session.close(); + done(); + }).catch(function(e) { + console.log(e) + expect(1).toBe(2); + done(); + }) + }) +}) From 78ad15b05713e4d8c0490d7a86da6bee5a21c6c0 Mon Sep 17 00:00:00 2001 From: Oskar Hane Date: Wed, 23 Nov 2016 16:18:30 +0100 Subject: [PATCH 3/7] Try to create a npm install outside our working dir Because npm install finds parent directories --- gulpfile.babel.js | 4 +++- package.json | 1 + test/v1/package.test.js | 5 +++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 5fae675e5..e27bc5081 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -46,6 +46,7 @@ var cucumber = require('gulp-cucumber'); var merge = require('merge-stream'); var install = require("gulp-install"); var rename = require("gulp-rename"); +var del = require('del'); gulp.task('default', ["test"]); @@ -134,9 +135,10 @@ gulp.task('all', function(cb){ }); gulp.task('install-driver-into-sandbox', ['nodejs'], function(){ + del.sync([path.join(require('os').tmpdir(), 'sandbox')]) return gulp.src('./test/resources/test-package.json') .pipe(rename('package.json')) - .pipe(gulp.dest('./build/sandbox')) + .pipe(gulp.dest(path.join(require('os').tmpdir(), 'sandbox'))) .pipe(install()) }) diff --git a/package.json b/package.json index 7f5a278ed..3d1f3e62c 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "babel-register": "^6.18.0", "babelify": "^7.3.0", "browserify": "^13.1.0", + "del": "^2.2.2", "esdoc": "^0.4.0", "esdoc-importpath-plugin": "0.0.1", "glob": "^5.0.14", diff --git a/test/v1/package.test.js b/test/v1/package.test.js index 6dd8d3154..a0d76bd94 100644 --- a/test/v1/package.test.js +++ b/test/v1/package.test.js @@ -17,12 +17,13 @@ * limitations under the License. */ -var neo4jv1 = require("../../build/sandbox/node_modules/neo4j-driver/lib/v1"); +var path = require('path'); +var neo4jReq = require(path.join(require('os').tmpdir(), 'sandbox', 'node_modules/neo4j-driver/lib')); describe('Package', function() { var driverGlobal, originalTimeout; beforeAll(function () { - var neo4j = neo4jv1; + var neo4j = neo4jReq.v1; originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; From eab9604be49266f0b6834da5d0d68a44ac6babbf Mon Sep 17 00:00:00 2001 From: lutovich Date: Wed, 23 Nov 2016 17:53:42 +0100 Subject: [PATCH 4/7] Run package test in a temp directory --- gulpfile.babel.js | 23 ++++++++++++++++------- package.json | 2 ++ test/v1/package.test.js | 19 +++++++++---------- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index e27bc5081..273843c14 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -37,7 +37,7 @@ var watch = require('gulp-watch'); var batch = require('gulp-batch'); var replace = require('gulp-replace'); var decompress = require('gulp-decompress'); -var fs = require("fs"); +var fs = require("fs-extra"); var runSequence = require('run-sequence'); var path = require('path'); var childProcess = require("child_process"); @@ -47,6 +47,8 @@ var merge = require('merge-stream'); var install = require("gulp-install"); var rename = require("gulp-rename"); var del = require('del'); +var os = require('os'); +var file = require('gulp-file'); gulp.task('default', ["test"]); @@ -135,12 +137,19 @@ gulp.task('all', function(cb){ }); gulp.task('install-driver-into-sandbox', ['nodejs'], function(){ - del.sync([path.join(require('os').tmpdir(), 'sandbox')]) - return gulp.src('./test/resources/test-package.json') - .pipe(rename('package.json')) - .pipe(gulp.dest(path.join(require('os').tmpdir(), 'sandbox'))) - .pipe(install()) -}) + var testDir = path.join(os.tmpdir(), 'sandbox'); + fs.emptyDirSync(testDir); + + var packageJsonContent = JSON.stringify({ + "dependencies":{ + "neo4j-driver" : __dirname + } + }); + + return file('package.json', packageJsonContent, {src:true}) + .pipe(gulp.dest(testDir)) + .pipe(install()); +}); gulp.task('test', function(cb){ runSequence('install-driver-into-sandbox', 'test-nodejs', 'test-browser', 'run-tck', function (err) { diff --git a/package.json b/package.json index 3d1f3e62c..6f2040e03 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "del": "^2.2.2", "esdoc": "^0.4.0", "esdoc-importpath-plugin": "0.0.1", + "fs-extra": "^1.0.0", "glob": "^5.0.14", "gulp": "^3.9.1", "gulp-babel": "^6.1.2", @@ -37,6 +38,7 @@ "gulp-cucumber": "0.0.14", "gulp-decompress": "^1.2.0", "gulp-download": "^0.0.1", + "gulp-file": "^0.3.0", "gulp-if": "^1.2.5", "gulp-install": "^0.6.0", "gulp-jasmine": "^2.1.0", diff --git a/test/v1/package.test.js b/test/v1/package.test.js index a0d76bd94..aefe8a626 100644 --- a/test/v1/package.test.js +++ b/test/v1/package.test.js @@ -18,7 +18,8 @@ */ var path = require('path'); -var neo4jReq = require(path.join(require('os').tmpdir(), 'sandbox', 'node_modules/neo4j-driver/lib')); +var os = require('os'); +var neo4jReq = require(path.join(os.tmpdir(), 'sandbox', 'node_modules', 'neo4j-driver', 'lib')); describe('Package', function() { var driverGlobal, originalTimeout; @@ -27,9 +28,7 @@ describe('Package', function() { originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; - //tag::construct-driver[] var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j")); - //end::construct-driver[] driverGlobal = driver; }); afterAll(function() { @@ -37,16 +36,16 @@ describe('Package', function() { driverGlobal.close(); }); - fit('should work work', function(done){ + it('should work', function(done){ var session = driverGlobal.session(); - session.run('RETURN 1').then(function(r) { - expect(1).toBe(1); + session.run('RETURN 1 AS answer').then(function(result) { + expect(result.records.length).toBe(1); + expect(result.records[0].get('answer').toNumber()).toBe(1); session.close(); done(); }).catch(function(e) { - console.log(e) - expect(1).toBe(2); - done(); + console.log(e); + done.fail("Error in test") }) }) -}) +}); From 3900627bbc5453c0690a0f6aae8507d942581a62 Mon Sep 17 00:00:00 2001 From: lutovich Date: Wed, 23 Nov 2016 18:05:57 +0100 Subject: [PATCH 5/7] Cleanup unused deps and test resources --- gulpfile.babel.js | 3 +-- package.json | 2 -- test/resources/test-package.json | 5 ----- test/v1/package.test.js | 8 +++++--- 4 files changed, 6 insertions(+), 12 deletions(-) delete mode 100644 test/resources/test-package.json diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 273843c14..d76c4e5b7 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -45,8 +45,6 @@ var minimist = require('minimist'); var cucumber = require('gulp-cucumber'); var merge = require('merge-stream'); var install = require("gulp-install"); -var rename = require("gulp-rename"); -var del = require('del'); var os = require('os'); var file = require('gulp-file'); @@ -136,6 +134,7 @@ gulp.task('all', function(cb){ runSequence('nodejs', 'browser', cb); }); +// prepares directory for package.test.js gulp.task('install-driver-into-sandbox', ['nodejs'], function(){ var testDir = path.join(os.tmpdir(), 'sandbox'); fs.emptyDirSync(testDir); diff --git a/package.json b/package.json index 6f2040e03..97400a5a5 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "babel-register": "^6.18.0", "babelify": "^7.3.0", "browserify": "^13.1.0", - "del": "^2.2.2", "esdoc": "^0.4.0", "esdoc-importpath-plugin": "0.0.1", "fs-extra": "^1.0.0", @@ -43,7 +42,6 @@ "gulp-install": "^0.6.0", "gulp-jasmine": "^2.1.0", "gulp-jasmine-browser": "^0.2.3", - "gulp-rename": "^1.2.2", "gulp-replace": "^0.5.4", "gulp-shell": "^0.4.3", "gulp-uglify": "^1.4.2", diff --git a/test/resources/test-package.json b/test/resources/test-package.json deleted file mode 100644 index 1c9c3705b..000000000 --- a/test/resources/test-package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "neo4j-driver": "file:../../" - } -} diff --git a/test/v1/package.test.js b/test/v1/package.test.js index aefe8a626..b0617a524 100644 --- a/test/v1/package.test.js +++ b/test/v1/package.test.js @@ -22,15 +22,17 @@ var os = require('os'); var neo4jReq = require(path.join(os.tmpdir(), 'sandbox', 'node_modules', 'neo4j-driver', 'lib')); describe('Package', function() { + var driverGlobal, originalTimeout; + beforeAll(function () { - var neo4j = neo4jReq.v1; originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; - var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j")); - driverGlobal = driver; + var neo4j = neo4jReq.v1; + driverGlobal = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j")); }); + afterAll(function() { jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; driverGlobal.close(); From 5b8910eec657e1ee35170ba0ceff32a9599297f5 Mon Sep 17 00:00:00 2001 From: Oskar Hane Date: Thu, 24 Nov 2016 10:18:56 +0100 Subject: [PATCH 6/7] Run Package tests just in Node env That's where we'll see missing dependencies errors --- test/v1/package.test.js | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/test/v1/package.test.js b/test/v1/package.test.js index b0617a524..86b57a356 100644 --- a/test/v1/package.test.js +++ b/test/v1/package.test.js @@ -19,26 +19,29 @@ var path = require('path'); var os = require('os'); -var neo4jReq = require(path.join(os.tmpdir(), 'sandbox', 'node_modules', 'neo4j-driver', 'lib')); +var NodeChannel = require('../../lib/v1/internal/ch-node').default; describe('Package', function() { - - var driverGlobal, originalTimeout; - - beforeAll(function () { - originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; - jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; - - var neo4j = neo4jReq.v1; - driverGlobal = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j")); - }); - + var driverGlobal = {close: function() {}}; afterAll(function() { - jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; driverGlobal.close(); }); it('should work', function(done){ + var neo4jReq; + // Assuming we only run this test on NodeJS + if( !NodeChannel.available ) { + done(); + return; + } + + try { + neo4jReq = require(path.join(os.tmpdir(), 'sandbox', 'node_modules', 'neo4j-driver', 'lib')); + } catch(e) { + done.fail('Could not load sandbox package') + } + + driverGlobal = neo4jReq.v1.driver("bolt://localhost", neo4jReq.v1.auth.basic("neo4j", "neo4j")); var session = driverGlobal.session(); session.run('RETURN 1 AS answer').then(function(result) { expect(result.records.length).toBe(1); From eafce33703667247dc39f81c62cb5ac327fca93c Mon Sep 17 00:00:00 2001 From: Oskar Hane Date: Thu, 24 Nov 2016 10:36:49 +0100 Subject: [PATCH 7/7] Run 'install-driver-into-sandbox' prior to 'test-nodejs' task Otherwise just running `gulp test-nodejs` tests fail --- gulpfile.babel.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index d76c4e5b7..e0105ef86 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -151,7 +151,7 @@ gulp.task('install-driver-into-sandbox', ['nodejs'], function(){ }); gulp.task('test', function(cb){ - runSequence('install-driver-into-sandbox', 'test-nodejs', 'test-browser', 'run-tck', function (err) { + runSequence('test-nodejs', 'test-browser', 'run-tck', function (err) { if (err) { var exitCode = 2; console.log('[FAIL] test task failed - exiting with code ' + exitCode); @@ -161,7 +161,7 @@ gulp.task('test', function(cb){ }); }); -gulp.task('test-nodejs', ['nodejs'], function () { +gulp.task('test-nodejs', ['install-driver-into-sandbox'], function () { return gulp.src('test/**/*.test.js') .pipe(jasmine({ // reporter: new reporters.JUnitXmlReporter({