@@ -6,12 +6,13 @@ const fs = require('fs')
6
6
const { fixParameters } = require ( '../command-helpers/gluegun' )
7
7
const semver = require ( 'semver' )
8
8
const { spawn, exec } = require ( 'child_process' )
9
+ const yaml = require ( 'js-yaml' )
9
10
10
11
const HELP = `
11
12
${ chalk . bold ( 'graph test' ) } ${ chalk . dim ( '[options]' ) } ${ chalk . bold ( '<datasource>' ) }
12
13
13
14
${ chalk . dim ( 'Options:' ) }
14
- -c, --coverage Run the tests in coverage mode. Works with v0.2.1 and above (0.2.2 and above in docker mode)
15
+ -c, --coverage Run the tests in coverage mode. Works with v0.2.1 and above
15
16
-d, --docker Run the tests in a docker container(Note: Please execute from the root folder of the subgraph)
16
17
-f --force Binary - overwrites folder + file when downloading. Docker - rebuilds the docker image
17
18
-h, --help Show usage information
@@ -145,16 +146,25 @@ function getPlatform(logsOpt) {
145
146
function runDocker ( coverageOpt , datasource , versionOpt , latestVersion , forceOpt , print ) {
146
147
// Remove binary-install-raw binaries, because docker has permission issues
147
148
// when building the docker images
148
- fs . rmSync ( "node_modules/binary-install-raw/bin" , { force : true , recursive : true } ) ;
149
+ fs . rmSync ( "./ node_modules/binary-install-raw/bin" , { force : true , recursive : true } ) ;
149
150
150
- let dir = 'tests/.docker' ;
151
+ let dockerDir = "" ;
151
152
152
- if ( ! fs . existsSync ( dir ) ) {
153
- fs . mkdirSync ( dir , { recursive : true } ) ;
153
+ try {
154
+ let doc = yaml . load ( fs . readFileSync ( 'subgraph.yaml' , 'utf8' ) )
155
+ testsFolder = doc . testsFolder || './tests'
156
+ dockerDir = testsFolder . endsWith ( '/' ) ? testsFolder + '.docker' : testsFolder + '/.docker'
157
+ } catch ( e ) {
158
+ print . error ( e ) ;
159
+ return
160
+ }
161
+
162
+ if ( ! fs . existsSync ( dockerDir ) ) {
163
+ fs . mkdirSync ( dockerDir , { recursive : true } ) ;
154
164
}
155
165
156
166
try {
157
- fs . writeFileSync ( `${ dir } /Dockerfile` , dockerfile ( versionOpt , latestVersion ) )
167
+ fs . writeFileSync ( `${ dockerDir } /Dockerfile` , dockerfile ( versionOpt , latestVersion ) )
158
168
print . info ( 'Successfully generated Dockerfile.' ) ;
159
169
} catch ( error ) {
160
170
print . info ( 'A problem occurred while generating the Dockerfile. Please attend to the errors below:' ) ;
@@ -200,14 +210,15 @@ function runDocker(coverageOpt, datasource, versionOpt, latestVersion, forceOpt,
200
210
// run a container from that image.
201
211
spawn (
202
212
'docker' ,
203
- [ 'build' , '-f ' , 'tests/.docker/ Dockerfile' , '-t' , 'matchstick' , '.' ] ,
213
+ [ 'build' , '--no-cache ' , '-f' , ` ${ dockerDir } / Dockerfile` , '-t' , 'matchstick' , '.' ] ,
204
214
{ stdio : 'inherit' }
205
215
) . on ( 'close' , code => {
206
216
if ( code === 0 ) {
207
217
spawn ( 'docker' , dockerRunOpts , { stdio : 'inherit' } ) ;
208
218
}
209
219
} )
210
220
} else {
221
+ print . info ( "Docker image already exists. Skipping `docker build` command." )
211
222
// Run the container from the existing matchstick docker image
212
223
spawn ( 'docker' , dockerRunOpts , { stdio : 'inherit' } ) ;
213
224
}
@@ -227,6 +238,7 @@ function dockerfile(versionOpt, latestVersion) {
227
238
RUN apt install -y git
228
239
RUN apt install -y postgresql
229
240
RUN apt install -y curl
241
+ RUN apt install -y cmake
230
242
RUN npm install -g @graphprotocol/graph-cli
231
243
232
244
# Download the latest linux binary
0 commit comments