Skip to content

Commit b7b7f19

Browse files
author
Volodymyr Denshchykov
committed
added config for travis tests
1 parent a559fab commit b7b7f19

File tree

4 files changed

+233
-9
lines changed

4 files changed

+233
-9
lines changed

.travis.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
language: node_js
2+
3+
node_js:
4+
- '0.10'
5+
6+
before_install:
7+
- npm install -g grunt-cli
8+
- npm install -g bower
9+
- npm install -g cleverstack-cli
10+
- npm install ncp
11+
- npm install q
12+
13+
before_script:
14+
- mysql -e 'create database test_db;'
15+
- node tests/beforeTravisTests.js
16+
- export NODE_ENV=test && export NODE_PATH=./lib/:./modules/
17+
- cd testProject/backend
18+
19+
services:
20+
- mysql

config/database.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
test:
2+
adapter: mysql2
3+
database: test_db
4+
username: travis
5+
encoding: utf8

package.json

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
{
22
"name": "clever-csv",
3-
"version": "0.0.1",
3+
"version": "0.0.2",
44
"dependencies": {
5-
"q": "",
5+
"q": "1.0.0",
66
"lodash": "2.4.1",
7-
"sequelize": "1.7.0-beta8",
8-
"csv": "*",
9-
"levenshtein": "*",
10-
"async": "*"
7+
"sequelize": "1.7.0-rc9",
8+
"csv": "0.3.7",
9+
"levenshtein": "1.0.4",
10+
"async": "0.2.10"
11+
},
12+
"scripts": {
13+
"test": "grunt test:unit"
1114
},
1215
"author": {
1316
"name": "Clevertech",
@@ -32,8 +35,8 @@
3235
"url": "https://github.com/CleverStack/clever-csv/issues"
3336
},
3437
"devDependencies": {
35-
"chai": "*",
36-
"mocha": "*",
37-
"sinon": "*"
38+
"chai": "1.9.0",
39+
"mocha": "1.17.1",
40+
"sinon": "1.8.2"
3841
}
3942
}

