System.IO.Path.GetPathRoot string.Empty or whitespace character string should throw...
authorViktor Hofer <viktor.hofer@microsoft.com>
Thu, 4 May 2017 21:11:33 +0000 (23:11 +0200)
committerGitHub <noreply@github.com>
Thu, 4 May 2017 21:11:33 +0000 (23:11 +0200)
* GetPathRoot string.Empty and string whitespace throws ArgumentException

* throw in next line

* Refined method description

* Unix impl adjusted

* Indentation

* pr feedback

* Delete Path.Unix.cs

* Adding param to ArgumentException

Commit migrated from https://github.com/dotnet/coreclr/commit/8e99cd8031b2f568ea69116e7cf96d55e32cb7f5

src/coreclr/src/mscorlib/shared/System/IO/Path.Unix.cs
src/coreclr/src/mscorlib/shared/System/IO/Path.Windows.cs

index 500c60a..68c5f70 100644 (file)
@@ -23,7 +23,7 @@ namespace System.IO
                 throw new ArgumentNullException(nameof(path));
 
             if (path.Length == 0)
-                throw new ArgumentException(SR.Arg_PathIllegal);
+                throw new ArgumentException(SR.Arg_PathIllegal, nameof(path));
 
             PathInternal.CheckInvalidPathChars(path);
 
@@ -193,10 +193,15 @@ namespace System.IO
             return path.Length > 0 && path[0] == PathInternal.DirectorySeparatorChar;
         }
 
+        // The resulting string is null if path is null. If the path is empty or
+        // only contains whitespace characters an ArgumentException gets thrown.
         public static string GetPathRoot(string path)
         {
             if (path == null) return null;
-            return IsPathRooted(path) ? PathInternal.DirectorySeparatorCharAsString : String.Empty;
+                       if (string.IsNullOrWhiteSpace(path))
+                throw new ArgumentException(SR.Arg_PathIllegal, nameof(path));
+
+                       return IsPathRooted(path) ? PathInternal.DirectorySeparatorCharAsString : String.Empty;
         }
 
         /// <summary>Gets whether the system is case-sensitive.</summary>
index d6f0c62..1e573cd 100644 (file)
@@ -136,10 +136,14 @@ namespace System.IO
         // path on the current drive), "X:" (a relative path on a given drive,
         // where X is the drive letter), "X:\" (an absolute path on a given drive),
         // and "\\server\share" (a UNC path for a given server and share name).
-        // The resulting string is null if path is null.
+        // The resulting string is null if path is null. If the path is empty or
+        // only contains whitespace characters an ArgumentException gets thrown.
         public static string GetPathRoot(string path)
         {
             if (path == null) return null;
+            if (string.IsNullOrWhiteSpace(path)) 
+                throw new ArgumentException(SR.Arg_PathIllegal, nameof(path));
+
             PathInternal.CheckInvalidPathChars(path);
 
             // Need to return the normalized directory separator