blob: 41804ce766b1e775f52f8773a5e63fc8ccfe926f [file] [log] [blame]
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library barback.test.transformer.declaring_bad;
import 'dart:async';
import 'package:barback/barback.dart';
import 'package:barback/src/utils.dart';
import 'bad.dart';
import 'mock.dart';
/// A transformer that throws an exception when run, after generating the
/// given outputs.
class DeclaringBadTransformer extends MockTransformer
implements DeclaringTransformer {
/// Whether this should throw an error in [declareOutputs].
final bool declareError;
/// Whether this should throw an error in [apply].
final bool applyError;
/// The id of the output asset to emit.
final AssetId output;
DeclaringBadTransformer(String output, {bool declareError: true,
bool applyError: false})
: this.output = new AssetId.parse(output),
this.declareError = declareError,
this.applyError = applyError;
Future<bool> doIsPrimary(AssetId id) => new Future.value(true);
Future doApply(Transform transform) {
return newFuture(() {
transform.addOutput(new Asset.fromString(output, "bad out"));
if (applyError) throw BadTransformer.ERROR;
});
}
Future declareOutputs(DeclaringTransform transform) {
return newFuture(() {
if (consumePrimary) transform.consumePrimary();
transform.declareOutput(output);
if (declareError) throw BadTransformer.ERROR;
});
}
}