Skip to content

Commit

Permalink
Merge pull request #48 from shivammathur/develop
Browse files Browse the repository at this point in the history
1.3.7 - restructure code, fix extensions on 7.4 and add example
  • Loading branch information
shivammathur authored Oct 3, 2019
2 parents eaf140c + e97e822 commit 06929bd
Show file tree
Hide file tree
Showing 22 changed files with 393 additions and 270 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,11 @@ jobs:

```

### Examples

- [Laravel](./example/laravel.yml)


## :scroll: License

The scripts and documentation in this project are released under the [MIT License](LICENSE). This project has multiple [dependencies](https://github.com/shivammathur/setup-php/network/dependencies) and their licenses can be found in their respective repositories.
Expand Down
59 changes: 31 additions & 28 deletions __tests__/features.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@ describe('Features tests', () => {
'7.2',
'win32'
);
expect(win32).toContain(
'Install-PhpExtension xdebug -MinimumStability stable'
);
expect(win32).toContain(
'Install-PhpExtension pcov -MinimumStability stable'
);
expect(win32).toContain('Install-PhpExtension xdebug');
expect(win32).toContain('Install-PhpExtension pcov');
win32 = await features.addExtension('xdebug, pcov', '7.4', 'win32');
const extension_url: string =
'https://xdebug.org/files/php_xdebug-2.8.0beta2-7.4-vc15.dll';
expect(win32).toContain(
'Install-PhpExtension xdebug -Version 2.8 -MinimumStability beta'
'Invoke-WebRequest -Uri ' +
extension_url +
' -OutFile C:\\tools\\php\\ext\\php_xdebug.dll'
);
expect(win32).toContain('Install-PhpExtension pcov -MinimumStability beta');
expect(win32).toContain('Install-PhpExtension pcov');

win32 = await features.addExtension('does_not_exist', '7.2', 'win32');
expect(win32).toContain('Could not find does_not_exist for PHP7.2 on PECL');
Expand All @@ -46,6 +46,10 @@ describe('Features tests', () => {
'sudo DEBIAN_FRONTEND=noninteractive apt install -y php7.2-pcov'
);

linux = await features.addExtension('xdebug, pcov', '7.4', 'linux');
expect(linux).toContain('./xdebug.sh');
expect(linux).toContain('./pcov.sh');

linux = await features.addExtension('xdebug', '7.2', 'fedora');
expect(linux).toContain('Platform fedora is not supported');
});
Expand All @@ -68,6 +72,12 @@ describe('Features tests', () => {
darwin = await features.addExtension('xdebug', '5.6', 'darwin');
expect(darwin).toContain('sudo pecl install xdebug-2.5.5');

darwin = await features.addExtension('xdebug', '7.4', 'darwin');
expect(darwin).toContain('sh ./xdebug_darwin.sh');

darwin = await features.addExtension('pcov', '7.4', 'darwin');
expect(darwin).toContain('sh ./pcov.sh');

darwin = await features.addExtension('xdebug', '7.2', 'darwin');
expect(darwin).toContain('sudo pecl install xdebug');

Expand Down Expand Up @@ -136,25 +146,25 @@ describe('Features tests', () => {

it('checking addCoverage on windows', async () => {
let win32: string = await features.addCoverage('xdebug', '7.4', 'win32');
const extension_url: string =
'https://xdebug.org/files/php_xdebug-2.8.0beta2-7.4-vc15.dll';
expect(win32).toContain(
'Install-PhpExtension xdebug -Version 2.8 -MinimumStability beta'
'Invoke-WebRequest -Uri ' +
extension_url +
' -OutFile C:\\tools\\php\\ext\\php_xdebug.dll'
);

win32 = await features.addCoverage('xdebug', '7.3', 'win32');
expect(win32).toContain(
'Install-PhpExtension xdebug -MinimumStability stable'
);
expect(win32).toContain('Install-PhpExtension xdebug');

win32 = await features.addCoverage('pcov', '7.4', 'win32');
expect(win32).toContain('Install-PhpExtension pcov -MinimumStability beta');
expect(win32).toContain('Install-PhpExtension pcov');
expect(win32).toContain(
'if(php -m | findstr -i xdebug) { Disable-PhpExtension xdebug C:\\tools\\php'
);

win32 = await features.addCoverage('pcov', '7.3', 'win32');
expect(win32).toContain(
'Install-PhpExtension pcov -MinimumStability stable'
);
expect(win32).toContain('Install-PhpExtension pcov');
expect(win32).toContain(
'if(php -m | findstr -i xdebug) { Disable-PhpExtension xdebug C:\\tools\\php'
);
Expand All @@ -174,32 +184,25 @@ describe('Features tests', () => {

it('checking addCoverage on linux', async () => {
let linux: string = await features.addCoverage('xdebug', '7.4', 'linux');
expect(linux).toContain(
'sudo DEBIAN_FRONTEND=noninteractive apt install -y php7.4-xdebug'
);
expect(linux).toContain('./xdebug.sh');

linux = await features.addCoverage('pcov', '7.4', 'linux');
expect(linux).toContain(
'sudo DEBIAN_FRONTEND=noninteractive apt install -y php7.4-pcov'
);
expect(linux).toContain(
"sudo phpdismod xdebug || echo 'xdebug not installed'"
);
expect(linux).toContain("sudo phpenmod pcov || echo 'pcov not installed'");
expect(linux).toContain('./pcov.sh');
expect(linux).toContain('sudo sed -i "/xdebug/d" $ini_file');

linux = await features.addCoverage('', '7.4', 'linux');
expect(linux).toEqual('');
});

it('checking addCoverage on darwin', async () => {
let darwin: string = await features.addCoverage('xdebug', '7.4', 'darwin');
expect(darwin).toContain('sudo pecl install xdebug');
expect(darwin).toContain('sh ./xdebug_darwin.sh');

darwin = await features.addCoverage('xdebug', '5.6', 'darwin');
expect(darwin).toContain('sudo pecl install xdebug-2.5.5');

darwin = await features.addCoverage('pcov', '7.4', 'darwin');
expect(darwin).toContain('sudo pecl install pcov');
expect(darwin).toContain('sh ./pcov.sh');
expect(darwin).toContain('sudo sed -i \'\' "/xdebug/d" $ini_file\n');

darwin = await features.addCoverage('', '7.4', 'win32');
Expand Down
15 changes: 15 additions & 0 deletions __tests__/pecl.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import * as pecl from '../src/pecl';

let valid_extensions = ['xdebug', 'pcov'];
jest.mock('../src/pecl', () => ({
checkPECLExtension: jest.fn().mockImplementation(extension => {
return valid_extensions.indexOf(extension) !== -1;
})
}));

describe('pecl tests', () => {
it('checking checkPECLExtension', async () => {
expect(await pecl.checkPECLExtension('extensionDoesNotExist')).toBe(false);
expect(await pecl.checkPECLExtension('xdebug')).toBe(true);
});
});
33 changes: 12 additions & 21 deletions __tests__/utils.test.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
import * as fs from 'fs';
import * as path from 'path';
import * as utils from '../src/utils';
import * as pecl from '../src/pecl';

let valid_extensions = ['xdebug', 'pcov'];
jest.mock('../src/pecl', () => ({
checkPECLExtension: jest.fn().mockImplementation(extension => {
return valid_extensions.indexOf(extension) !== -1;
})
}));

jest.mock('@actions/core', () => ({
getInput: jest.fn().mockImplementation(key => {
Expand Down Expand Up @@ -45,24 +37,25 @@ describe('Utils tests', () => {

it('checking readScripts', async () => {
let rc: string = fs.readFileSync(
path.join(__dirname, '../src/7.4.sh'),
path.join(__dirname, '../src/scripts/7.4.sh'),
'utf8'
);
let darwin: string = fs.readFileSync(
path.join(__dirname, '../src/darwin.sh'),
path.join(__dirname, '../src/scripts/darwin.sh'),
'utf8'
);
let linux: string = fs.readFileSync(
path.join(__dirname, '../src/linux.sh'),
path.join(__dirname, '../src/scripts/linux.sh'),
'utf8'
);
let win32: string = fs.readFileSync(
path.join(__dirname, '../src/win32.ps1'),
path.join(__dirname, '../src/scripts/win32.ps1'),
'utf8'
);
expect(await utils.readScript('darwin.sh', '7.4', 'darwin')).toBe(rc);
expect(await utils.readScript('darwin.sh', '7.3', 'darwin')).toBe(darwin);
expect(await utils.readScript('linux.sh', '7.4', 'linux')).toBe(linux);
expect(await utils.readScript('linux.sh', '7.3', 'linux')).toBe(linux);
expect(await utils.readScript('win32.ps1', '7.3', 'win32')).toBe(win32);
expect(await utils.readScript('fedora.sh', '7.3', 'fedora')).toContain(
'Platform fedora is not supported'
Expand All @@ -88,6 +81,8 @@ describe('Utils tests', () => {
'c',
'd'
]);
expect(await utils.extensionArray('')).toEqual([]);
expect(await utils.extensionArray(' ')).toEqual([]);
});

it('checking INIArray', async () => {
Expand All @@ -96,6 +91,8 @@ describe('Utils tests', () => {
'b=2',
'c=3'
]);
expect(await utils.INIArray('')).toEqual([]);
expect(await utils.INIArray(' ')).toEqual([]);
});

it('checking log', async () => {
Expand All @@ -108,7 +105,7 @@ describe('Utils tests', () => {
warning_log = await utils.log(message, 'linux', 'warning');
expect(warning_log).toEqual('echo "\\033[33;1m' + message + '\\033[0m"');
warning_log = await utils.log(message, 'darwin', 'warning');
expect(warning_log).toEqual('echo -e "\\033[33;1m' + message + '\\033[0m"');
expect(warning_log).toEqual('echo "\\033[33;1m' + message + '\\033[0m"');

let error_log: string = await utils.log(message, 'win32', 'error');
// expect(error_log).toEqual(
Expand All @@ -117,7 +114,7 @@ describe('Utils tests', () => {
error_log = await utils.log(message, 'linux', 'error');
expect(error_log).toEqual('echo "\\033[31;1m' + message + '\\033[0m"');
error_log = await utils.log(message, 'darwin', 'error');
expect(error_log).toEqual('echo -e "\\033[31;1m' + message + '\\033[0m"');
expect(error_log).toEqual('echo "\\033[31;1m' + message + '\\033[0m"');

let success_log: string = await utils.log(message, 'win32', 'success');
// expect(success_log).toEqual(
Expand All @@ -126,7 +123,7 @@ describe('Utils tests', () => {
success_log = await utils.log(message, 'linux', 'success');
expect(success_log).toEqual('echo "\\033[32;1m' + message + '\\033[0m"');
success_log = await utils.log(message, 'darwin', 'success');
expect(success_log).toEqual('echo -e "\\033[32;1m' + message + '\\033[0m"');
expect(success_log).toEqual('echo "\\033[32;1m' + message + '\\033[0m"');
});

it('checking getExtensionPrefix', async () => {
Expand All @@ -138,9 +135,3 @@ describe('Utils tests', () => {
expect(await utils.getExtensionPrefix('opcache')).toEqual('zend_extension');
});
});
describe('pecl tests', () => {
it('checking checkPECLExtension', async () => {
expect(await pecl.checkPECLExtension('extensionDoesNotExist')).toBe(false);
expect(await pecl.checkPECLExtension('xdebug')).toBe(true);
});
});
58 changes: 58 additions & 0 deletions example/laravel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Laravel

on: [push, pull_request]

jobs:

phpunit:
name: PHPUnit (PHP ${{ matrix.php-versions }} on ${{ matrix.operating-system }})
runs-on: ubuntu-latest
env:
DB_PASSWORD: password
BROADCAST_DRIVER: log
CACHE_DRIVER: redis
QUEUE_CONNECTION: redis
SESSION_DRIVER: redis
services:
mysql:
image: mysql:5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: false
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: laravel
ports:
- 3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
redis:
image: redis
ports:
- 6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
strategy:
fail-fast: false
max-parallel: 15
matrix:
operating-system: [ubuntu-latest, windows-latest, macOS-latest]
php-versions: ['7.2', '7.3']
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install PHP
uses: shivammathur/setup-php@master #https://github.com/shivammathur/setup-php
with:
php-version: ${{ matrix.php-versions }}
extension-csv: mbstring, xdebug #optional
ini-values-csv: "post_max_size=256M, short_open_tag=On" #optional
coverage: xdebug #optional
- name: Install Composer dependencies
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
- name: Prepare the application
run: |
cp .env.example .env
php artisan key:generate
- name: Clear Config
run: php artisan config:clear
- name: Run Migration
run: php artisan migrate -v
env:
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
Loading

0 comments on commit 06929bd

Please sign in to comment.