tests/beforeTravisTests.js

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
var Q = require( 'q' )
2+
, spawn = require( 'child_process' ).spawn
3+
, path = require( 'path' )
4+
, fs = require( 'fs' )
5+
, ncp = require('ncp').ncp
6+
, mName = 'clever-csv'
7+
, prName = 'testProject';
8+
9+
//create test project
10+
function createProject ( step ) {
11+
var defered = Q.defer()
12+
, proc = spawn ( 'clever', [ 'init', '--allow-root', '--skip-protractor', prName ] );
13+
14+
console.log( 'step #' + step + ' - create test project - start\n' );
15+
16+
proc.stdout.on( 'data', function ( data ) {
17+
var str = data.toString();
18+
19+
if ( str.match( 'ing' ) !== null ) {
20+
console.log( str )
21+
}
22+
});
23+
24+
proc.stderr.on('data', function ( data ) {
25+
defered.reject ( 'Error in step #' + step + ' - ' + data.toString() + '\n' );
26+
});
27+
28+
proc.on( 'close', function ( code ) {
29+
console.log('step #' + step + ' - process exited with code ' + code + '\n');
30+
defered.resolve( ++step );
31+
});
32+
33+
return defered.promise;
34+
}
35+
36+
//install clever-orm module to test project
37+
function installORM ( step ) {
38+
var defered = Q.defer()
39+
, proc = spawn ( 'clever', [ 'install', 'clever-orm' ], { cwd: path.join( __dirname, '../', prName ) } );
40+
41+
console.log( 'step #' + step + ' - install clever-orm module - start\n' );
42+
43+
proc.stdout.on('data', function (data) {
44+
var str = data.toString()
45+
, objs = [
46+
{ reg: 'Database username' , write: 'travis\n' },
47+
{ reg: 'Database password' , write: '\n' },
48+
{ reg: 'Database name' , write: 'test_db\n' },
49+
{ reg: 'Database dialect' , write: '\n' },
50+
{ reg: 'Database port' , write: '3306\n' },
51+
{ reg: 'Database host' , write: '127.0.0.1\n' },
52+
];
53+
54+
if ( str.match( 'ing' ) !== null ) {
55+
console.log( str )
56+
}
57+
58+
objs.forEach ( function ( obj ) {
59+
if ( str.match( obj.reg ) !== null ) {
60+
proc.stdin.write( obj.write );
61+
}
62+
});
63+
});
64+
65+
proc.stderr.on( 'data', function ( data ) {
66+
defered.reject ( data.toString( 'Error in step #' + step + ' - ' + data.toString() + '\n' ) );
67+
});
68+
69+
proc.on( 'close', function ( code ) {
70+
console.log('step #' + step + ' - process exited with code ' + code + '\n' );
71+
defered.resolve( ++step );
72+
});
73+
74+
return defered.promise;
75+
}
76+
77+
//copy clever-scv module in test project
78+
function copyModule ( step ) {
79+
var defered = Q.defer()
80+
, fromDir = path.join( __dirname, '../' )
81+
, toDir = path.join( __dirname, '../', prName, 'backend', 'modules', mName )
82+
, options = {
83+
filter: function ( file ) { return file.match ( prName ) === null }
84+
};
85+
86+
console.log( 'step #' + step + ' - copy ' + mName + ' modyle in test project - start\n' );
87+
88+
ncp( fromDir, toDir, options, function ( err ) {
89+
if ( err ) {
90+
return defered.reject ( 'Error in step #' + step + ' - ' + err + '\n' );
91+
}
92+
93+
console.log('step #' + step + ' - process exited with code 0\n' );
94+
defered.resolve( ++step );
95+
});
96+
97+
return defered.promise;
98+
}
99+
100+
//create and update config files
101+
function configFiles( step ) {
102+
var deferred = Q.defer()
103+
, ormFile = path.join( __dirname, '../', prName, 'backend', 'modules', 'clever-orm', 'config', 'default.json' )
104+
, comFile = path.join( __dirname, '../', prName, 'backend', 'config', 'test.json' )
105+
, ormData = {
106+
"clever-orm": {
107+
"db": {
108+
"username": "travis",
109+
"password": "",
110+
"database": "test_db",
111+
"options": {
112+
"host": "127.0.0.1",
113+
"dialect": "mysql",
114+
"port": 3306
115+
},
116+
},
117+
"modelAssociations": {}
118+
}
119+
}
120+
, comData = {
121+
"environmentName": "TEST",
122+
"memcacheHost": "127.0.0.1:11211",
123+
"clever-orm": {
124+
"db": {
125+
"username": "travis",
126+
"password": "",
127+
"database": "test_db",
128+
"options": {
129+
"dialect": "mysql",
130+
"host": "127.0.0.1",
131+
"port": "3306"
132+
}
133+
}
134+
}
135+
};
136+
137+
console.log( 'step #' + step + ' - create and update config files - start\n' );
138+
139+
fs.writeFile ( ormFile, JSON.stringify ( ormData ), function ( err ) {
140+
141+
if ( err ) {
142+
return deferred.reject ( 'Error in step #' + step + ' - ' + err + '\n' );
143+
}
144+
145+
fs.writeFile ( comFile, JSON.stringify ( comData ), function ( err ) {
146+
147+
if ( err ) {
148+
return deferred.reject ( 'Error in step #' + step + ' - ' + err + '\n' );
149+
}
150+
151+
console.log('step #' + step + ' - process exited with code 0\n' );
152+
deferred.resolve( ++step );
153+
});
154+
});
155+
156+
return deferred.promise;
157+
}
158+
159+
//added clever-scv module in bundledDependencies
160+
function bundled( step ) {
161+
var deferred = Q.defer()
162+
, file = path.join( __dirname, '../', prName, 'backend', 'package.json' );
163+
164+
console.log( 'step #' + step + ' - added ' + mName + ' module in bundledDependencies\n' );
165+
166+
fs.readFile ( file, function ( err, data ) {
167+
168+
if ( err ) {
169+
return deferred.reject ( 'Error in step #' + step + ' - ' + err + '\n' );
170+
}
171+
172+
data = JSON.parse ( data );
173+
data.bundledDependencies.push ( mName );
174+
175+
fs.writeFile ( file, JSON.stringify ( data ), function ( err ) {
176+
177+
if ( err ) {
178+
return deferred.reject ( 'Error in step #' + step + ' - ' + err + '\n' );
179+
}
180+
181+
console.log('step #' + step + ' - process exited with code 0\n' );
182+
deferred.resolve( ++step );
183+
});
184+
});
185+
186+
return deferred.promise;
187+
}
188+
189+
createProject ( 1 )
190+
.then ( installORM )
191+
.then ( copyModule )
192+
.then ( configFiles )
193+
.then ( bundled )
194+
.fail ( function (err) {
195+
console.log('Error - ' + err );
196+
});

0 commit comments

Comments
 (0)