diff --git a/.DS_Store b/.DS_Store index 0965197..9e19124 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/package.json b/package.json index c377edf..060c867 100644 --- a/package.json +++ b/package.json @@ -96,17 +96,17 @@ { "command": "flutter-coverage.runTestCoverage", "when": "view == flutter-coverage", - "group": "navigation" + "group": "navigation@1" }, { "command": "flutter-coverage.clearCoverage", "when": "view == flutter-coverage", - "group": "navigation" + "group": "navigation@2" }, { "command": "flutter-coverage.refresh", "when": "view == flutter-coverage", - "group": "navigation" + "group": "navigation@3" } ], "view/item/context": [ diff --git a/src/data-provider.ts b/src/data-provider.ts index 377633d..738d78b 100644 --- a/src/data-provider.ts +++ b/src/data-provider.ts @@ -2,6 +2,7 @@ import * as vscodeLogging from '@vscode-logging/logger'; import * as iopath from 'path'; import * as vscode from 'vscode'; import * as cp from 'child_process'; +import * as fs from 'fs'; import { ConfigStore } from './config-store'; import { CoverageParser } from './coverage-parser'; import { FilesLoader } from './files-loader'; @@ -150,12 +151,31 @@ export class FileCoverageDataProvider implements vscode.TreeDataProvider { - if (err) { - this.logger.error(err.toString()); - } - this.logger.info(out); - }); + if (fs.existsSync(rootProjectPath + '/test')) { + + vscode.window.withProgress({ + location: vscode.ProgressLocation.Notification, + title: "Running Test coverage...", + cancellable: true + }, (_, token) => { + token.onCancellationRequested(() => { + console.log("User canceled the long running operation"); + }); + + const result = new Promise((resolve, reject) => { + cp.exec(`cd ${rootProjectPath} && flutter test --coverage`, (err, out) => { + if (err) { + return reject(err); + } + return resolve(out); + }); + }); + + return result; + }); + } else { + this.logger.info('Directory not found'); + } } }