From 8d9ac8bebaa2ff78954c5e41e1f26270a02ff87d Mon Sep 17 00:00:00 2001 From: ysandler Date: Tue, 8 Sep 2020 20:22:08 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9C=20fix:=20brightSCreen=20Entity=20c?= =?UTF-8?q?reated=20if=20dir=20exists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/.brightScreen/brightScreen.json | 4 +-- demo/.brightScreen/lessonOne/indexTest.js | 10 +++--- demo/.brightScreen/runningTest.js | 19 ++++++---- demo/userTestOne.js | 2 +- src/UseCases/setupBrightScreen.ts | 17 +++++++-- src/extension.ts | 42 ++++++++++++++--------- 6 files changed, 62 insertions(+), 32 deletions(-) diff --git a/demo/.brightScreen/brightScreen.json b/demo/.brightScreen/brightScreen.json index adbb380..1f43274 100644 --- a/demo/.brightScreen/brightScreen.json +++ b/demo/.brightScreen/brightScreen.json @@ -3,7 +3,7 @@ "documentationUrl": "https://brightScreen.io/courses/Test-Lesson/", "lessons": [ { - "name": "Lesson 1", + "name": "Lesson One", "location": "lessonOne/indexTest.js", "description": "Test Description for Lesson 1", "executionPrefix": "node", @@ -12,7 +12,7 @@ "documentationUrl": "https://brightScreen.io/courses/Test-Lesson/lesson-One/" }, { - "name": "Lesson 2", + "name": "Lesson Two", "location": "lessonTwo/indexTest.js", "description": "Test Description for Lesson 2", "executionPrefix": "node", diff --git a/demo/.brightScreen/lessonOne/indexTest.js b/demo/.brightScreen/lessonOne/indexTest.js index 97128b0..3dbf173 100644 --- a/demo/.brightScreen/lessonOne/indexTest.js +++ b/demo/.brightScreen/lessonOne/indexTest.js @@ -6,15 +6,17 @@ const test = () => { const testedValue = codeFromUser(input) if (testedValue === expectedOutput) { - console.log({ + const message = { didPass: true, message: 'Passed Test 1' - }) + } + console.log(JSON.stringify(message)) } else { - console.log({ + const message = { didPass: false, message: 'Did not return expected value' - }) + } + console.log(JSON.stringify(message)) } } diff --git a/demo/.brightScreen/runningTest.js b/demo/.brightScreen/runningTest.js index 6f23ea1..a95d377 100644 --- a/demo/.brightScreen/runningTest.js +++ b/demo/.brightScreen/runningTest.js @@ -1,7 +1,6 @@ const codeFromUser = function (props) { - return props + 'js' -} || function() { console.log('No User code Provided') } - + return props +} const test = () => { const input = 'yo' @@ -9,11 +8,17 @@ const test = () => { const testedValue = codeFromUser(input) if (testedValue === expectedOutput) { - console.log('Passed Test 2') - return true + const message = { + didPass: true, + message: 'Passed Test 1' + } + console.log(JSON.stringify(message)) } else { - console.log('Failed Test Two') - return false + const message = { + didPass: false, + message: 'Did not return expected value' + } + console.log(JSON.stringify(message)) } } diff --git a/demo/userTestOne.js b/demo/userTestOne.js index 34c0547..c5de357 100644 --- a/demo/userTestOne.js +++ b/demo/userTestOne.js @@ -1,3 +1,3 @@ function (props) { - return props + 'js' + return props } \ No newline at end of file diff --git a/src/UseCases/setupBrightScreen.ts b/src/UseCases/setupBrightScreen.ts index 954d623..156ae79 100644 --- a/src/UseCases/setupBrightScreen.ts +++ b/src/UseCases/setupBrightScreen.ts @@ -3,19 +3,25 @@ import * as fs from 'fs' import * as path from 'path' import BrightScreen from '../Entities/BrightScreen' import LessonInterface from '../Interfaces/LessonInterface' +import LessonsProvider from './LessonsProvider' function setupBrightScreen (): void { const workspaceFolder: string = vscode.workspace.rootPath || '' let courseName: string let lessons: LessonInterface[] + let didBrightScreenExist: boolean = false try { const brightScreenPath = path.join(workspaceFolder, '.brightScreen') - const doesBrightScreenDirectoryExist: boolean = fs.existsSync(brightScreenPath) - if (!doesBrightScreenDirectoryExist) fs.mkdirSync(brightScreenPath) + didBrightScreenExist = fs.existsSync(brightScreenPath) + if (!didBrightScreenExist){ + fs.mkdirSync(brightScreenPath) + return + } } catch (err) { console.log(err) vscode.window.showErrorMessage('Could not create .brightScreen directory') + return } let brightScreenCourseConfig: any @@ -39,6 +45,13 @@ function setupBrightScreen (): void { courseName: courseName, lessons: lessons }) + + try { + vscode.window.registerTreeDataProvider('brightScreen', new LessonsProvider()) + } catch (err) { + console.log(err) + return + } vscode.window.showInformationMessage(`brightScreen has been configured for ${courseName}`) } diff --git a/src/extension.ts b/src/extension.ts index 6be7756..6c3b662 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2,10 +2,8 @@ import * as vscode from 'vscode' import * as fs from 'fs' import BrightScreen from './Entities/BrightScreen' import setupBrightScreen from './UseCases/setupBrightScreen' -import LessonsProvider from './UseCases/LessonsProvider' import LessonInterface from './Interfaces/LessonInterface' -import { spawn, exec } from 'child_process' -import { stderr } from 'process' +import { exec } from 'child_process' export function activate(context: vscode.ExtensionContext) { console.log('brightscreen is now active') @@ -13,19 +11,9 @@ export function activate(context: vscode.ExtensionContext) { let brightScreen: BrightScreen let workspaceFolder: string let lessons: LessonInterface[] + const outputChannel: vscode.OutputChannel = vscode.window.createOutputChannel('brightScreen') - setupBrightScreen() - brightScreen = BrightScreen.getInstance() - workspaceFolder = brightScreen.workspaceFolder - lessons = brightScreen.lessons - - try { - vscode.window.registerTreeDataProvider('brightScreen', new LessonsProvider()) - } catch (err) { - console.log(err) - } - - const startupBrightScreenCommand = vscode.commands.registerCommand('brightscreen.startBrightScreen', (value) => { + const startupBrightScreenCommand = vscode.commands.registerCommand('brightscreen.startBrightScreen', () => { setupBrightScreen() brightScreen = BrightScreen.getInstance() workspaceFolder = brightScreen.workspaceFolder @@ -82,7 +70,29 @@ export function activate(context: vscode.ExtensionContext) { console.log('exec error: ', error) } - console.log(stdout) + let output: { didPass: boolean, message: string } + try { + output = JSON.parse(stdout) + } catch (err) { + console.log(err) + outputChannel.appendLine('Problem reading code from active text editor. Make sure to focus on the code you wish to test.') + vscode.window.showErrorMessage(`Issue receiving test results from ${treeItemContext.label}`, 'Read More').then( selection => { + if (selection === 'Read More') outputChannel.show() + }) + return + } + + outputChannel.appendLine(`${treeItemContext.label}: ${output.message}`) + + if (output.didPass) { + vscode.window.showInformationMessage(`${treeItemContext.label} Passed!`, 'Read More').then( selection => { + if (selection === 'Read More') outputChannel.show() + }) + } else { + vscode.window.showErrorMessage(`${treeItemContext.label} Failed!`).then( selection => { + if (selection === 'Read More') outputChannel.show() + }) + } }) })