From c6b6dabbb9c0e2527166ffda0bff877fbf2c1593 Mon Sep 17 00:00:00 2001 From: Shivam Mathur Date: Tue, 6 Jul 2021 07:38:03 +0530 Subject: [PATCH] Refactor tests for tools using jest.Each --- __tests__/tools.test.ts | 1099 +++++++++++++++------------------------ 1 file changed, 431 insertions(+), 668 deletions(-) diff --git a/__tests__/tools.test.ts b/__tests__/tools.test.ts index ccbd635d..36468ccc 100644 --- a/__tests__/tools.test.ts +++ b/__tests__/tools.test.ts @@ -1,24 +1,32 @@ import * as tools from '../src/tools'; import * as utils from '../src/utils'; -function getData( - tool: string, - version: string, - php_version?: string, - os_version?: string -): Record { +interface IData { + domain?: string; + extension?: string; + os_version?: string; + php_version?: string; + repository?: string; + tool: string; + version: string; + version_parameter?: string; + version_prefix?: string; +} + +function getData(data: IData): Record { return { - tool: tool, - version: version, - php_version: php_version || '7.4', - os_version: os_version || 'linux', - extension: '.phar', + domain: data.domain || 'https://example.com', + extension: data.extension || '.phar', + os_version: data.os_version || 'linux', + php_version: data.php_version || '7.4', + repository: data.repository || 'user/tool', + tool: data.tool, + version: data.version, + version_parameter: data.version_parameter || '-V', + version_prefix: data.version_prefix || '', + github: 'https://github.com', prefix: 'releases', - repository: 'user/tool', - version_prefix: '', - verb: 'download', - domain: 'https://example.com', - github: 'https://github.com' + verb: 'download' }; } @@ -30,685 +38,440 @@ jest describe('Tools tests', () => { it('checking getToolSemver', async () => { - expect(await tools.getToolSemver(getData('tool', 'latest'))).toBe('1.2.3'); - }); - it('checking parseReleaseVersion', async () => { - expect(await tools.getToolVersion(getData('tool', 'latest'))).toBe( - 'latest' - ); - expect(await tools.getToolVersion(getData('tool', '1.2.3'))).toBe('1.2.3'); - expect(await tools.getToolVersion(getData('tool', '1.2'))).toBe('1.2.3'); - expect(await tools.getToolVersion(getData('tool', '^1.2.3'))).toBe('1.2.3'); - expect(await tools.getToolVersion(getData('tool', '>=1.2.3'))).toBe( - '1.2.3' - ); - expect(await tools.getToolVersion(getData('tool', '>1.2.3'))).toBe('1.2.3'); - expect(await tools.getToolVersion(getData('tool', '1.2.3-ALPHA'))).toBe( - '1.2.3-ALPHA' - ); - expect(await tools.getToolVersion(getData('tool', '1.2.3-alpha'))).toBe( - '1.2.3-alpha' - ); - expect(await tools.getToolVersion(getData('tool', '1.2.3-beta'))).toBe( - '1.2.3-beta' - ); - expect(await tools.getToolVersion(getData('tool', '1.2.3-rc'))).toBe( - '1.2.3-rc' - ); - expect(await tools.getToolVersion(getData('tool', '1.2.3-dev'))).toBe( - '1.2.3-dev' - ); - expect(await tools.getToolVersion(getData('tool', '1.2.3-alpha1'))).toBe( - '1.2.3-alpha1' - ); - expect(await tools.getToolVersion(getData('tool', '1.2.3-alpha.1'))).toBe( - '1.2.3-alpha.1' - ); + expect( + await tools.getToolSemver(getData({tool: 'tool', version: 'latest'})) + ).toBe('1.2.3'); }); - it('checking parseRelease', async () => { - let data = getData('tool', 'latest', '7.4', 'linux'); - data = await tools.parseRelease('tool', data); + it.each` + input | expected + ${'latest'} | ${'latest'} + ${'1.2.3'} | ${'1.2.3'} + ${'1.2'} | ${'1.2.3'} + ${'^1.2.3'} | ${'1.2.3'} + ${'>=1.2.3'} | ${'1.2.3'} + ${'>1.2.3'} | ${'1.2.3'} + ${'1.2.3-ALPHA'} | ${'1.2.3-ALPHA'} + ${'1.2.3-alpha'} | ${'1.2.3-alpha'} + ${'1.2.3-beta'} | ${'1.2.3-beta'} + ${'1.2.3-rc'} | ${'1.2.3-rc'} + ${'1.2.3-dev'} | ${'1.2.3-dev'} + ${'1.2.3-alpha1'} | ${'1.2.3-alpha1'} + ${'1.2.3-alpha.1'} | ${'1.2.3-alpha.1'} + `('checking getToolVersion: $input', async ({input, expected}) => { + expect( + await tools.getToolVersion(getData({tool: 'tool', version: input})) + ).toBe(expected); + }); + + it.each` + input | release | version + ${'tool'} | ${'tool'} | ${'latest'} + ${'alias:1.2.3'} | ${'tool:1.2.3'} | ${'1.2.3'} + ${'tool:1.2.3'} | ${'tool:1.2.3'} | ${'1.2.3'} + ${'tool:^1.2.3'} | ${'tool:^1.2.3'} | ${'1.2.3'} + ${'tool:>=1.2.3'} | ${'tool:>=1.2.3'} | ${'1.2.3'} + ${'tool:>1.2.3'} | ${'tool:>1.2.3'} | ${'1.2.3'} + ${'tool:1.2.3-ALPHA'} | ${'tool:1.2.3-ALPHA'} | ${'1.2.3-ALPHA'} + ${'tool:1.2.3-beta'} | ${'tool:1.2.3-beta'} | ${'1.2.3-beta'} + ${'tool:1.2.3-rc'} | ${'tool:1.2.3-rc'} | ${'1.2.3-rc'} + ${'tool:1.2.3-dev'} | ${'tool:1.2.3-dev'} | ${'1.2.3-dev'} + ${'tool:1.2.3-alpha1'} | ${'tool:1.2.3-alpha1'} | ${'1.2.3-alpha1'} + ${'tool:1.2.3-alpha.1'} | ${'tool:1.2.3-alpha.1'} | ${'1.2.3-alpha.1'} + ${'user/tool:^1.2.3'} | ${'tool:^1.2.3'} | ${'^1.2.3'} + `('checking parseRelease: $input', async ({input, release, version}) => { + const data = await tools.parseRelease( + input, + getData({tool: 'tool', version: 'latest'}) + ); expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool', - version: 'latest' - }); - data = await tools.parseRelease('alias:1.2.3', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:1.2.3', - version: '1.2.3' - }); - data = await tools.parseRelease('tool:1.2.3', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:1.2.3', - version: '1.2.3' - }); - data = await tools.parseRelease('tool:^1.2.3', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:^1.2.3', - version: '1.2.3' - }); - data = await tools.parseRelease('tool:>=1.2.3', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:>=1.2.3', - version: '1.2.3' - }); - data = await tools.parseRelease('tool:>1.2.3', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:>1.2.3', - version: '1.2.3' - }); - data = await tools.parseRelease('tool:1.2.3-ALPHA', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:1.2.3-ALPHA', - version: '1.2.3-ALPHA' - }); - data = await tools.parseRelease('tool:1.2.3-beta', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:1.2.3-beta', - version: '1.2.3-beta' - }); - data = await tools.parseRelease('tool:1.2.3-rc', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:1.2.3-rc', - version: '1.2.3-rc' - }); - data = await tools.parseRelease('tool:1.2.3-dev', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:1.2.3-dev', - version: '1.2.3-dev' - }); - data = await tools.parseRelease('tool:1.2.3-alpha1', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:1.2.3-alpha1', - version: '1.2.3-alpha1' - }); - data = await tools.parseRelease('tool:1.2.3-alpha.1', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:1.2.3-alpha.1', - version: '1.2.3-alpha.1' - }); - data = await tools.parseRelease('user/tool:^1.2.3', data); - expect({release: data.release, version: data.version}).toStrictEqual({ - release: 'tool:^1.2.3', - version: '^1.2.3' + release: release, + version: version }); }); - it('checking getUrl', async () => { - const data = getData('tool', 'latest', '7.4', 'linux'); - expect(await tools.getUrl(data)).toBe( - 'https://example.com/user/tool/releases/latest/download/tool.phar' - ); - data['version'] = '1.2.3'; - expect(await tools.getUrl(data)).toBe( - 'https://example.com/user/tool/releases/download/1.2.3/tool.phar' - ); - data['version_prefix'] = 'v'; - expect(await tools.getUrl(data)).toBe( - 'https://example.com/user/tool/releases/download/v1.2.3/tool.phar' - ); - }); - - it('checking addPhive', async () => { - const data = getData('phive', '1.2.3', '7.4', 'linux'); - data['domain'] = 'https://phar.io'; - data['repository'] = 'phar-io/phive'; - data['version_parameter'] = 'status'; - - let script: string = await tools.addPhive(data); - expect(script).toContain( - 'add_tool https://github.com/phar-io/phive/releases/download/1.2.3/phive-1.2.3.phar phive' - ); - - data['version'] = 'latest'; - data['php_version'] = '5.5'; - data['os_version'] = 'win32'; - script = await tools.addPhive(data); - expect(script).toContain('Phive is not supported on PHP 5.5'); - - data['php_version'] = '5.6'; - script = await tools.addPhive(data); - expect(script).toContain( - 'Add-Tool https://github.com/phar-io/phive/releases/download/0.12.1/phive-0.12.1.phar phive' - ); - - data['php_version'] = '7.1'; - data['version'] = 'latest'; - script = await tools.addPhive(data); - expect(script).toContain( - 'Add-Tool https://github.com/phar-io/phive/releases/download/0.13.5/phive-0.13.5.phar phive' - ); - }); - - it('checking getPharUrl', async () => { - const data = getData('tool', 'latest', '7.4', 'linux'); - data['version_prefix'] = ''; - expect(await tools.getPharUrl(data)).toBe('https://example.com/tool.phar'); - data['version'] = '1.2.3'; - data['version_prefix'] = 'v'; - expect(await tools.getPharUrl(data)).toBe( - 'https://example.com/tool-v1.2.3.phar' - ); - }); - - it('checking addBlackfirePlayer', async () => { - const data = getData('blackfire-player', 'latest', '7.4', 'linux'); - data['domain'] = 'https://get.blackfire.io'; - data['version_prefix'] = 'v'; - expect(await tools.addBlackfirePlayer(data)).toContain( - 'https://get.blackfire.io/blackfire-player.phar' - ); - data['php_version'] = '5.5'; - expect(await tools.addBlackfirePlayer(data)).toContain( - 'https://get.blackfire.io/blackfire-player-v1.9.3.phar' - ); - data['php_version'] = '7.0'; - expect(await tools.addBlackfirePlayer(data)).toContain( - 'https://get.blackfire.io/blackfire-player-v1.9.3.phar' - ); - data['version'] = '1.2.3'; - expect(await tools.addBlackfirePlayer(data)).toContain( - 'https://get.blackfire.io/blackfire-player-v1.2.3.phar' - ); - }); - - it('checking addDeployer', async () => { - const data = getData('deployer', 'latest', '7.4', 'linux'); - data['domain'] = 'https://deployer.org'; - expect(await tools.addDeployer(data)).toContain( - 'https://deployer.org/deployer.phar' - ); - data['version'] = '1.2.3'; - expect(await tools.addDeployer(data)).toContain( - 'https://deployer.org/releases/v1.2.3/deployer.phar' - ); - }); - - it('checking filterList', async () => { - expect(await tools.filterList(['a', 'b'])).toStrictEqual([ - 'composer', - 'a', - 'b' - ]); - expect(await tools.filterList(['a', 'b', 'composer'])).toStrictEqual([ - 'composer', - 'a', - 'b' - ]); - expect(await tools.filterList(['a', 'b', 'composer:1.2'])).toStrictEqual([ - 'composer', - 'a', - 'b' - ]); - expect(await tools.filterList(['a', 'b', 'composer:1.2.3'])).toStrictEqual([ - 'composer:1.2.3', - 'a', - 'b' - ]); - expect(await tools.filterList(['a', 'b', 'composer:v1.2.3'])).toStrictEqual( + it.each([ + [ + ['a', 'b'], + ['composer', 'a', 'b'] + ], + [ + ['a', 'b', 'composer'], + ['composer', 'a', 'b'] + ], + [ + ['a', 'b', 'composer:1.2.3'], ['composer:1.2.3', 'a', 'b'] - ); - expect( - await tools.filterList(['a', 'b', 'composer:snapshot']) - ).toStrictEqual(['composer:snapshot', 'a', 'b']); - expect( - await tools.filterList(['a', 'b', 'composer:preview']) - ).toStrictEqual(['composer:preview', 'a', 'b']); - expect(await tools.filterList(['a', 'b', 'c', 'composer:1'])).toStrictEqual( - ['composer:1', 'a', 'b', 'c'] - ); - expect(await tools.filterList(['a', 'b', 'c', 'composer:2'])).toStrictEqual( - ['composer:2', 'a', 'b', 'c'] - ); - expect( - await tools.filterList(['a', 'b', 'c', 'composer:v1']) - ).toStrictEqual(['composer:1', 'a', 'b', 'c']); - expect( - await tools.filterList(['a', 'b', 'c', 'composer:v2']) - ).toStrictEqual(['composer:2', 'a', 'b', 'c']); + ], + [ + ['a', 'b', 'composer:v1.2.3'], + ['composer:1.2.3', 'a', 'b'] + ], + [ + ['a', 'b', 'composer:snapshot'], + ['composer:snapshot', 'a', 'b'] + ], + [ + ['a', 'b', 'composer:preview'], + ['composer:preview', 'a', 'b'] + ], + [ + ['a', 'b', 'composer:1'], + ['composer:1', 'a', 'b'] + ], + [ + ['a', 'b', 'composer:2'], + ['composer:2', 'a', 'b'] + ], + [ + ['a', 'b', 'composer:v1'], + ['composer:1', 'a', 'b'] + ], + [ + ['a', 'b', 'composer:v2'], + ['composer:2', 'a', 'b'] + ] + ])('checking filterList', async (input_list, filtered_list) => { + expect(await tools.filterList(input_list)).toStrictEqual(filtered_list); }); - it('checking addComposer', async () => { - const data = getData('composer', 'latest', '7.4', 'linux'); - data['domain'] = 'https://getcomposer.org'; - data['repository'] = 'composer/composer'; - expect(await tools.addComposer(data)).toContain( - 'https://getcomposer.org/composer-stable.phar' - ); - data['version'] = 'stable'; - expect(await tools.addComposer(data)).toContain( - 'https://getcomposer.org/composer-stable.phar' - ); - data['version'] = 'snapshot'; - expect(await tools.addComposer(data)).toContain( - 'https://getcomposer.org/composer.phar' - ); - data['version'] = 'preview'; - expect(await tools.addComposer(data)).toContain( - 'https://getcomposer.org/composer-preview.phar' - ); - data['version'] = '1'; - expect(await tools.addComposer(data)).toContain( - 'https://getcomposer.org/composer-1.phar' - ); - data['version'] = '2'; - expect(await tools.addComposer(data)).toContain( - 'https://getcomposer.org/composer-2.phar' - ); - data['version'] = '1.7.2'; - expect(await tools.addComposer(data)).toContain( - 'https://github.com/composer/composer/releases/download/1.7.2/composer.phar' - ); - expect(await tools.addComposer(data)).toContain( - 'https://getcomposer.org/composer-1.7.2.phar' - ); - data['version'] = '2.0.0-RC2'; - expect(await tools.addComposer(data)).toContain( - 'https://github.com/composer/composer/releases/download/2.0.0-RC2/composer.phar' - ); - expect(await tools.addComposer(data)).toContain( - 'https://getcomposer.org/composer-2.0.0-RC2.phar' - ); - data['version'] = 'wrong'; - expect(await tools.addComposer(data)).toContain( - 'https://getcomposer.org/composer-stable.phar' - ); - }); + it.each` + version | version_prefix | url_suffix + ${'latest'} | ${'v'} | ${'latest/download/tool.phar'} + ${'1.2.3'} | ${'v'} | ${'download/v1.2.3/tool.phar'} + ${'1.2.3'} | ${''} | ${'download/1.2.3/tool.phar'} + `( + 'checking getUrl: $version_prefix$version', + async ({version, version_prefix, url_suffix}) => { + const data = getData({ + tool: 'tool', + version: version, + version_prefix: version_prefix + }); + expect(await tools.getUrl(data)).toContain(url_suffix); + } + ); - it('checking addSymfony', async () => { - const data = getData('symfony', 'latest', '7.4', 'linux'); - expect(await tools.addSymfony(data)).toContain( - 'releases/latest/download/symfony_linux_amd64' - ); - data['version'] = '1.2.3'; - expect(await tools.addSymfony(data)).toContain( - 'releases/download/v1.2.3/symfony_linux_amd64' - ); - data['version'] = 'latest'; - data['os_version'] = 'darwin'; - expect(await tools.addSymfony(data)).toContain( - 'releases/latest/download/symfony_darwin_amd64' - ); - data['version'] = '1.2.3'; - expect(await tools.addSymfony(data)).toContain( - 'releases/download/v1.2.3/symfony_darwin_amd64' - ); - data['version'] = 'latest'; - data['os_version'] = 'win32'; - expect(await tools.addSymfony(data)).toContain( - 'releases/latest/download/symfony_windows_amd64' - ); - data['version'] = '1.2.3'; - expect(await tools.addSymfony(data)).toContain( - 'releases/download/v1.2.3/symfony_windows_amd64' - ); - data['os_version'] = 'openbsd'; - expect(await tools.addSymfony(data)).toContain( - 'Platform openbsd is not supported' - ); - }); + it.each` + version | version_prefix | url + ${'latest'} | ${''} | ${'https://example.com/tool.phar'} + ${'1.2.3'} | ${'v'} | ${'https://example.com/tool-v1.2.3.phar'} + `( + 'checking getPharUrl: $version_prefix$version', + async ({version, version_prefix, url}) => { + const data = getData({ + tool: 'tool', + version: version, + version_prefix: version_prefix + }); + expect(await tools.getPharUrl(data)).toBe(url); + } + ); - it('checking addWPCLI', async () => { - const data = getData('wp-cli', 'latest', '7.4', 'linux'); - data['repository'] = 'wp-cli/wp-cli'; - data['version_prefix'] = 'v'; - expect(await tools.addWPCLI(data)).toContain( - 'wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true' - ); - data['version'] = '2.4.0'; - expect(await tools.addWPCLI(data)).toContain( - 'wp-cli/wp-cli/releases/download/v2.4.0/wp-cli-2.4.0.phar' - ); - }); - - it('checking addArchive', async () => { - const data = getData('tool', 'latest', '7.4', 'linux'); + it.each` + os_version | script + ${'linux'} | ${'add_tool https://example.com/tool.phar tool "-v"'} + ${'darwin'} | ${'add_tool https://example.com/tool.phar tool "-v"'} + ${'win32'} | ${'Add-Tool https://example.com/tool.phar tool "-v"'} + ${'openbsd'} | ${'Platform openbsd is not supported'} + `('checking addPackage: $tool, $os_version', async ({os_version, script}) => { + const data = getData({ + tool: 'tool', + version: 'latest', + version_parameter: JSON.stringify('-v'), + os_version: os_version + }); data['url'] = 'https://example.com/tool.phar'; - data['version_parameter'] = JSON.stringify('-v'); - let script: string = await tools.addArchive(data); - expect(script).toContain( - 'add_tool https://example.com/tool.phar tool "-v"' - ); - data['os_version'] = 'darwin'; - script = await tools.addArchive(data); - expect(script).toContain( - 'add_tool https://example.com/tool.phar tool "-v"' - ); - data['os_version'] = 'win32'; - script = await tools.addArchive(data); - expect(script).toContain( - 'Add-Tool https://example.com/tool.phar tool "-v"' - ); - - data['os_version'] = 'openbsd'; - script = await tools.addArchive(data); - expect(script).toContain('Platform openbsd is not supported'); + expect(await tools.addArchive(data)).toContain(script); }); - it('checking addDevTools', async () => { - const data = getData('phpize', 'latest', '7.4', 'linux'); - let script: string = await tools.addDevTools(data); - expect(script).toContain('add_devtools phpize'); - - data['tool'] = 'php-config'; - script = await tools.addDevTools(data); - expect(script).toContain('add_devtools php-config'); - - data['tool'] = 'phpize'; - data['os_version'] = 'darwin'; - script = await tools.addDevTools(data); - expect(script).toContain('add_devtools phpize'); - - data['tool'] = 'php-config'; - script = await tools.addDevTools(data); - expect(script).toContain('add_devtools php-config'); - - data['tool'] = 'phpize'; - data['os_version'] = 'win32'; - script = await tools.addDevTools(data); - expect(script).toContain( - 'Add-Log "$tick" "phpize" "phpize is not a windows tool"' - ); - - data['tool'] = 'php-config'; - script = await tools.addDevTools(data); - expect(script).toContain( - 'Add-Log "$tick" "php-config" "php-config is not a windows tool"' - ); - - data['os_version'] = 'openbsd'; - script = await tools.addDevTools(data); - expect(script).toContain('Platform openbsd is not supported'); + it.each` + os_version | script + ${'linux'} | ${'add_composertool tool tool:1.2.3 user/'} + ${'darwin'} | ${'add_composertool tool tool:1.2.3 user/'} + ${'win32'} | ${'Add-Composertool tool tool:1.2.3 user/'} + ${'openbsd'} | ${'Platform openbsd is not supported'} + `('checking addPackage: $tool, $os_version', async ({os_version, script}) => { + const data = getData({ + tool: 'tool', + version: '1.2.3', + os_version: os_version + }); + data['release'] = [data['tool'], data['version']].join(':'); + expect(await tools.addPackage(data)).toContain(script); }); - it('checking addPackage', async () => { - const data = getData('tool', '1.2.3', '7.4', 'linux'); - data['release'] = 'tool:1.2.3'; - let script: string = await tools.addPackage(data); - expect(script).toContain('add_composertool tool tool:1.2.3 user/'); + it.each` + version | php_version | os_version | script + ${'latest'} | ${'7.4'} | ${'linux'} | ${'add_tool https://phar.io/releases/phive.phar phive'} + ${'1.2.3'} | ${'7.4'} | ${'darwin'} | ${'add_tool https://github.com/phar-io/phive/releases/download/1.2.3/phive-1.2.3.phar phive'} + ${'1.2.3'} | ${'7.1'} | ${'win32'} | ${'Add-Tool https://github.com/phar-io/phive/releases/download/0.13.5/phive-0.13.5.phar phive'} + ${'latest'} | ${'5.6'} | ${'win32'} | ${'Add-Tool https://github.com/phar-io/phive/releases/download/0.12.1/phive-0.12.1.phar phive'} + ${'latest'} | ${'5.5'} | ${'win32'} | ${'Phive is not supported on PHP 5.5'} + `( + 'checking addPhive: $version, $php_version, $os_version', + async ({version, php_version, os_version, script}) => { + const data = getData({ + tool: 'phive', + domain: 'https://phar.io', + repository: 'phar-io/phive', + version_parameter: 'status', + version: version, + php_version: php_version, + os_version: os_version + }); + script = await tools.addPhive(data); + expect(script).toContain(script); + } + ); - data['os_version'] = 'darwin'; - script = await tools.addPackage(data); - expect(script).toContain('add_composertool tool tool:1.2.3 user/'); + it.each` + version | php_version | url + ${'latest'} | ${'7.4'} | ${'https://get.blackfire.io/blackfire-player.phar'} + ${'1.2.3'} | ${'7.4'} | ${'https://get.blackfire.io/blackfire-player-v1.2.3.phar'} + ${'latest'} | ${'5.5'} | ${'https://get.blackfire.io/blackfire-player-v1.9.3.phar'} + ${'latest'} | ${'7.0'} | ${'https://get.blackfire.io/blackfire-player-v1.9.3.phar'} + `( + 'checking addBlackfirePlayer: $version, $php_version', + async ({version, php_version, url}) => { + const data = getData({ + tool: 'blackfire-player', + domain: 'https://get.blackfire.io', + version_prefix: 'v', + version: version, + php_version: php_version + }); + expect(await tools.addBlackfirePlayer(data)).toContain(url); + } + ); - data['os_version'] = 'win32'; - script = await tools.addPackage(data); - expect(script).toContain('Add-Composertool tool tool:1.2.3 user/'); - - data['os_version'] = 'openbsd'; - script = await tools.addPackage(data); - expect(script).toContain('Platform openbsd is not supported'); + it.each` + version | url + ${'latest'} | ${'https://deployer.org/deployer.phar'} + ${'1.2.3'} | ${'https://deployer.org/releases/v1.2.3/deployer.phar'} + `('checking addDeployer: $version', async ({version, url}) => { + const data = getData({ + tool: 'deployer', + domain: 'https://deployer.org', + version: version + }); + expect(await tools.addDeployer(data)).toContain(url); }); - it('checking addTools on linux', async () => { - const script: string = await tools.addTools( + it.each` + version | cache_url | source_url + ${'latest'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar'} | ${'https://getcomposer.org/composer-stable.phar'} + ${'stable'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar'} | ${'https://getcomposer.org/composer-stable.phar'} + ${'snapshot'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-snapshot.phar'} | ${'https://getcomposer.org/composer.phar'} + ${'preview'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-preview.phar'} | ${'https://getcomposer.org/composer-preview.phar'} + ${'1'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-1.phar'} | ${'https://getcomposer.org/composer-1.phar'} + ${'2'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-2.phar'} | ${'https://getcomposer.org/composer-2.phar'} + ${'1.2.3'} | ${'https://github.com/composer/composer/releases/download/1.2.3/composer.phar'} | ${'https://getcomposer.org/composer-1.2.3.phar'} + ${'1.2.3-RC1'} | ${'https://github.com/composer/composer/releases/download/1.2.3-RC1/composer.phar'} | ${'https://getcomposer.org/composer-1.2.3-RC1.phar'} + `( + 'checking addComposer: $version', + async ({version, cache_url, source_url}) => { + const data = getData({ + tool: 'composer', + domain: 'https://getcomposer.org', + repository: 'composer/composer', + version: version + }); + expect(await tools.addComposer(data)).toContain(cache_url); + expect(await tools.addComposer(data)).toContain(source_url); + } + ); + + it.each` + version | os_version | uri + ${'latest'} | ${'linux'} | ${'releases/latest/download/symfony_linux_amd64'} + ${'1.2.3'} | ${'linux'} | ${'releases/download/v1.2.3/symfony_linux_amd64'} + ${'latest'} | ${'darwin'} | ${'releases/latest/download/symfony_darwin_amd64'} + ${'1.2.3'} | ${'darwin'} | ${'releases/download/v1.2.3/symfony_darwin_amd64'} + ${'latest'} | ${'win32'} | ${'releases/latest/download/symfony_windows_amd64.exe'} + ${'1.2.3'} | ${'win32'} | ${'releases/download/v1.2.3/symfony_windows_amd64.exe'} + ${'latest'} | ${'openbsd'} | ${'Platform openbsd is not supported'} + `( + 'checking addSymfony: $version, $os_version', + async ({version, os_version, uri}) => { + const data = getData({ + tool: 'symfony', + php_version: '7.4', + version: version, + os_version: os_version + }); + expect(await tools.addSymfony(data)).toContain(uri); + } + ); + + it.each` + version | uri + ${'latest'} | ${'wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true'} + ${'1.2.3'} | ${'wp-cli/wp-cli/releases/download/v1.2.3/wp-cli-1.2.3.phar'} + `('checking addWPCLI: $version', async ({version, uri}) => { + const data = getData({ + tool: 'wp-cli', + repository: 'wp-cli/wp-cli', + php_version: '7.4', + version_prefix: 'v', + version: version + }); + expect(await tools.addWPCLI(data)).toContain(uri); + }); + + it.each` + tool | os_version | script + ${'phpize'} | ${'linux'} | ${'add_devtools phpize'} + ${'php-config'} | ${'linux'} | ${'add_devtools php-config'} + ${'phpize'} | ${'darwin'} | ${'add_devtools phpize'} + ${'php-config'} | ${'darwin'} | ${'add_devtools php-config'} + ${'phpize'} | ${'win32'} | ${'Add-Log "$tick" "phpize" "phpize is not a windows tool"'} + ${'php-config'} | ${'win32'} | ${'Add-Log "$tick" "php-config" "php-config is not a windows tool"'} + ${'phpize'} | ${'openbsd'} | ${'Platform openbsd is not supported'} + `( + 'checking addDevTools: $tool, $os_version', + async ({tool, os_version, script}) => { + const data = getData({ + version: '7.4', + tool: tool, + os_version: os_version + }); + expect(await tools.addDevTools(data)).toContain(script); + } + ); + + it.each([ + [ 'blackfire, blackfire-player, cs2pr, flex, grpc_php_plugin, php-cs-fixer, phplint, phpstan, phpunit, pecl, phing, phinx, phinx:1.2.3, phive, php-config, phpize, protoc, symfony, vapor, wp', - '7.4', - 'linux' - ); - expect(script).toContain('add_blackfire'); - expect(script).toContain( - 'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player "-V"' - ); - expect(script).toContain( - 'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer' - ); - expect(script).toContain( - 'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"' - ); - expect(script).toContain( - 'add_tool https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/latest/download/php-cs-fixer.phar php-cs-fixer "-V"' - ); - expect(script).toContain( - 'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan "-V"' - ); - expect(script).toContain( - 'add_tool https://www.phing.info/get/phing-latest.phar phing "-v"' - ); - expect(script).toContain( - 'add_tool https://phar.io/releases/phive.phar phive "status"' - ); - expect(script).toContain( - 'add_tool https://phar.phpunit.de/phpunit.phar phpunit "--version"' - ); - expect(script).toContain( - 'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_linux_amd64 symfony-cli "version"' - ); - expect(script).toContain( - 'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"' - ); - expect(script).toContain('add_protoc latest'); - expect(script).toContain('add_grpc_php_plugin latest'); - expect(script).toContain('add_pecl'); - expect(script).toContain('add_composertool flex flex symfony/'); - expect(script).toContain('add_composertool phinx phinx robmorgan/'); - expect(script).toContain('add_composertool phplint phplint overtrue/'); - expect(script).toContain('add_composertool phinx phinx:1.2.3 robmorgan/'); - expect(script).toContain('add_composertool vapor-cli vapor-cli laravel/'); - expect(script).toContain('add_devtools php-config'); - expect(script).toContain('add_devtools phpize'); + [ + 'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer', + 'add_blackfire', + 'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player "-V"', + 'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"', + 'add_composertool flex flex symfony/', + 'add_grpc_php_plugin latest', + 'add_tool https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/latest/download/php-cs-fixer.phar php-cs-fixer "-V"', + 'add_composertool phplint phplint overtrue/', + 'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan "-V"', + 'add_tool https://phar.phpunit.de/phpunit.phar phpunit "--version"', + 'add_pecl', + 'add_tool https://www.phing.info/get/phing-latest.phar phing "-v"', + 'add_composertool phinx phinx robmorgan/', + 'add_composertool phinx phinx:1.2.3 robmorgan/', + 'add_tool https://phar.io/releases/phive.phar phive "status"', + 'add_devtools php-config', + 'add_devtools phpize', + 'add_protoc latest', + 'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_linux_amd64 symfony-cli "version"', + 'add_composertool vapor-cli vapor-cli laravel/', + 'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"' + ] + ] + ])('checking addTools on linux', async (tools_csv, scripts) => { + const expected = await tools.addTools(tools_csv, '7.4', 'linux'); + scripts.forEach(script => { + expect(expected).toContain(script); + }); }); - it('checking addTools on darwin', async () => { - const listOfTools = [ - 'behat', - 'blackfire', - 'blackfire-player', - 'composer-normalize', - 'composer-require-checker', - 'composer-unused', - 'cs2pr:1.2.3', - 'flex', - 'grpc_php_plugin:1.2.3', - 'infection', - 'phan', - 'phan:2.7.2', - 'phing:1.2.3', - 'phinx', - 'phive:1.2.3', - 'php-config', - 'phpcbf', - 'phpcpd', - 'phpcs', - 'phpize', - 'phpmd', - 'phpspec', - 'protoc:v1.2.3', - 'psalm', - 'symfony-cli', - 'symfony:1.2.3', - 'vapor-cli', - 'wp-cli' - ]; - const script: string = await tools.addTools( - listOfTools.join(', '), - '7.4', - 'darwin' - ); - - expect(script).toContain('add_blackfire'); - expect(script).toContain( - 'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player "-V"' - ); - expect(script).toContain( - 'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer' - ); - expect(script).toContain( - 'add_tool https://github.com/ergebnis/composer-normalize/releases/latest/download/composer-normalize.phar composer-normalize "-V"' - ); - expect(script).toContain( - 'add_tool https://github.com/maglnet/ComposerRequireChecker/releases/latest/download/composer-require-checker.phar composer-require-checker "-V"' - ); - expect(script).toContain( - 'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/download/1.2.3/cs2pr cs2pr "-V"' - ); - expect(script).toContain( - 'add_tool https://github.com/infection/infection/releases/latest/download/infection.phar infection "-V"' - ); - expect(script).toContain( - 'add_tool https://github.com/phan/phan/releases/latest/download/phan.phar phan "-v"' - ); - expect(script).toContain( - 'add_tool https://www.phing.info/get/phing-1.2.3.phar phing "-v"' - ); - expect(script).toContain( - 'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar phpcs "--version"' - ); - expect(script).toContain( - 'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcbf.phar phpcbf "--version"' - ); - expect(script).toContain( - 'add_tool https://phar.phpunit.de/phpcpd.phar phpcpd "--version"' - ); - expect(script).toContain( - 'add_tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"' - ); - expect(script).toContain( - 'https://github.com/vimeo/psalm/releases/latest/download/psalm.phar psalm "-v"' - ); - expect(script).toContain('add_grpc_php_plugin 1.2.3'); - expect(script).toContain('add_protoc 1.2.3'); - expect(script).toContain('add_composertool behat behat behat/'); - expect(script).toContain('add_composertool phpspec phpspec phpspec/'); - expect(script).toContain('add_composertool vapor-cli vapor-cli laravel/'); - expect(script).toContain('add_composertool flex flex symfony/'); - expect(script).toContain('add_composertool phinx phinx robmorgan/'); - expect(script).toContain( - 'add_tool https://github.com/phan/phan/releases/download/2.7.2/phan.phar phan "-v"' - ); - expect(script).toContain( - 'add_tool https://github.com/phar-io/phive/releases/download/1.2.3/phive-1.2.3.phar phive' - ); - expect(script).toContain( - 'add_composertool composer-unused composer-unused icanhazstring/' - ); - expect(script).toContain( - 'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_darwin_amd64 symfony-cli "version"' - ); - expect(script).toContain( - 'add_tool https://github.com/symfony/cli/releases/download/v1.2.3/symfony_darwin_amd64 symfony-cli "version"' - ); - expect(script).toContain( - 'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"' - ); - expect(script).toContain('add_devtools phpize'); - expect(script).toContain('add_devtools php-config'); + it.each([ + [ + 'behat, blackfire, blackfire-player, composer-normalize, composer-require-checker, composer-unused, cs2pr:1.2.3, flex, grpc_php_plugin:1.2.3, infection, phan, phan:1.2.3, phing:1.2.3, phinx, phive:1.2.3, php-config, phpcbf, phpcpd, phpcs, phpize, phpmd, phpspec, protoc:v1.2.3, psalm, symfony-cli, symfony:1.2.3, vapor-cli, wp-cli', + [ + 'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer', + 'add_composertool behat behat behat/', + 'add_blackfire', + 'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player "-V"', + 'add_tool https://github.com/ergebnis/composer-normalize/releases/latest/download/composer-normalize.phar composer-normalize "-V"', + 'add_tool https://github.com/maglnet/ComposerRequireChecker/releases/latest/download/composer-require-checker.phar composer-require-checker "-V"', + 'add_composertool composer-unused composer-unused icanhazstring/', + 'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/download/1.2.3/cs2pr cs2pr "-V"', + 'add_composertool flex flex symfony/', + 'add_grpc_php_plugin 1.2.3', + 'add_tool https://github.com/infection/infection/releases/latest/download/infection.phar infection "-V"', + 'add_tool https://github.com/phan/phan/releases/latest/download/phan.phar phan "-v"', + 'add_tool https://github.com/phan/phan/releases/download/1.2.3/phan.phar phan "-v"', + 'add_tool https://www.phing.info/get/phing-1.2.3.phar phing "-v"', + 'add_composertool phinx phinx robmorgan/', + 'add_tool https://github.com/phar-io/phive/releases/download/1.2.3/phive-1.2.3.phar phive', + 'add_devtools php-config', + 'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcbf.phar phpcbf "--version"', + 'add_tool https://phar.phpunit.de/phpcpd.phar phpcpd "--version"', + 'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar phpcs "--version"', + 'add_devtools phpize', + 'add_tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"', + 'add_composertool phpspec phpspec phpspec/', + 'add_protoc 1.2.3', + 'add_tool https://github.com/vimeo/psalm/releases/latest/download/psalm.phar psalm "-v"', + 'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_darwin_amd64 symfony-cli "version"', + 'add_tool https://github.com/symfony/cli/releases/download/v1.2.3/symfony_darwin_amd64 symfony-cli "version"', + 'add_composertool vapor-cli vapor-cli laravel/', + 'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"' + ] + ] + ])('checking addTools on darwin', async (tools_csv, scripts) => { + const expected = await tools.addTools(tools_csv, '7.4', 'darwin'); + scripts.forEach(script => { + expect(expected).toContain(script); + }); }); - it('checking addTools on windows', async () => { - const listOfTools = [ - 'blackfire', - 'blackfire-player:1.8.1', - 'cs2pr', - 'deployer', - 'does_not_exist', - 'flex', - 'phinx', - 'phive:0.13.2', - 'php-config', - 'phpize', - 'phpmd', - 'symfony', - 'wp' - ]; - const script: string = await tools.addTools( - listOfTools.join(', '), - '7.4', - 'win32' - ); - - expect(script).toContain('Add-Blackfire'); - expect(script).toContain( - 'Add-Tool https://get.blackfire.io/blackfire-player-v1.8.1.phar blackfire-player "-V"' - ); - expect(script).toContain( - 'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer' - ); - expect(script).toContain( - 'Add-Tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"' - ); - expect(script).toContain('Add-Composertool flex flex symfony/'); - expect(script).toContain( - 'Add-Tool https://deployer.org/deployer.phar deployer "-V"' - ); - expect(script).toContain( - 'Add-Tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"' - ); - expect(script).toContain('Add-Composertool phinx phinx robmorgan/'); - expect(script).toContain( - 'Add-Tool https://github.com/phar-io/phive/releases/download/0.13.2/phive-0.13.2.phar phive "status"' - ); - expect(script).toContain( - 'Add-Tool https://github.com/symfony/cli/releases/latest/download/symfony_windows_amd64.exe symfony-cli "version"' - ); - expect(script).toContain( - 'Add-Tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"' - ); - expect(script).toContain('phpize is not a windows tool'); - expect(script).toContain('php-config is not a windows tool'); - expect(script).toContain('Tool does_not_exist is not supported'); + it.each([ + [ + 'blackfire, blackfire-player:1.2.3, cs2pr, deployer, does_not_exist, flex, phinx, phive:0.13.2, php-config, phpize, phpmd, symfony, wp', + [ + 'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer', + 'Add-Blackfire', + 'Add-Tool https://get.blackfire.io/blackfire-player-v1.2.3.phar blackfire-player "-V"', + 'Add-Tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"', + 'Add-Tool https://deployer.org/deployer.phar deployer "-V"', + 'Tool does_not_exist is not supported', + 'Add-Composertool flex flex symfony/', + 'Add-Composertool phinx phinx robmorgan/', + 'Add-Tool https://github.com/phar-io/phive/releases/download/0.13.2/phive-0.13.2.phar phive "status"', + 'php-config is not a windows tool', + 'phpize is not a windows tool', + 'Add-Tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"', + 'Add-Tool https://github.com/symfony/cli/releases/latest/download/symfony_windows_amd64.exe symfony-cli "version"', + 'Add-Tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"' + ] + ] + ])('checking addTools on Windows', async (tools_csv, scripts) => { + const expected = await tools.addTools(tools_csv, '7.4', 'win32'); + scripts.forEach(script => { + expect(expected).toContain(script); + }); }); - it('checking addTools with composer tool using user/tool as input', async () => { - const listOfTools = [ - 'composer:v1', - 'codeception/codeception', - 'prestissimo', - 'hirak/prestissimo', - 'composer-prefetcher', - 'narrowspark/automatic-composer-prefetcher', - 'robmorgan/phinx: ^1.2' - ]; - const script: string = await tools.addTools( - listOfTools.join(', '), - '7.4', - 'win32' - ); + it.each([ + [ + 'composer:v1, codeception/codeception, prestissimo, hirak/prestissimo, composer-prefetcher, narrowspark/automatic-composer-prefetcher, robmorgan/phinx: ^1.2', + [ + 'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-1.phar,https://getcomposer.org/composer-1.phar composer', + 'Add-Composertool codeception codeception codeception/', + 'Add-Composertool prestissimo prestissimo hirak/', + 'Add-Composertool automatic-composer-prefetcher automatic-composer-prefetcher narrowspark/', + 'Add-Composertool phinx phinx:^1.2 robmorgan/' + ] + ] + ])( + 'checking addTools with composer tool using user/tool as input', + async (tools_csv, scripts) => { + const expected = await tools.addTools(tools_csv, '7.4', 'win32'); + scripts.forEach(script => { + expect(expected).toContain(script); + }); + } + ); - expect(script).toContain( - 'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-1.phar,https://getcomposer.org/composer-1.phar composer' - ); - expect(script).toContain('Add-Composertool prestissimo prestissimo hirak/'); - expect(script).toContain('Add-Composertool phinx phinx:^1.2 robmorgan/'); - expect(script).toContain( - 'Add-Composertool automatic-composer-prefetcher automatic-composer-prefetcher narrowspark/' - ); - }); - it('checking composer setup', async () => { - const listOfTools = ['composer', 'composer:v1']; - - let script: string = await tools.addTools( - listOfTools.join(', '), - '7.4', - 'linux' - ); - - expect(script).toContain( - 'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-1.phar,https://getcomposer.org/composer-1.phar composer' - ); - - script = await tools.addTools('composer:preview', '7.4', 'linux'); - expect(script).toContain( - 'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-preview.phar,https://getcomposer.org/composer-preview.phar composer preview' - ); - script = await tools.addTools( - 'composer:v1, composer:preview, composer:snapshot', - '7.4', - 'linux' - ); - expect(script).toContain( - 'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-snapshot.phar,https://getcomposer.org/composer.phar composer snapshot' - ); - - script = await tools.addTools('none', '7.4', 'linux'); - expect(script).toStrictEqual(''); - - script = await tools.addTools('none, phpunit', '7.4', 'linux'); - expect(script).toStrictEqual( - '\nstep_log "Setup Tools"' + - '\nadd_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer latest\n' + - '\nadd_tool https://phar.phpunit.de/phpunit.phar phpunit "--version"' - ); + it.each` + tools_csv | script + ${'none'} | ${''} + ${'none, phpunit'} | ${'\nstep_log "Setup Tools"\nadd_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer latest\n\nadd_tool https://phar.phpunit.de/phpunit.phar phpunit "--version"'} + ${'composer:preview'} | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-preview.phar,https://getcomposer.org/composer-preview.phar composer preview'} + ${'composer, composer:v1'} | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-1.phar,https://getcomposer.org/composer-1.phar composer'} + ${'composer:v1, composer:preview, composer:snapshot'} | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-snapshot.phar,https://getcomposer.org/composer.phar composer snapshot'} + `('checking composer setup: $tools_csv', async ({tools_csv, script}) => { + expect(await tools.addTools(tools_csv, '7.4', 'linux')).toContain(script); }); });