1
1
using System ;
2
2
using System . Diagnostics ;
3
3
using System . IO ;
4
+ using System . Reflection ;
4
5
5
6
namespace LibGit2Sharp . Tests . TestHelpers
6
7
{
@@ -10,6 +11,14 @@ public static class Constants
10
11
public const string UnknownSha = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef" ;
11
12
public static readonly Identity Identity = new Identity ( "A. U. Thor" , "[email protected] " ) ;
12
13
public static readonly Signature Signature = new Signature ( Identity , new DateTimeOffset ( 2011 , 06 , 16 , 10 , 58 , 27 , TimeSpan . FromHours ( 2 ) ) ) ;
14
+ public static readonly bool IsRunningOnUnix = IsUnixPlatform ( ) ;
15
+
16
+ private static bool IsUnixPlatform ( )
17
+ {
18
+ // see http://mono-project.com/FAQ%3a_Technical#Mono_Platforms
19
+ var p = ( int ) Environment . OSVersion . Platform ;
20
+ return ( p == 4 ) || ( p == 6 ) || ( p == 128 ) ;
21
+ }
13
22
14
23
// Populate these to turn on live credential tests: set the
15
24
// PrivateRepoUrl to the URL of a repository that requires
@@ -37,19 +46,15 @@ public static string BuildPath()
37
46
{
38
47
string tempPath = null ;
39
48
40
- var unixPath = Type . GetType ( "Mono.Unix.UnixPath, Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" ) ;
41
-
42
- if ( unixPath != null )
49
+ if ( IsRunningOnUnix )
43
50
{
44
51
// We're running on Mono/*nix. Let's unwrap the path
45
- tempPath = ( string ) unixPath . InvokeMember ( "GetCompleteRealPath" ,
46
- System . Reflection . BindingFlags . Static | System . Reflection . BindingFlags . FlattenHierarchy |
47
- System . Reflection . BindingFlags . InvokeMethod | System . Reflection . BindingFlags . Public ,
48
- null , unixPath , new object [ ] { Path . GetTempPath ( ) } ) ;
52
+ tempPath = UnwrapUnixTempPath ( ) ;
49
53
}
50
54
else
51
55
{
52
56
const string LibGit2TestPath = "LibGit2TestPath" ;
57
+
53
58
// We're running on .Net/Windows
54
59
if ( Environment . GetEnvironmentVariables ( ) . Contains ( LibGit2TestPath ) )
55
60
{
@@ -68,5 +73,16 @@ public static string BuildPath()
68
73
Trace . TraceInformation ( "Test working directory set to '{0}'" , testWorkingDirectory ) ;
69
74
return testWorkingDirectory ;
70
75
}
76
+
77
+ private static string UnwrapUnixTempPath ( )
78
+ {
79
+ var assembly = Assembly . Load ( "Mono.Posix" ) ;
80
+ var type = assembly . GetType ( "Mono.Unix.UnixPath" ) ;
81
+
82
+ return ( string ) type . InvokeMember ( "GetCompleteRealPath" ,
83
+ BindingFlags . Static | BindingFlags . FlattenHierarchy |
84
+ BindingFlags . InvokeMethod | BindingFlags . Public ,
85
+ null , type , new object [ ] { Path . GetTempPath ( ) } ) ;
86
+ }
71
87
}
72
88
}
0 commit comments