From f5988dacf6a125a453eae6ad8381b3546093c8ba Mon Sep 17 00:00:00 2001 From: Joel von der Weid <joel.von-der-weid@hesge.ch> Date: Wed, 3 Jul 2024 13:36:42 +0200 Subject: [PATCH] Add allowSonarFailure feature --- .../subcommands/AssignmentCreateCommand.ts | 7 ++++--- NodeApp/src/managers/DojoBackendManager.ts | 15 ++++++++------- NodeApp/src/sharedByClients | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts b/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts index 4d5e781..cec139c 100644 --- a/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts +++ b/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts @@ -29,12 +29,13 @@ class AssignmentCreateCommand extends CommanderCommand { if (SharedConfig.sonar.enabled) { this.command.requiredOption('-s, --sonar', 'add sonar to the code checking process for assignment and exercises') .requiredOption('-d, --no-sonar', 'disable sonar for the code checking process for assignment and exercises') + .addOption(new Option('--sonar-strict', 'force the sonar gate to pass to validate the exercise results').default(false).implies({sonar: true})) .addOption(new Option('-g, --gate <gate>', 'quality gate for sonar').implies({sonar: true})) - .addOption(new Option('-p, --profile <profile...>', 'quality profiles for sonar').default([]).implies({sonar: true})); + .addOption(new Option('-p, --profile <profile...>', 'quality profiles for sonar').default([]).implies({sonar: true})) } } - protected async commandAction(options: { name: string, language: string, template?: string, members_id?: Array<number>, members_username?: Array<string>, clone?: string | boolean, sonar?: boolean, gate?: string, profile?: string[]}): Promise<void> { + protected async commandAction(options: { name: string, language: string, template?: string, members_id?: Array<number>, members_username?: Array<string>, clone?: string | boolean, sonar?: boolean, sonarStrict: boolean, gate?: string, profile?: string[]}): Promise<void> { let members!: Array<GitlabUser> | false; let templateIdOrNamespace: string | null = null; let assignment!: Assignment; @@ -129,7 +130,7 @@ class AssignmentCreateCommand extends CommanderCommand { console.log(chalk.cyan('Please wait while we are creating the assignment (approximately 10 seconds)...')); try { - assignment = await DojoBackendManager.createAssignment(options.name, options.language, members, templateIdOrNamespace, sonar, sonarGate, sonarProfiles); + assignment = await DojoBackendManager.createAssignment(options.name, options.language, members, templateIdOrNamespace, sonar, !options.sonarStrict, sonarGate, sonarProfiles); const oraInfo = (message: string) => { ora({ diff --git a/NodeApp/src/managers/DojoBackendManager.ts b/NodeApp/src/managers/DojoBackendManager.ts index 441f249..631aae0 100644 --- a/NodeApp/src/managers/DojoBackendManager.ts +++ b/NodeApp/src/managers/DojoBackendManager.ts @@ -83,7 +83,7 @@ class DojoBackendManager { } } - public async createAssignment(name: string, language: string, members: Array<GitlabUser>, templateIdOrNamespace: string | null, sonar: boolean = false, sonarGate: string | undefined = undefined, sonarProfiles: string[] = [], verbose: boolean = true): Promise<Assignment> { + public async createAssignment(name: string, language: string, members: Array<GitlabUser>, templateIdOrNamespace: string | null, sonar: boolean = false, allowSonarFailure: boolean = false, sonarGate: string | undefined = undefined, sonarProfiles: string[] = [], verbose: boolean = true): Promise<Assignment> { const spinner: ora.Ora = ora('Creating assignment...'); if ( verbose ) { @@ -92,12 +92,13 @@ class DojoBackendManager { try { const response = await axios.post<DojoBackendResponse<Assignment>>(this.getApiUrl(ApiRoute.ASSIGNMENT_CREATE), Object.assign({ - name : name, - language : language, - members : JSON.stringify(members), - useSonar : String(sonar), - sonarGate: sonarGate ?? '', - sonarProfiles : JSON.stringify(sonarProfiles), + name : name, + language : language, + members : JSON.stringify(members), + useSonar : String(sonar), + allowSonarFailure: String(allowSonarFailure), + sonarGate : sonarGate ?? '', + sonarProfiles : JSON.stringify(sonarProfiles), }, templateIdOrNamespace ? { template: templateIdOrNamespace } : {})); if ( verbose ) { diff --git a/NodeApp/src/sharedByClients b/NodeApp/src/sharedByClients index d15be9b..047bc2e 160000 --- a/NodeApp/src/sharedByClients +++ b/NodeApp/src/sharedByClients @@ -1 +1 @@ -Subproject commit d15be9b16181f5f172d51b13966e0e44bd34f55d +Subproject commit 047bc2e9e1c2ef6eed1c04806c2cba8e08bb1c3e -- GitLab