| // 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 p; |
| import 'package:test/test.dart'; |
| |
| import '../../descriptor.dart' as d; |
| import '../../test_pub.dart'; |
| |
| void main() { |
| test( |
| 'runs only once even when dart on path is a batch file (as in flutter/bin)', |
| () async { |
| await servePackages((builder) { |
| builder.serve( |
| 'foo', |
| '1.0.0', |
| contents: [ |
| d.dir('bin', [d.file('script.dart', 'main(args) => print(args);')]), |
| ], |
| pubspec: { |
| 'executables': {'script': 'script'}, |
| }, |
| ); |
| }); |
| |
| await runPub(args: ['global', 'activate', 'foo']); |
| |
| await d.dir( |
| 'bin', |
| [ |
| d.file('dart.bat', ''' |
| @echo off |
| ${Platform.resolvedExecutable} %* |
| '''), |
| ], |
| ).create(); |
| |
| var process = |
| await Process.run(p.join(d.sandbox, cachePath, 'bin', 'script.bat'), [ |
| 'hi' |
| ], environment: { |
| 'PATH': [p.join(d.sandbox, 'bin'), p.dirname(Platform.resolvedExecutable)] |
| .join(';'), |
| ...getPubTestEnvironment(), |
| }); |
| expect((process.stdout as String).trim(), '[hi]'); |
| expect(process.exitCode, 0); |
| }, skip: !Platform.isWindows); |
| } |