| // 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 'package:path/path.dart' as p; | 
 | import 'package:test/test.dart'; | 
 |  | 
 | import '../../descriptor.dart' as d; | 
 | import '../../test_pub.dart'; | 
 |  | 
 | void main() { | 
 |   test('activates a package from a Git repo', () async { | 
 |     ensureGit(); | 
 |  | 
 |     await d.git('foo.git', [ | 
 |       d.libPubspec('foo', '1.0.0'), | 
 |       d.dir('bin', [d.file('foo.dart', "main() => print('ok');")]) | 
 |     ]).create(); | 
 |  | 
 |     await runPub( | 
 |       args: ['global', 'activate', '-sgit', '../foo.git'], | 
 |       output: allOf( | 
 |         startsWith('Resolving dependencies...\n' | 
 |             '+ foo 1.0.0 from git ..${p.separator}foo.git at '), | 
 |         // Specific revision number goes here. | 
 |         endsWith('Building package executables...\n' | 
 |             'Built foo:foo.\n' | 
 |             'Activated foo 1.0.0 from Git repository "..${p.separator}foo.git".'), | 
 |       ), | 
 |     ); | 
 |   }); | 
 |  | 
 |   test('activates a package from a Git repo with path and ref', () async { | 
 |     ensureGit(); | 
 |  | 
 |     await d.git('foo.git', [ | 
 |       d.libPubspec('foo', '0.0.0'), | 
 |       d.dir('bin', [d.file('foo.dart', "main() => print('0');")]), | 
 |       d.dir( | 
 |         'sub', | 
 |         [ | 
 |           d.libPubspec('foo', '1.0.0'), | 
 |           d.dir('bin', [d.file('sub.dart', "main() => print('1');")]) | 
 |         ], | 
 |       ), | 
 |     ]).create(); | 
 |     await d.git('foo.git', [ | 
 |       d.dir( | 
 |         'sub', | 
 |         [ | 
 |           d.libPubspec('sub', '2.0.0'), | 
 |           d.dir('bin', [d.file('sub.dart', "main() => print('2');")]) | 
 |         ], | 
 |       ), | 
 |     ]).commit(); | 
 |     await d.git('foo.git', [ | 
 |       d.dir( | 
 |         'sub', | 
 |         [ | 
 |           d.libPubspec('sub', '3.0.0'), | 
 |           d.dir('bin', [d.file('sub.dart', "main() => print('3');")]) | 
 |         ], | 
 |       ), | 
 |     ]).commit(); | 
 |  | 
 |     await runPub( | 
 |       args: [ | 
 |         'global', | 
 |         'activate', | 
 |         '-sgit', | 
 |         // Testing with a file:// ur; is important here, as the cloning behavior | 
 |         // matches that of networked cloning. Specifically a shallow clone will | 
 |         // not be shallow if it is from a relative url. | 
 |         '${p.toUri(d.sandbox)}/foo.git', | 
 |         '--git-ref=HEAD~', | 
 |         '--git-path=sub/', | 
 |       ], | 
 |       output: allOf( | 
 |         startsWith('Resolving dependencies...\n' | 
 |             '+ sub 2.0.0 from git ..${p.separator}foo.git at'), | 
 |         // Specific revision number goes here. | 
 |         contains('in sub'), | 
 |         endsWith('Building package executables...\n' | 
 |             'Built sub:sub.\n' | 
 |             'Activated sub 2.0.0 from Git repository "..${p.separator}foo.git".'), | 
 |       ), | 
 |     ); | 
 |     await runPub( | 
 |       args: [ | 
 |         'global', | 
 |         'run', | 
 |         'sub', | 
 |       ], | 
 |       output: contains('2'), | 
 |     ); | 
 |   }); | 
 | } |