Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit d396f33

Browse files
authored
Merge pull request #1045 from github-for-unity/fixes/1044-wrong-envvar
Make sure the correct environment variables are being read
2 parents 7175ad2 + 4d0e15a commit d396f33

File tree

4 files changed

+40
-12
lines changed

4 files changed

+40
-12
lines changed

src/GitHub.Api/Platform/DefaultEnvironment.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using GitHub.Logging;
22
using System;
3+
using System.Globalization;
34
using System.IO;
45
using System.Linq;
56

@@ -116,12 +117,25 @@ public string GetSpecialFolder(Environment.SpecialFolder folder)
116117

117118
public string ExpandEnvironmentVariables(string name)
118119
{
119-
return Environment.ExpandEnvironmentVariables(name);
120+
var key = GetEnvironmentVariableKey(name);
121+
return Environment.ExpandEnvironmentVariables(key);
120122
}
121123

122-
public string GetEnvironmentVariable(string variable)
124+
public string GetEnvironmentVariable(string name)
123125
{
124-
return Environment.GetEnvironmentVariable(variable);
126+
var key = GetEnvironmentVariableKey(name);
127+
return Environment.GetEnvironmentVariable(key);
128+
}
129+
130+
public string GetEnvironmentVariableKey(string name)
131+
{
132+
return GetEnvironmentVariableKeyInternal(name);
133+
}
134+
135+
private static string GetEnvironmentVariableKeyInternal(string name)
136+
{
137+
return Environment.GetEnvironmentVariables().Keys.Cast<string>()
138+
.FirstOrDefault(k => string.Compare(name, k, true, CultureInfo.InvariantCulture) == 0) ?? name;
125139
}
126140

127141
public NPath LogPath { get; }
@@ -134,7 +148,7 @@ public string GetEnvironmentVariable(string variable)
134148
public NPath ExtensionInstallPath { get; set; }
135149
public NPath UserCachePath { get; set; }
136150
public NPath SystemCachePath { get; set; }
137-
public string Path { get; set; } = Environment.GetEnvironmentVariable("PATH");
151+
public string Path { get; set; } = Environment.GetEnvironmentVariable(GetEnvironmentVariableKeyInternal("PATH"));
138152

139153
public string NewLine => Environment.NewLine;
140154
public NPath OctorunScriptPath

src/GitHub.Api/Platform/IEnvironment.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,6 @@ public interface IEnvironment
4141
ISettings LocalSettings { get; }
4242
ISettings SystemSettings { get; }
4343
ISettings UserSettings { get; }
44+
string GetEnvironmentVariableKey(string name);
4445
}
4546
}

src/GitHub.Api/Platform/ProcessEnvironment.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using GitHub.Logging;
2-
using System;
32
using System.Collections.Generic;
43
using System.Diagnostics;
54

@@ -24,11 +23,12 @@ public void Configure(ProcessStartInfo psi, NPath workingDirectory, bool dontSet
2423

2524
var path = Environment.Path;
2625
psi.EnvironmentVariables["GHU_WORKINGDIR"] = workingDirectory;
26+
var pathEnvVarKey = Environment.GetEnvironmentVariableKey("PATH");
2727

2828
if (dontSetupGit)
2929
{
3030
psi.EnvironmentVariables["GHU_FULLPATH"] = path;
31-
psi.EnvironmentVariables["PATH"] = path;
31+
psi.EnvironmentVariables[pathEnvVarKey] = path;
3232
return;
3333
}
3434

@@ -87,10 +87,10 @@ public void Configure(ProcessStartInfo psi, NPath workingDirectory, bool dontSet
8787

8888
pathEntries.Add("END");
8989

90-
path = String.Join(separator, pathEntries.ToArray()) + separator + path;
90+
path = string.Join(separator, pathEntries.ToArray()) + separator + path;
9191

9292
psi.EnvironmentVariables["GHU_FULLPATH"] = path;
93-
psi.EnvironmentVariables["PATH"] = path;
93+
psi.EnvironmentVariables[pathEnvVarKey] = path;
9494

9595
//TODO: Remove with Git LFS Locking becomes standard
9696
psi.EnvironmentVariables["GITLFSLOCKSENABLED"] = "1";
@@ -102,11 +102,11 @@ public void Configure(ProcessStartInfo psi, NPath workingDirectory, bool dontSet
102102
}
103103

104104
var httpProxy = Environment.GetEnvironmentVariable("HTTP_PROXY");
105-
if (!String.IsNullOrEmpty(httpProxy))
105+
if (!string.IsNullOrEmpty(httpProxy))
106106
psi.EnvironmentVariables["HTTP_PROXY"] = httpProxy;
107107

108108
var httpsProxy = Environment.GetEnvironmentVariable("HTTPS_PROXY");
109-
if (!String.IsNullOrEmpty(httpsProxy))
109+
if (!string.IsNullOrEmpty(httpsProxy))
110110
psi.EnvironmentVariables["HTTPS_PROXY"] = httpsProxy;
111111
psi.EnvironmentVariables["DISPLAY"] = "0";
112112
}

src/tests/IntegrationTests/IntegrationTestEnvironment.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Globalization;
3+
using System.Linq;
34
using GitHub.Unity;
45
using GitHub.Logging;
56

@@ -60,7 +61,7 @@ public void InitializeRepository(NPath? expectedPath = null)
6061

6162
public string ExpandEnvironmentVariables(string name)
6263
{
63-
return name;
64+
return defaultEnvironment.ExpandEnvironmentVariables(name);
6465
}
6566

6667
public string GetEnvironmentVariable(string v)
@@ -73,6 +74,18 @@ public string GetEnvironmentVariable(string v)
7374
return environmentVariable;
7475
}
7576

77+
78+
public string GetEnvironmentVariableKey(string name)
79+
{
80+
return defaultEnvironment.GetEnvironmentVariableKey(name);
81+
}
82+
83+
private static string GetEnvironmentVariableKeyInternal(string name)
84+
{
85+
return Environment.GetEnvironmentVariables().Keys.Cast<string>()
86+
.FirstOrDefault(k => string.Compare(name, k, true, CultureInfo.InvariantCulture) == 0) ?? name;
87+
}
88+
7689
public string GetSpecialFolder(Environment.SpecialFolder folder)
7790
{
7891
var ensureDirectoryExists = UserCachePath.Parent.EnsureDirectoryExists(folder.ToString());
@@ -88,7 +101,7 @@ public string GetSpecialFolder(Environment.SpecialFolder folder)
88101

89102
public string UserProfilePath => UserCachePath.Parent.CreateDirectory("user profile path");
90103

91-
public string Path { get; set; } = Environment.GetEnvironmentVariable("PATH").ToNPath();
104+
public string Path { get; set; } = Environment.GetEnvironmentVariable(GetEnvironmentVariableKeyInternal("PATH"));
92105

93106
public string NewLine => Environment.NewLine;
94107
public string UnityVersion => "5.6";

0 commit comments

Comments
 (0)