[CI] test with 6.10 and 7.10, mongoDB 3.2 and 3.4 (#3787)

* Node modernization on CI

* Makes sure tests dont yeild unhandled promise rejections

* Adds small delay to startDB

* Adds mongodb service

* testing default

* stupid

* testing with silent nugget

* proper versions

* Single release step
This commit is contained in:
Florent Vilmart
2017-05-14 10:50:53 -04:00
committed by GitHub
parent f40019a326
commit ab5b759e26
5 changed files with 51 additions and 56 deletions

View File

@@ -1,9 +1,10 @@
language: node_js language: node_js
dist: trusty dist: trusty
node_js: node_js:
- '4.6' - '6.10'
- '6.1' - '7.10'
services: services:
- mongodb
- postgresql - postgresql
- redis-server - redis-server
- docker - docker
@@ -27,8 +28,8 @@ env:
global: global:
- COVERAGE_OPTION='./node_modules/.bin/nyc' - COVERAGE_OPTION='./node_modules/.bin/nyc'
matrix: matrix:
- MONGODB_VERSION=3.0.8 - MONGODB_VERSION=3.2.13
- MONGODB_VERSION=3.2.6 - MONGODB_VERSION=3.4.4
- PARSE_SERVER_TEST_DB=postgres - PARSE_SERVER_TEST_DB=postgres
- PARSE_SERVER_TEST_CACHE=redis - PARSE_SERVER_TEST_CACHE=redis
before_script: before_script:
@@ -36,6 +37,7 @@ before_script:
- psql -c 'create database parse_server_postgres_adapter_test_database;' -U postgres - psql -c 'create database parse_server_postgres_adapter_test_database;' -U postgres
- psql -c 'CREATE EXTENSION postgis;' -U postgres -d parse_server_postgres_adapter_test_database - psql -c 'CREATE EXTENSION postgis;' -U postgres -d parse_server_postgres_adapter_test_database
- psql -c 'CREATE EXTENSION postgis_topology;' -U postgres -d parse_server_postgres_adapter_test_database - psql -c 'CREATE EXTENSION postgis_topology;' -U postgres -d parse_server_postgres_adapter_test_database
- silent=1 mongodb-runner --start
after_script: after_script:
- bash <(curl -s https://codecov.io/bash) - bash <(curl -s https://codecov.io/bash)
@@ -43,8 +45,8 @@ jobs:
include: include:
# release on github latest branch # release on github latest branch
- stage: release - stage: release
node_js: '6.1' node_js: '6.10'
env: RELEASE=github-latest env:
before_script: skip before_script: skip
after_script: skip after_script: skip
script: skip script: skip
@@ -54,14 +56,6 @@ jobs:
script: ./resources/npm-git.sh script: ./resources/npm-git.sh
on: on:
branch: master branch: master
# release on npm
- stage: release
before_script: skip
after_script: skip
script: skip
node_js: '6.1'
env: RELEASE=npm
deploy:
- provider: npm - provider: npm
skip_cleanup: true skip_cleanup: true
email: email:

View File

@@ -2,7 +2,6 @@
// hungry/js/test/parse_acl_test.js // hungry/js/test/parse_acl_test.js
var rest = require('../src/rest'); var rest = require('../src/rest');
var Config = require('../src/Config'); var Config = require('../src/Config');
var config = new Config('test');
var auth = require('../src/Auth'); var auth = require('../src/Auth');
describe('Parse.ACL', () => { describe('Parse.ACL', () => {
@@ -1235,6 +1234,7 @@ describe('Parse.ACL', () => {
}); });
it('regression test #701', done => { it('regression test #701', done => {
const config = new Config('test');
var anonUser = { var anonUser = {
authData: { authData: {
anonymous: { anonymous: {
@@ -1248,6 +1248,7 @@ describe('Parse.ACL', () => {
var user = req.object; var user = req.object;
var acl = new Parse.ACL(user); var acl = new Parse.ACL(user);
user.setACL(acl); user.setACL(acl);
console.log('IN AFTER SAVE!');
user.save(null, {useMasterKey: true}).then(user => { user.save(null, {useMasterKey: true}).then(user => {
new Parse.Query('_User').get(user.objectId).then(() => { new Parse.Query('_User').get(user.objectId).then(() => {
fail('should not have fetched user without public read enabled'); fail('should not have fetched user without public read enabled');
@@ -1256,7 +1257,7 @@ describe('Parse.ACL', () => {
expect(error.code).toEqual(Parse.Error.OBJECT_NOT_FOUND); expect(error.code).toEqual(Parse.Error.OBJECT_NOT_FOUND);
done(); done();
}); });
}); }, done.fail);
} }
}); });

View File

@@ -51,7 +51,7 @@ if (process.env.PARSE_SERVER_TEST_DB === 'postgres') {
startDB = require('mongodb-runner/mocha/before').bind({ startDB = require('mongodb-runner/mocha/before').bind({
timeout: () => {}, timeout: () => {},
slow: () => {} slow: () => {}
}); })
stopDB = require('mongodb-runner/mocha/after'); stopDB = require('mongodb-runner/mocha/after');
databaseAdapter = new MongoStorageAdapter({ databaseAdapter = new MongoStorageAdapter({
uri: mongoURI, uri: mongoURI,
@@ -118,44 +118,40 @@ if (process.env.PARSE_SERVER_TEST_CACHE === 'redis') {
const openConnections = {}; const openConnections = {};
// Set up a default API server for testing with default configuration. // Set up a default API server for testing with default configuration.
var app = express(); var app;
var api = new ParseServer(defaultConfiguration); var api;
app.use('/1', api); var server;
app.use('/1', () => {
fail('should not call next');
});
var server = app.listen(port);
server.on('connection', connection => {
const key = `${connection.remoteAddress}:${connection.remotePort}`;
openConnections[key] = connection;
connection.on('close', () => { delete openConnections[key] });
});
// Allows testing specific configurations of Parse Server // Allows testing specific configurations of Parse Server
const reconfigureServer = changedConfiguration => { const reconfigureServer = changedConfiguration => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
server.close(() => { if (server) {
try { return server.close(() => {
const newConfiguration = Object.assign({}, defaultConfiguration, changedConfiguration, { server = undefined;
__indexBuildCompletionCallbackForTests: indexBuildPromise => indexBuildPromise.then(resolve, reject) reconfigureServer(changedConfiguration).then(resolve, reject);
}); });
cache.clear(); }
app = express(); try {
api = new ParseServer(newConfiguration); const newConfiguration = Object.assign({}, defaultConfiguration, changedConfiguration, {
api.use(require('./testing-routes').router); __indexBuildCompletionCallbackForTests: indexBuildPromise => indexBuildPromise.then(resolve, reject)
app.use('/1', api); });
app.use('/1', () => { cache.clear();
fail('should not call next'); app = express();
}); api = new ParseServer(newConfiguration);
server = app.listen(port); api.use(require('./testing-routes').router);
server.on('connection', connection => { app.use('/1', api);
const key = `${connection.remoteAddress}:${connection.remotePort}`; app.use('/1', () => {
openConnections[key] = connection; fail('should not call next');
connection.on('close', () => { delete openConnections[key] }); });
}); server = app.listen(port);
} catch(error) { server.on('connection', connection => {
reject(error); const key = `${connection.remoteAddress}:${connection.remotePort}`;
} openConnections[key] = connection;
}); connection.on('close', () => { delete openConnections[key] });
});
} catch(error) {
reject(error);
}
}); });
} }

View File

@@ -6,13 +6,14 @@ var Parse = require('parse/node').Parse;
var rest = require('../src/rest'); var rest = require('../src/rest');
var request = require('request'); var request = require('request');
var config = new Config('test'); let config;
const database = config.database; let database;
describe('rest create', () => { describe('rest create', () => {
beforeEach(() => { beforeEach(() => {
config = new Config('test'); config = new Config('test');
database = config.database;
}); });
it('handles _id', done => { it('handles _id', done => {

View File

@@ -5,7 +5,7 @@ var request = require('request');
var dd = require('deep-diff'); var dd = require('deep-diff');
var Config = require('../src/Config'); var Config = require('../src/Config');
var config = new Config('test'); var config;
var hasAllPODobject = () => { var hasAllPODobject = () => {
var obj = new Parse.Object('HasAllPOD'); var obj = new Parse.Object('HasAllPOD');
@@ -131,8 +131,11 @@ var masterKeyHeaders = {
}; };
describe('schemas', () => { describe('schemas', () => {
beforeEach(() => { beforeEach(() => {
config = new Config('test');
});
afterEach(() => {
config.database.schemaCache.clear(); config.database.schemaCache.clear();
}); });