11using System ;
22using System . Diagnostics ;
33using System . IO ;
4+ using System . Reflection ;
5+ using LibGit2Sharp . Core ;
46
57namespace LibGit2Sharp . Tests . TestHelpers
68{
@@ -30,6 +32,15 @@ public static class Constants
3032
3133 public const string PrivateRepoUrl = "" ;
3234
35+ public static bool IsRunningOnUnix
36+ {
37+ get
38+ {
39+ return Platform . OperatingSystem == OperatingSystemType . MacOSX ||
40+ Platform . OperatingSystem == OperatingSystemType . Unix ;
41+ }
42+ }
43+
3344 public static Credentials PrivateRepoCredentials ( string url , string usernameFromUrl ,
3445 SupportedCredentialTypes types )
3546 {
@@ -40,19 +51,15 @@ public static string BuildPath()
4051 {
4152 string tempPath = null ;
4253
43- var unixPath = Type . GetType ( "Mono.Unix.UnixPath, Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" ) ;
44-
45- if ( unixPath != null )
54+ if ( IsRunningOnUnix )
4655 {
4756 // We're running on Mono/*nix. Let's unwrap the path
48- tempPath = ( string ) unixPath . InvokeMember ( "GetCompleteRealPath" ,
49- System . Reflection . BindingFlags . Static | System . Reflection . BindingFlags . FlattenHierarchy |
50- System . Reflection . BindingFlags . InvokeMethod | System . Reflection . BindingFlags . Public ,
51- null , unixPath , new object [ ] { Path . GetTempPath ( ) } ) ;
57+ tempPath = UnwrapUnixTempPath ( ) ;
5258 }
5359 else
5460 {
5561 const string LibGit2TestPath = "LibGit2TestPath" ;
62+
5663 // We're running on .Net/Windows
5764 if ( Environment . GetEnvironmentVariables ( ) . Contains ( LibGit2TestPath ) )
5865 {
@@ -72,6 +79,16 @@ public static string BuildPath()
7279 return testWorkingDirectory ;
7380 }
7481
82+ private static string UnwrapUnixTempPath ( )
83+ {
84+ var type = Type . GetType ( "Mono.Unix.UnixPath, Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" ) ;
85+
86+ return ( string ) type . InvokeMember ( "GetCompleteRealPath" ,
87+ BindingFlags . Static | BindingFlags . FlattenHierarchy |
88+ BindingFlags . InvokeMethod | BindingFlags . Public ,
89+ null , type , new object [ ] { Path . GetTempPath ( ) } ) ;
90+ }
91+
7592 // To help with creating secure strings to test with.
7693 private static System . Security . SecureString StringToSecureString ( string str )
7794 {
0 commit comments