mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
47 lines
1.8 KiB
TypeScript
47 lines
1.8 KiB
TypeScript
// #docregion
|
|
import { Architect } from '@angular-devkit/architect';
|
|
import { TestingArchitectHost } from '@angular-devkit/architect/testing';
|
|
import { schema } from '@angular-devkit/core';
|
|
import { promises as fs } from 'fs';
|
|
import { join } from 'path';
|
|
|
|
describe('Copy File Builder', () => {
|
|
let architect: Architect;
|
|
let architectHost: TestingArchitectHost;
|
|
|
|
beforeEach(async () => {
|
|
const registry = new schema.CoreSchemaRegistry();
|
|
registry.addPostTransform(schema.transforms.addUndefinedDefaults);
|
|
|
|
// TestingArchitectHost() takes workspace and current directories.
|
|
// Since we don't use those, both are the same in this case.
|
|
architectHost = new TestingArchitectHost(__dirname, __dirname);
|
|
architect = new Architect(architectHost, registry);
|
|
|
|
// This will either take a Node package name, or a path to the directory
|
|
// for the package.json file.
|
|
await architectHost.addBuilderFromPackage(join(__dirname, '..'));
|
|
});
|
|
|
|
it('can copy files', async () => {
|
|
// A "run" can have multiple outputs, and contains progress information.
|
|
const run = await architect.scheduleBuilder('@example/copy-file:copy', {
|
|
source: 'package.json',
|
|
destination: 'package-copy.json',
|
|
});
|
|
|
|
// The "result" member (of type BuilderOutput) is the next output.
|
|
const output = await run.result;
|
|
|
|
// Stop the builder from running. This stops Architect from keeping
|
|
// the builder-associated states in memory, since builders keep waiting
|
|
// to be scheduled.
|
|
await run.stop();
|
|
|
|
// Expect that the copied file is the same as its source.
|
|
const sourceContent = await fs.readFile('package.json', 'utf8');
|
|
const destinationContent = await fs.readFile('package-copy.json', 'utf8');
|
|
expect(destinationContent).toBe(sourceContent);
|
|
});
|
|
});
|
|
// #enddocregion
|