@promovaweb/specsfy 0.10.4 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/README.md +5 -2
- package/dist/project-testing.d.ts +5 -0
- package/dist/project-testing.d.ts.map +1 -1
- package/dist/project-testing.js +79 -1
- package/dist/project-testing.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,53 @@ Todas as mudanças relevantes do Specsfy CLI são registradas neste arquivo.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.11.0] - 2026-08-30
|
|
8
|
+
|
|
9
|
+
### Adicionado
|
|
10
|
+
|
|
11
|
+
- Verifica durante o setup que projetos Laravel possuem `.env.testing` com
|
|
12
|
+
banco explícito e separado do ambiente de desenvolvimento.
|
|
13
|
+
- Inclui um gate reutilizável que inspeciona comandos diretos, aliases de
|
|
14
|
+
Composer e npm, traits de teste e o método `up` das migrations antes da
|
|
15
|
+
execução.
|
|
16
|
+
- Faz o setup confirmar cobertura de CRUD, caminhos de menu e reconstrução da
|
|
17
|
+
documentação técnica do sistema existente.
|
|
18
|
+
|
|
19
|
+
### Corrigido
|
|
20
|
+
|
|
21
|
+
- Suspende testes no CLI, na TUI e nas skills de TDD e implementação quando o
|
|
22
|
+
ambiente de teste não está comprovadamente separado.
|
|
23
|
+
- Recusa resets, wipes, drops, truncates, `RefreshDatabase` e
|
|
24
|
+
`DatabaseMigrations`, sem permitir execução forçada.
|
|
25
|
+
- Atualiza a aplicação de exemplo para usar SQLite exclusivo de teste,
|
|
26
|
+
migrations de avanço inspecionadas e `DatabaseTransactions`.
|
|
27
|
+
|
|
28
|
+
### Documentação
|
|
29
|
+
|
|
30
|
+
- Publica as regras de proteção no guia Laravel, na referência do CLI, nas
|
|
31
|
+
páginas das skills, na documentação técnica e no ebook `v1.7.20`.
|
|
32
|
+
|
|
33
|
+
### Validação
|
|
34
|
+
|
|
35
|
+
- `python3 -B -m unittest discover -s tests -p 'test_*.py'`
|
|
36
|
+
- `uv run --quiet --with behave==1.3.3 behave tests/features --no-capture`
|
|
37
|
+
- `cd skills && python3 -B -m unittest discover -s tests -p 'test_*.py'`
|
|
38
|
+
- `cd specialists && python3 -B -m unittest discover -s tests -p 'test_*.py'`
|
|
39
|
+
- `cd cli && npm run check`
|
|
40
|
+
- `node skills/specsfy-setup/scripts/check_database_safety.mjs --project example --command 'composer test'`
|
|
41
|
+
- `composer --working-dir=example test`
|
|
42
|
+
- `make verify-ebook`
|
|
43
|
+
|
|
44
|
+
## [0.10.5] - 2026-08-27
|
|
45
|
+
|
|
46
|
+
## Correções
|
|
47
|
+
|
|
48
|
+
- Alinha os testes automatizados da importação de `MVP.md` ao fluxo atual: somente requisitos desenvolvíveis criam backlog e spec Draft; a milestone mantém proveniência e triagem, sem Inboxes ou cópia de contexto de negócio.
|
|
49
|
+
|
|
50
|
+
## Validação
|
|
51
|
+
|
|
52
|
+
- Testes unitários e cenários BDD da biblioteca de skills executados com sucesso.
|
|
53
|
+
|
|
7
54
|
## [0.10.4] - 2026-08-27
|
|
8
55
|
|
|
9
56
|
## Corrigido
|
package/README.md
CHANGED
|
@@ -136,8 +136,11 @@ Alterações em `specs/inbox/*.md`, `specs/backlog/*.md`,
|
|
|
136
136
|
automaticamente.
|
|
137
137
|
|
|
138
138
|
Em projetos Laravel com Pest, `specsfy test --project .` detecta `artisan` e
|
|
139
|
-
`pestphp/pest`,
|
|
140
|
-
|
|
139
|
+
`pestphp/pest`, mas só inicia `php artisan test` quando `.env.testing` declara
|
|
140
|
+
um banco separado do `.env` e a suíte não usa traits que recriam migrations.
|
|
141
|
+
Sem essa comprovação, o comando e a TUI encerram antes do processo PHP. Quando
|
|
142
|
+
o gate passa, o CLI transmite a saída e devolve o mesmo exit code. Na TUI,
|
|
143
|
+
`Executar testes ^X`
|
|
141
144
|
mostra status, runner, comando, duração e resumo em uma subaba. A outra exibe
|
|
142
145
|
cada teste e falha. Relatórios Pest estruturados são convertidos em linhas
|
|
143
146
|
legíveis com arquivo, linha e mensagem.
|
|
@@ -19,6 +19,11 @@ export interface TestRun {
|
|
|
19
19
|
export declare function detectProjectTestCommand(project: string): Promise<TestCommand>;
|
|
20
20
|
/** Executa o runner detectado, transmite linhas e preserva o exit code. */
|
|
21
21
|
export declare function runProjectTests(project: string, emit?: (line: string) => void, signal?: AbortSignal): Promise<TestRun>;
|
|
22
|
+
/**
|
|
23
|
+
* Interrompe o runner antes do spawn quando Laravel não possui um banco de
|
|
24
|
+
* testes explícito e separado ou quando a suíte tenta recriar migrations.
|
|
25
|
+
*/
|
|
26
|
+
export declare function assertSafeLaravelTestDatabase(root: string): Promise<void>;
|
|
22
27
|
/** Formata uma linha JSON estruturada do Pest ou preserva texto comum. */
|
|
23
28
|
export declare function presentOutputLine(line: string): {
|
|
24
29
|
lines: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-testing.d.ts","sourceRoot":"","sources":["../src/project-testing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,yDAAyD;AACzD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,+DAA+D;AAC/D,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CAmBtB;AAED,2EAA2E;AAC3E,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAkB,EAC1C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"project-testing.d.ts","sourceRoot":"","sources":["../src/project-testing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,yDAAyD;AACzD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,+DAA+D;AAC/D,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CAmBtB;AAED,2EAA2E;AAC3E,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAkB,EAC1C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAwClB;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC/E;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAC/C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAyCA"}
|
package/dist/project-testing.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Detecção e execução segura dos testes do projeto consumidor.
|
|
3
3
|
*/
|
|
4
4
|
import { spawn } from "node:child_process";
|
|
5
|
-
import { readFile } from "node:fs/promises";
|
|
5
|
+
import { readdir, readFile } from "node:fs/promises";
|
|
6
6
|
import { join } from "node:path";
|
|
7
7
|
import { createInterface } from "node:readline";
|
|
8
8
|
import { performance } from "node:perf_hooks";
|
|
@@ -30,6 +30,7 @@ export async function detectProjectTestCommand(project) {
|
|
|
30
30
|
/** Executa o runner detectado, transmite linhas e preserva o exit code. */
|
|
31
31
|
export async function runProjectTests(project, emit = console.log, signal) {
|
|
32
32
|
const command = await detectProjectTestCommand(project);
|
|
33
|
+
await assertSafeLaravelTestDatabase(command.cwd);
|
|
33
34
|
const startedAt = performance.now();
|
|
34
35
|
const lines = [];
|
|
35
36
|
let structuredSummary = [];
|
|
@@ -69,6 +70,41 @@ export async function runProjectTests(project, emit = console.log, signal) {
|
|
|
69
70
|
: summaryLines(lines),
|
|
70
71
|
};
|
|
71
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Interrompe o runner antes do spawn quando Laravel não possui um banco de
|
|
75
|
+
* testes explícito e separado ou quando a suíte tenta recriar migrations.
|
|
76
|
+
*/
|
|
77
|
+
export async function assertSafeLaravelTestDatabase(root) {
|
|
78
|
+
const developmentPath = join(root, ".env");
|
|
79
|
+
const testingPath = join(root, ".env.testing");
|
|
80
|
+
if (!(await isFile(testingPath))) {
|
|
81
|
+
throw new Error("testes suspensos: crie .env.testing com um banco separado do .env");
|
|
82
|
+
}
|
|
83
|
+
const development = (await isFile(developmentPath))
|
|
84
|
+
? parseEnvironment(await readFile(developmentPath, "utf8"))
|
|
85
|
+
: new Map();
|
|
86
|
+
const testing = parseEnvironment(await readFile(testingPath, "utf8"));
|
|
87
|
+
if (testing.get("APP_ENV") !== "testing") {
|
|
88
|
+
throw new Error("testes suspensos: .env.testing exige APP_ENV=testing");
|
|
89
|
+
}
|
|
90
|
+
if (!testing.get("DB_DATABASE") && !testing.get("DB_URL")) {
|
|
91
|
+
throw new Error("testes suspensos: .env.testing deve declarar DB_DATABASE ou DB_URL");
|
|
92
|
+
}
|
|
93
|
+
const testingTarget = databaseTarget(testing, development);
|
|
94
|
+
const developmentTarget = databaseTarget(development);
|
|
95
|
+
if (developmentTarget && testingTarget === developmentTarget) {
|
|
96
|
+
throw new Error("testes suspensos: .env.testing aponta para o banco de desenvolvimento");
|
|
97
|
+
}
|
|
98
|
+
const testsPath = join(root, "tests");
|
|
99
|
+
if (!(await pathExists(testsPath)))
|
|
100
|
+
return;
|
|
101
|
+
for (const path of await phpFiles(testsPath)) {
|
|
102
|
+
const source = await readFile(path, "utf8");
|
|
103
|
+
if (/\b(?:RefreshDatabase|DatabaseMigrations)\b/u.test(source)) {
|
|
104
|
+
throw new Error("testes suspensos: a suíte usa trait que pode recriar migrations");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
72
108
|
/** Formata uma linha JSON estruturada do Pest ou preserva texto comum. */
|
|
73
109
|
export function presentOutputLine(line) {
|
|
74
110
|
let payload;
|
|
@@ -136,6 +172,48 @@ async function usesPest(root) {
|
|
|
136
172
|
}
|
|
137
173
|
return dependencies.has("pestphp/pest");
|
|
138
174
|
}
|
|
175
|
+
async function phpFiles(root) {
|
|
176
|
+
const found = [];
|
|
177
|
+
const pending = [root];
|
|
178
|
+
while (pending.length) {
|
|
179
|
+
const directory = pending.pop();
|
|
180
|
+
if (!directory)
|
|
181
|
+
continue;
|
|
182
|
+
for (const entry of await readdir(directory, { withFileTypes: true })) {
|
|
183
|
+
const path = join(directory, entry.name);
|
|
184
|
+
if (entry.isDirectory())
|
|
185
|
+
pending.push(path);
|
|
186
|
+
else if (entry.isFile() && path.endsWith(".php"))
|
|
187
|
+
found.push(path);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return found.sort();
|
|
191
|
+
}
|
|
192
|
+
function parseEnvironment(source) {
|
|
193
|
+
const environment = new Map();
|
|
194
|
+
for (const line of source.split(/\r?\n/u)) {
|
|
195
|
+
const match = /^\s*(?:export\s+)?([A-Z][A-Z0-9_]*)\s*=\s*(.*?)\s*$/u.exec(line);
|
|
196
|
+
if (!match?.[1] || match[2] === undefined)
|
|
197
|
+
continue;
|
|
198
|
+
environment.set(match[1], unquote(match[2]));
|
|
199
|
+
}
|
|
200
|
+
return environment;
|
|
201
|
+
}
|
|
202
|
+
function databaseTarget(environment, fallback = new Map()) {
|
|
203
|
+
const get = (name) => environment.get(name) ?? fallback.get(name) ?? "";
|
|
204
|
+
const url = get("DB_URL");
|
|
205
|
+
if (url)
|
|
206
|
+
return `url:${url}`;
|
|
207
|
+
return [get("DB_CONNECTION"), get("DB_HOST"), get("DB_PORT"), get("DB_DATABASE")].join("|");
|
|
208
|
+
}
|
|
209
|
+
function unquote(input) {
|
|
210
|
+
if (input.length >= 2 &&
|
|
211
|
+
((input.startsWith('"') && input.endsWith('"')) ||
|
|
212
|
+
(input.startsWith("'") && input.endsWith("'")))) {
|
|
213
|
+
return input.slice(1, -1);
|
|
214
|
+
}
|
|
215
|
+
return input;
|
|
216
|
+
}
|
|
139
217
|
function summaryLines(lines) {
|
|
140
218
|
const markers = ["tests:", "duration:", "passed", "failed", "skipped", "todo"];
|
|
141
219
|
return lines
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-testing.js","sourceRoot":"","sources":["../src/project-testing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"project-testing.js","sourceRoot":"","sources":["../src/project-testing.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED