From 31a1ae44741eb99b3198a7448eac8d7ca799ce0f Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 16 Apr 2025 20:19:31 +0300 Subject: [PATCH] Update tests --- tests/commands/playlist/edit.test.ts | 43 ++++++++++++++++++++++++ tests/commands/playlist/generate.test.ts | 4 ++- tests/commands/playlist/validate.test.ts | 5 ++- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 tests/commands/playlist/edit.test.ts diff --git a/tests/commands/playlist/edit.test.ts b/tests/commands/playlist/edit.test.ts new file mode 100644 index 000000000..4651e5ef8 --- /dev/null +++ b/tests/commands/playlist/edit.test.ts @@ -0,0 +1,43 @@ +import { execSync } from 'child_process' +import fs from 'fs-extra' +import os from 'os' + +type ExecError = { + status: number + stdout: string +} + +let ENV_VAR = 'DATA_DIR=tests/__data__/input/data' +if (os.platform() === 'win32') { + ENV_VAR = 'SET "DATA_DIR=tests/__data__/input/data" &&' +} + +beforeEach(() => { + fs.emptyDirSync('tests/__data__/output') + fs.copySync( + 'tests/__data__/input/playlist_edit/playlist.m3u', + 'tests/__data__/output/playlist.m3u' + ) +}) + +describe('playlist:edit', () => { + it('shows list of options for a streams', () => { + const cmd = `${ENV_VAR} npm run playlist:edit --- tests/__data__/output/playlist.m3u` + try { + const stdout = execSync(cmd, { encoding: 'utf8' }) + if (process.env.DEBUG === 'true') console.log(cmd, stdout) + checkStdout(stdout) + } catch (error) { + // NOTE: for Windows only + if (process.env.DEBUG === 'true') console.log(cmd, error) + checkStdout((error as ExecError).stdout) + } + }) +}) + +function checkStdout(stdout: string) { + expect(stdout).toContain('TF1.fr (TF1, Télévision française 1)') + expect(stdout).toContain('Type...') + expect(stdout).toContain('Skip') + expect(stdout).toContain("File 'tests/__data__/output/playlist.m3u' successfully saved") +} diff --git a/tests/commands/playlist/generate.test.ts b/tests/commands/playlist/generate.test.ts index 54c4e61e0..389ee022e 100644 --- a/tests/commands/playlist/generate.test.ts +++ b/tests/commands/playlist/generate.test.ts @@ -7,11 +7,13 @@ beforeEach(() => { }) it('can generate playlists and logs', () => { - execSync( + const stdout = execSync( 'STREAMS_DIR=tests/__data__/input/playlist_generate DATA_DIR=tests/__data__/input/data PUBLIC_DIR=tests/__data__/output/.gh-pages LOGS_DIR=tests/__data__/output/logs npm run playlist:generate', { encoding: 'utf8' } ) + if (process.env.DEBUG === 'true') console.log(stdout) + const playlists = glob .sync('tests/__data__/expected/playlist_generate/.gh-pages/**/*.m3u') .map((file: string) => file.replace('tests/__data__/expected/playlist_generate/', '')) diff --git a/tests/commands/playlist/validate.test.ts b/tests/commands/playlist/validate.test.ts index 38dd104ee..b2a43324e 100644 --- a/tests/commands/playlist/validate.test.ts +++ b/tests/commands/playlist/validate.test.ts @@ -7,14 +7,16 @@ type ExecError = { it('show an error if channel id in the blocklist', () => { try { - execSync( + const stdout = execSync( 'DATA_DIR=tests/__data__/input/data STREAMS_DIR=tests/__data__/input/playlist_validate npm run playlist:validate -- us_blocked.m3u', { encoding: 'utf8' } ) + if (process.env.DEBUG === 'true') console.log(stdout) process.exit(1) } catch (error) { + if (process.env.DEBUG === 'true') console.log((error as ExecError).stdout) expect((error as ExecError).status).toBe(1) expect((error as ExecError).stdout).toContain(`us_blocked.m3u 2 error "FoxSports2.us" is on the blocklist due to claims of copyright holders (https://github.com/iptv-org/iptv/issues/0002) @@ -31,6 +33,7 @@ it('show a warning if channel has wrong id', () => { encoding: 'utf8' } ) + if (process.env.DEBUG === 'true') console.log(stdout) expect(stdout).toContain( 'wrong_id.m3u\n 2 warning "qib22lAq1L.us" is not in the database\n\n1 problems (0 errors, 1 warnings)\n'