Architect#scheduleBuilder or context.scheduleBuilder results in incorrect target on context
- Lenguaje dominante
- TypeScript
- Estrellas
- 27k
- Forks
- 11.8k
- Merge medio
- 14 h 23 min
- PR fusionados (30 d)
- 162
Descripción
# 🐞 Bug report
### Command (mark with an `x`)
- [ ] new
- [ ] build
- [ ] serve
- [ ] test
- [ ] e2e
- [ ] generate
- [ ] add
- [ ] update
- [ ] lint
- [ ] extract-i18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc
### Is this a regression?
Not that I know of
### Description
If a builder is executed via `architect.scheduleBuilder`, that builder is passed a context that doesn't match the declared interface in typescript. The same happens when using `context.scheduleBuilder` if no target is passed via the `scheduleOptions`.
```js
console.log(context.target);
// logs {project: undefined, target: undefined, configuration: undefined}
// but type is {project: string, target: string, configuration?: string} | undefined
```
## 🔬 Minimal Reproduction
Run `yarn bazel test //packages/angular_devkit/architect:architect_test` with the following patch:
```patch
diff --git a/packages/angular_devkit/architect/src/index_spec.ts b/packages/angular_devkit/architect/src/index_spec.ts
index 57d76c5a6..bbd59b3fc 100644
--- a/packages/angular_devkit/architect/src/index_spec.ts
+++ b/packages/angular_devkit/architect/src/index_spec.ts
@@ -36,10 +36,12 @@ describe('architect', () => {
options = {};
called = 0;
- testArchitectHost.addBuilder('package:test', createBuilder(async o => {
+ testArchitectHost.addBuilder('package:test', createBuilder(async (o, ctx) => {
called++;
options = o;
+ expect(ctx.target != null && ctx.target.target == null).toBe(false);
+
return new Promise(resolve => {
setTimeout(() => resolve({ success: true }), 10);
});
```
## 🔥 Exception or Error
Failures:
1) architect runs builders parallel
Message:
Expected true to be false.
Stack:
Error: Expected true to be false.
at
at packages/angular_devkit/architect/src/index_spec.ts:43:63
at onInput (packages/angular_devkit/architect/src/create-builder.ts:201:20)
at SafeSubscriber._next (packages/angular_devkit/architect/src/create-builder.ts:87:17)
## 🌍 Your Environment
Master branch on this repo
**Anything else relevant?**
Guía de contribución
Línea de trabajo
Comienza con packages/angular_devkit/architect/src/index_spec.ts y reproduce el fallo usando yarn bazel test //packages/angular_devkit/architect:architect_test. Sigue el contexto del builder a través de packages/angular_devkit/architect/src/create-builder.ts, que es donde apunta el stack, y verifica que scheduleBuilder proporcione un target que coincida con su interfaz de TypeScript declarada. Se considera terminado cuando el test enfocado de architect pasa con un target válido.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- build-system
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 38/100