| // Copyright (c) 2020, 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:expect/expect.dart'; | 
 |  | 
 | Future<void> main() async { | 
 |   final origDir = Directory.current; | 
 |   final exePath = Platform.resolvedExecutable; | 
 |   final d = Directory.systemTemp.createTempSync('dart_symlink'); | 
 |  | 
 |   // Roughly emulate a Brew installation: | 
 |   //   - $BREW/bin/dart -> ../Cellar/dart/2.8.0-dev.20.0/bin/dart | 
 |   //   - $BREW/Cellar/dart/2.8.0-dev.20.0/bin/dart -> $DART_SDK/bin/dart | 
 |   final a = Directory('${d.path}/usr/local/bin'); | 
 |   a.createSync(recursive: true); | 
 |  | 
 |   // /usr/local/Cellar/dart/2.8.0-dev.20.0/bin/dart -> $DART_SDK/bin/dart | 
 |   Directory.current = a; | 
 |   final linkLocation = '${d.path}/usr/local/bin/Cellar/dart/2.8.0-dev.20.0/bin/dart'; | 
 |   final link = Link(linkLocation); | 
 |   link.createSync(exePath, recursive: true); | 
 |  | 
 |   // /usr/local/bin/dart -> /usr/local/Cellar/dart/2.8.0-dev.20/bin/dart | 
 |   final link2 = Link('dart')..createSync(linkLocation, recursive: true); | 
 |   final path = Uri.parse(link2.absolute.path).path; | 
 |   Directory.current = origDir; | 
 |   final result = await Process.run('$path', ['help']); | 
 |   Expect.equals(result.exitCode, 0); | 
 | } |