@@ -3,18 +3,18 @@ var path = require('path');
33var request = require ( 'request' ) ;
44var urlgrey = require ( 'urlgrey' ) ;
55var execSync = require ( 'child_process' ) . execSync ;
6- if ( ! execSync ) {
7- var exec = require ( 'execSync' ) . exec ;
8- var execSync = function ( cmd ) {
9- return exec ( cmd ) . stdout ;
10- } ;
11- }
126
137var detectProvider = require ( './detect' ) ;
148
15- var version = "v1.0.1" ;
9+ var version = 'v' + require ( '../package.json' ) . version ;
10+
11+ var patterns , more_patterns = '' ;
1612
17- var patterns = "-type f \\( -name '*coverage.*' " +
13+ var isWindows = process . platform . match ( / w i n 3 2 / ) || process . platform . match ( / w i n 6 4 / )
14+
15+ if ( ! isWindows ) {
16+ patterns
17+ = "-type f \\( -name '*coverage.*' " +
1818 "-or -name 'nosetests.xml' " +
1919 "-or -name 'jacoco*.xml' " +
2020 "-or -name 'clover.xml' " +
@@ -72,7 +72,68 @@ var patterns = "-type f \\( -name '*coverage.*' " +
7272 "-not -path '*/$bower_components/*' " +
7373 "-not -path '*/node_modules/*' " +
7474 "-not -path '*/conftest_*.c.gcov'" ;
75-
75+ }
76+ else {
77+ patterns
78+ = '/a-d /b /s *coverage.* ' +
79+ '/s nosetests.xml ' +
80+ '/s jacoco*.xml ' +
81+ '/s clover.xml ' +
82+ '/s report.xml ' +
83+ '/s cobertura.xml ' +
84+ '/s luacov.report.out ' +
85+ '/s lcov.info ' +
86+ '/s *.lcov ' +
87+ '/s gcov.info ' +
88+ '/s *.gcov ' +
89+ '/s *.lst' +
90+ '| findstr /i /v \\.sh$ ' +
91+ '| findstr /i /v \\.data$ ' +
92+ '| findstr /i /v \\.py$ ' +
93+ '| findstr /i /v \\.class$ ' +
94+ '| findstr /i /v \\.xcconfig$ ' +
95+ '| findstr /i /v Coverage\\.profdata$ ' +
96+ '| findstr /i /v phpunit-code-coverage\\.xml$ ' +
97+ '| findstr /i /v coverage\\.serialized$ ' +
98+ '| findstr /i /v \\.pyc$ ' +
99+ '| findstr /i /v \\.cfg$ ' +
100+ '| findstr /i /v \\.egg$ ' +
101+ '| findstr /i /v \\.whl$ ' +
102+ '| findstr /i /v \\.html$ ' +
103+ '| findstr /i /v \\.js$ ' +
104+ '| findstr /i /v \\.cpp$ ' +
105+ '| findstr /i /v coverage\\.jade$ ' +
106+ '| findstr /i /v include\\.lst$ ' +
107+ '| findstr /i /v inputFiles\\.lst$ ' +
108+ '| findstr /i /v createdFiles\\.lst$ ' +
109+ '| findstr /i /v coverage\\.html$ ' +
110+ '| findstr /i /v scoverage\\.measurements\\..* ' +
111+ '| findstr /i /v test_.*_coverage\\.txt ' +
112+ '| findstr /i /v \\vendor\\ ' +
113+ '| findstr /i /v \\htmlcov\\ ' +
114+ '| findstr /i /v \\home\\cainus\\ ' +
115+ '| findstr /i /v \\js\\generated\\coverage\\ ' +
116+ '| findstr /i /v \\virtualenv\\ ' +
117+ '| findstr /i /v \\virtualenvs\\ ' +
118+ '| findstr /i /v \\\\.virtualenv\\ ' +
119+ '| findstr /i /v \\\\.virtualenvs\\ ' +
120+ '| findstr /i /v \\\\.env\\ ' +
121+ '| findstr /i /v \\\\.envs\\ ' +
122+ '| findstr /i /v \\env\\ ' +
123+ '| findstr /i /v \\envs\\ ' +
124+ '| findstr /i /v \\\\.venv\\ ' +
125+ '| findstr /i /v \\\\.venvs\\ ' +
126+ '| findstr /i /v \\venv\\ ' +
127+ '| findstr /i /v \\venvs\\ ' +
128+ '| findstr /i /v \\\\.git\\ ' +
129+ '| findstr /i /v \\\\.hg\\ ' +
130+ '| findstr /i /v \\\\.tox\\ ' +
131+ '| findstr /i /v \\__pycache__\\ ' +
132+ '| findstr /i /v \\\\.egg-info* ' +
133+ '| findstr /i /v \\\\$bower_components\\ ' +
134+ '| findstr /i /v \\node_modules\\ ' +
135+ '| findstr /i /v \\conftest_.*\\.c\\.gcov ' ;
136+ }
76137
77138
78139var sendToCodecovV2 = function ( codecov_endpoint , query , upload_body , on_success , on_failure ) {
@@ -106,7 +167,7 @@ var sendToCodecovV3 = function(codecov_endpoint, query, upload_body, on_success,
106167 // Direct to S3
107168 request . post (
108169 {
109- url : urlgrey ( codecov_endpoint + '/upload/v3 ' ) . query ( query ) . toString ( ) ,
170+ url : urlgrey ( codecov_endpoint + '/upload/v4 ' ) . query ( query ) . toString ( ) ,
110171 body : '' ,
111172 headers : {
112173 'Content-Type' : 'text/plain' ,
@@ -123,7 +184,7 @@ var sendToCodecovV3 = function(codecov_endpoint, query, upload_body, on_success,
123184 url : result . split ( '\n' ) [ 1 ] ,
124185 body : upload_body ,
125186 headers : {
126- 'Content-Type' : 'plain/ text' ,
187+ 'Content-Type' : 'text/plain ' ,
127188 'x-amz-acl' : 'public-read'
128189 }
129190 } , function ( err , response , result ) {
@@ -186,6 +247,11 @@ var upload = function(args, on_success, on_failure){
186247 query . slug = args . options . slug ;
187248 }
188249
250+ var flags = ( args . options . flags || process . env . codecov_flags || process . env . CODECOV_FLAGS ) ;
251+ if ( flags ) {
252+ query . flags = flags ;
253+ }
254+
189255 var token = ( args . options . token || process . env . codecov_token || process . env . CODECOV_TOKEN ) ;
190256 if ( token ) {
191257 query . token = token ;
@@ -215,19 +281,30 @@ var upload = function(args, on_success, on_failure){
215281 }
216282
217283 // List git files
218- var root = args . options . root || query . root || '.' ;
284+ var root = path . resolve ( args . options . root || query . root || '.' ) ;
219285 console . log ( '==> Building file structure' ) ;
220- upload += execSync ( 'cd ' + root + ' && git ls-files || hg locate') . toString ( ) . trim ( ) + '\n<<<<<< network\n' ;
286+ upload += execSync ( 'git ls-files || hg locate' , { cwd : root } ) . toString ( ) . trim ( ) + '\n<<<<<< network\n' ;
221287
222288 // Make gcov reports
223289 if ( ( args . options . disable || '' ) . split ( ',' ) . indexOf ( 'gcov' ) === - 1 ) {
224290 try {
225291 console . log ( '==> Generating gcov reports (skip via --disable=gcov)' ) ;
226292 var gcg = args . options [ 'gcov-glob' ] || '' ;
227293 if ( gcg ) {
228- gcg = gcg . split ( ' ' ) . map ( function ( p ) { return "-not -path '" + p + "'" ; } ) . join ( ' ' ) ;
294+ if ( ! isWindows ) {
295+ gcg = gcg . split ( ' ' ) . map ( function ( p ) { return "-not -path '" + p + "'" ; } ) . join ( ' ' ) ;
296+ } else {
297+ gcg = gcg . split ( ' ' ) . map ( function ( p ) { return "^| findstr /i /v " + p ; } ) . join ( ' ' ) ;
298+ }
299+ }
300+ var gcov ;
301+ if ( ! isWindows ) {
302+ gcov = "find " + ( args . options [ 'gcov-root' ] || root ) + " -type f -name '*.gcno' " + gcg + " -exec " + ( args . options [ 'gcov-exec' ] || 'gcov' ) + " " + ( args . options [ 'gcov-args' ] || '' ) + " {} +" ;
303+ } else {
304+ // @TODO support for root
305+ // not straight forward due to nature of windows command dir
306+ gcov = "for /f \"delims=\" %g in ('dir /a-d /b /s *.gcno " + gcg + "') do " + ( args . options [ 'gcov-exec' ] || 'gcov' ) + " " + ( args . options [ 'gcov-args' ] || '' ) + " %g" ;
229307 }
230- var gcov = "find " + ( args . options [ 'gcov-root' ] || root ) + " -type f -name '*.gcno' " + gcg + " -exec " + ( args . options [ 'gcov-exec' ] || 'gcov' ) + " " + ( args . options [ 'gcov-args' ] || '' ) + " {} +" ;
231308 debug . push ( gcov ) ;
232309 console . log ( ' $ ' + gcov ) ;
233310 execSync ( gcov ) ;
@@ -239,11 +316,20 @@ var upload = function(args, on_success, on_failure){
239316 }
240317
241318 // Detect .bowerrc
242- var bowerrc = execSync ( 'cd ' + root + ' && test -f .bowerrc && cat .bowerrc || echo ""' ) . toString ( ) . trim ( ) , more_patterns = '' ;
319+ var bowerrc ;
320+ if ( ! isWindows ) {
321+ bowerrc = execSync ( 'test -f .bowerrc && cat .bowerrc || echo ""' , { cwd : root } ) . toString ( ) . trim ( ) ;
322+ } else {
323+ bowerrc = execSync ( 'if exist .bowerrc type .bowerrc' , { cwd : root } ) . toString ( ) . trim ( ) ;
324+ }
243325 if ( bowerrc ) {
244326 bowerrc = JSON . parse ( bowerrc ) . directory ;
245327 if ( bowerrc ) {
246- more_patterns = " -not -path '*/" + bowerrc . toString ( ) . replace ( / \/ $ / , '' ) + "/*'" ;
328+ if ( ! isWindows ) {
329+ more_patterns = " -not -path '*/" + bowerrc . toString ( ) . replace ( / \/ $ / , '' ) + "/*'" ;
330+ } else {
331+ more_patterns = '| findstr /i /v \\' + bowerrc . toString ( ) . replace ( / \/ $ / , '' ) + '\\' ;
332+ }
247333 }
248334 }
249335
@@ -265,7 +351,14 @@ var upload = function(args, on_success, on_failure){
265351 }
266352 } else if ( ( args . options . disable || '' ) . split ( ',' ) . indexOf ( 'search' ) === - 1 ) {
267353 console . log ( '==> Scanning for reports' ) ;
268- var _files = execSync ( 'find ' + root + ' ' + patterns + more_patterns ) . toString ( ) . trim ( ) . split ( '\n' ) ;
354+ var _files
355+ if ( ! isWindows ) {
356+ _files = execSync ( 'find ' + root + ' ' + patterns + more_patterns ) . toString ( ) . trim ( ) . split ( '\n' ) ;
357+ } else {
358+ // @TODO support for a root directory
359+ // It's not straightforward due to the nature of the dir command
360+ _files = execSync ( 'dir ' + patterns + more_patterns ) . toString ( ) . trim ( ) . split ( '\r\n' ) ;
361+ }
269362 if ( _files ) {
270363 for ( var i2 = _files . length - 1 ; i2 >= 0 ; i2 -- ) {
271364 file = _files [ i2 ] ;
0 commit comments