forked from laravel-presets/pest
-
Notifications
You must be signed in to change notification settings - Fork 0
/
preset.ts
59 lines (55 loc) · 1.35 KB
/
preset.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import { definePreset, editFiles, executeCommand, installPackages } from '@preset/core'
export default definePreset({
name: 'laravel:pest',
postInstall: ({ hl }) => [
`Write your own expectations and helpers in ${hl('tests/Pest.php')}`,
`Make new tests with ${hl('php artisan make:test --pest')}`,
`Run ${hl('php artisan test')} to run your test suite`,
],
handler: async() => {
await editFiles({
files: 'composer.json',
title: 'register the composer plugin',
operations: [{
type: 'edit-json',
merge: {
scripts: {
'test': [
'@php artisan test --order-by random',
],
'test-coverage': [
'@php artisan test --coverage',
],
},
config: {
'allow-plugins': {
'pestphp/pest-plugin': true,
},
},
},
}],
})
await executeCommand({
title: 'remove phpunit',
command: 'composer',
arguments: ['remove', 'phpunit/phpunit', '--dev'],
ignoreExitCode: true,
})
await installPackages({
for: 'php',
dev: true,
install: ['pestphp/pest:^2.0', 'pestphp/pest-plugin-laravel:^2.0'],
additionalArgs: ['--with-all-dependencies'],
title: 'install dependencies',
})
await executeCommand({
command: 'php',
arguments: ['./vendor/bin/pest', '--init'],
title: 'setup Pest',
ignoreExitCode: true,
env: {
PEST_NO_SUPPORT: 'true',
},
})
},
})