blob: bd6886cadef7f6cbe77a4974bf5755beb3eadbef [file] [log] [blame]
// Copyright (c) 2014, 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.
/// Collection of utilities which are useful for creating unit tests for
/// Barback transformers.
library code_transformers.tests;
import 'dart:async' show Future;
import 'package:barback/barback.dart' show Transformer;
import 'package:unittest/unittest.dart';
import 'src/test_harness.dart';
/// Defines a test which invokes [applyTransformers].
testPhases(String testName, List<List<Transformer>> phases,
Map<String, String> inputs, Map<String, String> results,
[List<String> messages]) {
test(testName,
() => applyTransformers(phases, inputs: inputs, results: results,
messages: messages));
}
/// Updates the provided transformers with [inputs] as asset inputs then
/// validates that [results] were generated.
///
/// The keys for inputs and results are 'package_name|lib/file.dart'.
/// Only files which are specified in results are validated.
///
/// If [messages] is non-null then this will validate that only the specified
/// messages were generated, ignoring info messages.
Future applyTransformers(List<List<Transformer>> phases,
{Map<String, String> inputs: const {},
Map<String, String> results: const {},
List<String> messages: const []}) {
var helper = new TestHelper(phases, inputs, messages)..run();
return helper.checkAll(results).then((_) => helper.tearDown());
}