| // 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. |
| |
| import 'dart:io'; |
| |
| import 'package:path/path.dart' as path; |
| import 'package:async_helper/async_helper.dart'; |
| import 'package:expect/expect.dart'; |
| import 'source_map_validator_helper.dart'; |
| |
| void main() { |
| asyncTest(() async { |
| Directory tmpDir = await createTempDir(); |
| try { |
| Directory sunflowerDir = new Directory.fromUri( |
| Platform.script.resolve('../../../third_party/sunflower')); |
| |
| print("Copying '${sunflowerDir.path}' to '${tmpDir.path}'."); |
| copyDirectory(sunflowerDir, tmpDir); |
| String ext = Platform.isWindows ? '.bat' : ''; |
| String command = path.normalize(path.join( |
| path.fromUri(Platform.script), '../../../../sdk/bin/pub${ext}')); |
| String file = path.join(tmpDir.path, 'build/web/sunflower.dart.js'); |
| |
| // sunflower/pubspec.yaml only depends on package:browser for Dartium, we |
| // override the file to remove this dependency and make pub-get --offline |
| // trivially succeed. |
| print("Overriding '${tmpDir.path}/pubspec.yaml'."); |
| new File(path.join(tmpDir.path, "pubspec.yaml")) |
| .writeAsStringSync(_newPubspec); |
| |
| print("Running '$command get --offline' from '${tmpDir}'."); |
| ProcessResult getResult = await Process.run(command, ['get', '--offline'], |
| workingDirectory: tmpDir.path); |
| print(getResult.stdout); |
| print(getResult.stderr); |
| Expect.equals(0, getResult.exitCode, 'Unexpected exitCode from pub get'); |
| |
| print("Running '$command build --mode=debug' from '${tmpDir}'."); |
| ProcessResult buildResult = await Process.run( |
| command, ['build', '--mode=debug'], |
| workingDirectory: tmpDir.path); |
| print(buildResult.stdout); |
| print(buildResult.stderr); |
| Expect.equals(0, buildResult.exitCode, 'Unexpected exitCode from pub'); |
| validateSourceMap(new Uri.file(file, windows: Platform.isWindows)); |
| print("Deleting '${tmpDir.path}'."); |
| } finally { |
| tmpDir.deleteSync(recursive: true); |
| } |
| }); |
| } |
| |
| String _newPubspec = ''' |
| # Generated by test |
| name: sunflower |
| version: 0.0.0 |
| '''; |