Merge pull request #22 from dart-lang/directory_check

fix an issue with getSdkDir
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c5d12d6..7a7bfa4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+## 0.1.2
+
+- Fix a bug in `getSdkDir` (#21)
+
 ## 0.1.1
 
 - Updated to the output for indeterminate progress
diff --git a/lib/cli_util.dart b/lib/cli_util.dart
index 5d32e78..d58be7a 100644
--- a/lib/cli_util.dart
+++ b/lib/cli_util.dart
@@ -9,6 +9,8 @@
 
 import 'package:path/path.dart' as path;
 
+import 'src/utils.dart';
+
 /// Return the path to the current Dart SDK.
 ///
 /// This first checks for an explicit SDK listed on the command-line
@@ -17,6 +19,7 @@
 /// [Platform.resolvedExecutable] API.
 ///
 /// Callers should generally prefer using the [getSdkPath] function.
+@Deprecated('Clients should generally prefer getSdkPath()')
 Directory getSdkDir([List<String> cliArgs]) {
   // Look for --dart-sdk on the command line.
   if (cliArgs != null) {
@@ -41,13 +44,13 @@
   // Look relative to the dart executable.
   File platformExecutable = new File(Platform.executable);
   Directory sdkDirectory = platformExecutable.parent.parent;
-  if (_isSdkDir(sdkDirectory)) return sdkDirectory;
+  if (isSdkDir(sdkDirectory)) return sdkDirectory;
 
   // Handle the case where Platform.executable is a sibling of the SDK directory
   // (this happens during internal testing).
   sdkDirectory =
       new Directory(path.join(platformExecutable.parent.path, 'dart-sdk'));
-  if (_isSdkDir(sdkDirectory)) return sdkDirectory;
+  if (isSdkDir(sdkDirectory)) return sdkDirectory;
 
   // Use `Platform.resolvedExecutable`.
   return new Directory(getSdkPath());
@@ -55,6 +58,3 @@
 
 /// Return the path to the current Dart SDK.
 String getSdkPath() => path.dirname(path.dirname(Platform.resolvedExecutable));
-
-bool _isSdkDir(Directory dir) =>
-    FileSystemEntity.isDirectorySync(path.join(dir.path, 'version'));
diff --git a/lib/src/utils.dart b/lib/src/utils.dart
new file mode 100644
index 0000000..66bab2f
--- /dev/null
+++ b/lib/src/utils.dart
@@ -0,0 +1,10 @@
+// Copyright (c) 2017, 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;
+
+bool isSdkDir(Directory dir) =>
+    FileSystemEntity.isFileSync(path.join(dir.path, 'version'));
diff --git a/pubspec.yaml b/pubspec.yaml
index baead10..af9075d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: cli_util
-version: 0.1.1
+version: 0.1.2
 author: Dart Team <misc@dartlang.org>
 description: A library to help in building Dart command-line apps.
 homepage: https://github.com/dart-lang/cli_util
diff --git a/test/cli_util_test.dart b/test/cli_util_test.dart
index 7cbdcf9..82fb83c 100644
--- a/test/cli_util_test.dart
+++ b/test/cli_util_test.dart
@@ -2,7 +2,10 @@
 // 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:cli_util/cli_util.dart';
+import 'package:cli_util/src/utils.dart';
 import 'package:test/test.dart';
 
 main() => defineTests();
@@ -10,11 +13,14 @@
 void defineTests() {
   group('getSdkDir', () {
     test('arg parsing', () {
+      // ignore: deprecated_member_use
       expect(getSdkDir(['--dart-sdk', '/dart/sdk']).path, equals('/dart/sdk'));
+      // ignore: deprecated_member_use
       expect(getSdkDir(['--dart-sdk=/dart/sdk']).path, equals('/dart/sdk'));
     });
 
     test('finds the SDK without cli args', () {
+      // ignore: deprecated_member_use
       expect(getSdkDir(), isNotNull);
     });
   });
@@ -24,4 +30,10 @@
       expect(getSdkPath(), isNotNull);
     });
   });
+
+  group('utils', () {
+    test('isSdkDir', () {
+      expect(isSdkDir(new Directory(getSdkPath())), true);
+    });
+  });
 }