Chromium Code Reviews| Index: pkg/code_transformers/test/assets_test.dart |
| diff --git a/pkg/code_transformers/test/assets_test.dart b/pkg/code_transformers/test/assets_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..c49b082a27763d777a5d415d90b248d388c664c1 |
| --- /dev/null |
| +++ b/pkg/code_transformers/test/assets_test.dart |
| @@ -0,0 +1,124 @@ |
| +// 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. |
| + |
| +library code_transformers.test.assets_test; |
| + |
| +import 'dart:async'; |
| +import 'dart:io' show File, Platform; |
| + |
| +import 'package:barback/barback.dart'; |
| +import 'package:code_transformers/resolver.dart'; |
| +import 'package:code_transformers/tests.dart'; |
| +import 'package:path/path.dart' as path; |
| +import 'package:unittest/compact_vm_config.dart'; |
| +import 'package:unittest/unittest.dart'; |
| + |
| +main() { |
| + useCompactVMConfiguration(); |
| + |
| + Future checkDartEntry({Map<String, String> inputs, bool expectation}) { |
| + var transformer = new Validator((transform) { |
| + return isPossibleDartEntry(transform.primaryInput).then((value) { |
| + expect(value, expectation); |
| + }); |
| + }); |
| + return applyTransformers( |
| + [[transformer]], |
| + inputs: inputs); |
| + } |
| + |
| + group('isPossibleDartEntry', () { |
| + test('should handle empty files', () { |
| + return checkDartEntry( |
| + inputs: { |
| + 'a|web/main.dart': '', |
| + }, |
| + expectation: false); |
| + }); |
| + |
| + test('should detect main methods', () { |
| + return checkDartEntry( |
| + inputs: { |
| + 'a|web/main.dart': 'main() {}', |
| + }, |
| + expectation: true); |
| + }); |
| + |
| + test('should exclude dart mains in lib folder', () { |
| + return checkDartEntry( |
| + inputs: { |
| + 'a|lib/main.dart': 'main() {}', |
| + }, |
| + expectation: false); |
| + }); |
| + |
| + test('should validate file extension', () { |
| + return checkDartEntry( |
| + inputs: { |
| + 'a|web/main.not_dart': 'main() {}', |
| + }, |
| + expectation: false); |
| + }); |
| + |
| + test('should count exports as main', () { |
| + return checkDartEntry( |
| + inputs: { |
| + 'a|web/main.dart': 'export "foo.dart";', |
| + }, |
| + expectation: true); |
| + }); |
| + |
| + test('should count parts as main', () { |
| + return checkDartEntry( |
| + inputs: { |
| + 'a|web/main.dart': 'part "foo.dart";', |
| + }, |
| + expectation: true); |
| + }); |
| + }); |
| + |
| + Future testAssetUri(String name, |
| + {AssetId source, String uri, AssetId result}) { |
| + test(name, () { |
| + var transformer = new Validator((transform) { |
| + var assetId = uriToAssetId(source, uri, transform.logger, null); |
| + expect(result, assetId); |
| + }); |
| + return applyTransformers( |
| + [[transformer]], |
| + inputs: { |
| + source.toString(): '' |
| + }); |
| + }); |
| + } |
| + |
| + group('uriToAssetId', () { |
| + testAssetUri('resolves relative URIs', |
| + source: new AssetId('a', 'web/main.dart'), |
| + uri: 'foo.dart', |
| + result: new AssetId('a', 'web/foo.dart')); |
| + |
| + testAssetUri('resolves package: URIs', |
| + source: new AssetId('a', 'web/main.dart'), |
| + uri: 'package:foo/foo.dart', |
| + result: new AssetId('foo', 'lib/foo.dart')); |
| + |
| + testAssetUri('resolves packages paths', |
| + source: new AssetId('a', 'web/main.dart'), |
| + uri: 'packages/foo/foo.dart', |
| + result: new AssetId('foo', 'lib/foo.dart')); |
|
Siggi Cherem (dart-lang)
2014/03/18 16:42:16
seems that we didn't have enough unittests in poly
blois
2014/03/18 17:39:07
Done.
|
| + }); |
| +} |
| + |
| +class Validator extends Transformer { |
| + final Function validation; |
| + |
| + Validator(this.validation); |
| + |
| + Future<bool> isPrimary(Asset input) => new Future.value(true); |
| + |
| + Future apply(Transform transform) { |
| + return new Future.value(validation(transform)); |
| + } |
| +} |