From f64a12a8e9c5f764c3a692f1a032736e008058b5 Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Sun, 7 Aug 2022 19:00:12 +0200 Subject: [PATCH] fix(MySQL): error with ANSI sql_mode --- src/main/libs/clients/MySQLClient.ts | 16 ++++++++-------- tests/app.spec.ts | 11 ++++++----- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/libs/clients/MySQLClient.ts b/src/main/libs/clients/MySQLClient.ts index 0aab8769..382149c3 100644 --- a/src/main/libs/clients/MySQLClient.ts +++ b/src/main/libs/clients/MySQLClient.ts @@ -192,14 +192,14 @@ export class MySQLClient extends AntaresCore { // ANSI_QUOTES check const [response] = await connection.query('SHOW GLOBAL VARIABLES LIKE \'%sql_mode%\''); - const sqlMode = response[0]?.Value?.split(','); - const hasAnsiQuotes = sqlMode.includes('ANSI_QUOTES'); + const sqlMode: string[] = response[0]?.Value?.split(','); + const hasAnsiQuotes = sqlMode.includes('ANSI') || sqlMode.includes('ANSI_QUOTES'); if (this._params.readonly) await connection.query('SET SESSION TRANSACTION READ ONLY'); if (hasAnsiQuotes) - await connection.query(`SET SESSION sql_mode = "${sqlMode.filter((m: string) => m !== 'ANSI_QUOTES').join(',')}"`); + await connection.query(`SET SESSION sql_mode = '${sqlMode.filter((m: string) => !['ANSI', 'ANSI_QUOTES'].includes(m)).join(',')}'`); return connection; } @@ -219,18 +219,18 @@ export class MySQLClient extends AntaresCore { // ANSI_QUOTES check const [res] = await connection.query('SHOW GLOBAL VARIABLES LIKE \'%sql_mode%\''); - const sqlMode = res[0]?.Value?.split(','); - const hasAnsiQuotes = sqlMode.includes('ANSI_QUOTES'); + const sqlMode: string[] = res[0]?.Value?.split(','); + const hasAnsiQuotes = sqlMode.includes('ANSI') || sqlMode.includes('ANSI_QUOTES'); if (hasAnsiQuotes) - await connection.query(`SET SESSION sql_mode = "${sqlMode.filter((m: string) => m !== 'ANSI_QUOTES').join(',')}"`); + await connection.query(`SET SESSION sql_mode = '${sqlMode.filter((m: string) => !['ANSI', 'ANSI_QUOTES'].includes(m)).join(',')}'`); connection.on('connection', conn => { if (this._params.readonly) conn.query('SET SESSION TRANSACTION READ ONLY'); if (hasAnsiQuotes) - conn.query(`SET SESSION sql_mode = "${sqlMode.filter((m: string) => m !== 'ANSI_QUOTES').join(',')}"`); + conn.query(`SET SESSION sql_mode = '${sqlMode.filter((m: string) => !['ANSI', 'ANSI_QUOTES'].includes(m)).join(',')}'`); }); return connection; @@ -1397,7 +1397,7 @@ export class MySQLClient extends AntaresCore { } async getVersion () { - const sql = 'SHOW VARIABLES LIKE "%vers%"'; + const sql = 'SHOW VARIABLES LIKE \'%vers%\''; const { rows } = await this.raw(sql); return rows.reduce((acc, curr) => { diff --git a/tests/app.spec.ts b/tests/app.spec.ts index 181767c3..47cb02f5 100644 --- a/tests/app.spec.ts +++ b/tests/app.spec.ts @@ -23,12 +23,13 @@ test('main window elements visibility', async () => { const visibleSelectors = [ // '#titlebar', '#window-content', - '#settingbar' - // '#footer' + '#settingbar', + '#footer' ]; - - for (const selector of visibleSelectors) - expect(await appWindow.isVisible(selector), `expect ${selector} visible`).toBe(true); + setTimeout(async () => { + for (const selector of visibleSelectors) + expect(await appWindow.isVisible(selector), `expect ${selector} visible`).toBe(true); + }, 3000); }); // test('SQLite connection', async () => {// FIXME: not working on GitHub Actions