Skip to content

Commit c62736e

Browse files
author
Stewart Miles
committed
Fixed UPM client and tests with Unity 5.x.
Method caching was broken in the Unity Package Manager Client in Unity 5.x which was discovered through the integrationt tests. This fixes the method caching when the UPM client types aren't available and fixes the tests to expect the correct results in Unity 5.x. Change-Id: I731e3b4c311f70a61d53aac85fa99453e5196f1d
1 parent 46851fd commit c62736e

File tree

2 files changed

+72
-48
lines changed

2 files changed

+72
-48
lines changed

source/UnityPackageManagerResolver/src/UnityPackageManagerClient.cs

Lines changed: 57 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,10 @@ public class Error : Wrapper {
125125
public Error(object error) : base(error) {
126126
type = type ??
127127
VersionHandler.FindClass("UnityEditor", "UnityEditor.PackageManager.Error");
128-
errorCodeProperty = errorCodeProperty ?? type.GetProperty("errorCode");
129-
messageProperty = messageProperty ?? type.GetProperty("message");
128+
if (type != null) {
129+
errorCodeProperty = errorCodeProperty ?? type.GetProperty("errorCode");
130+
messageProperty = messageProperty ?? type.GetProperty("message");
131+
}
130132
instance = error;
131133
fallbackMessage = instance != null ? "Package Manager Not Supported" : "";
132134
}
@@ -199,9 +201,11 @@ public class AuthorInfo : Wrapper {
199201
public AuthorInfo(object authorInfo) : base(authorInfo) {
200202
type = type ??
201203
VersionHandler.FindClass("UnityEditor", "UnityEditor.PackageManager.AuthorInfo");
202-
emailProperty = emailProperty ?? type.GetProperty("email");
203-
nameProperty = nameProperty ?? type.GetProperty("name");
204-
urlProperty = urlProperty ?? type.GetProperty("url");
204+
if (type != null) {
205+
emailProperty = emailProperty ?? type.GetProperty("email");
206+
nameProperty = nameProperty ?? type.GetProperty("name");
207+
urlProperty = urlProperty ?? type.GetProperty("url");
208+
}
205209
instance = authorInfo;
206210
}
207211

@@ -267,8 +271,10 @@ public DependencyInfo(object dependencyInfo) : base(dependencyInfo) {
267271
type = type ??
268272
VersionHandler.FindClass("UnityEditor",
269273
"UnityEditor.PackageManager.DependencyInfo");
270-
nameProperty = nameProperty ?? type.GetProperty("name");
271-
versionProperty = versionProperty ?? type.GetProperty("version");
274+
if (type != null) {
275+
nameProperty = nameProperty ?? type.GetProperty("name");
276+
versionProperty = versionProperty ?? type.GetProperty("version");
277+
}
272278
instance = dependencyInfo;
273279
}
274280

@@ -338,12 +344,14 @@ public VersionsInfo() {}
338344
public VersionsInfo(object versionsInfo) : base(versionsInfo) {
339345
type = type ??
340346
VersionHandler.FindClass("UnityEditor", "UnityEditor.PackageManager.VersionsInfo");
341-
allProperty = allProperty ?? type.GetProperty("all");
342-
compatibleProperty = compatibleProperty ?? type.GetProperty("compatible");
343-
latestProperty = latestProperty ?? type.GetProperty("latest");
344-
latestCompatibleProperty = latestCompatibleProperty ??
345-
type.GetProperty("latestCompatible");
346-
recommendedProperty = recommendedProperty ?? type.GetProperty("recommended");
347+
if (type != null) {
348+
allProperty = allProperty ?? type.GetProperty("all");
349+
compatibleProperty = compatibleProperty ?? type.GetProperty("compatible");
350+
latestProperty = latestProperty ?? type.GetProperty("latest");
351+
latestCompatibleProperty = latestCompatibleProperty ??
352+
type.GetProperty("latestCompatible");
353+
recommendedProperty = recommendedProperty ?? type.GetProperty("recommended");
354+
}
347355
instance = versionsInfo;
348356
}
349357

@@ -473,18 +481,20 @@ public PackageInfo() {}
473481
/// <param name="packageInfo">PackageInfo to wrap.</param>
474482
public PackageInfo(object packageInfo) : base(packageInfo) {
475483
var type = Type;
476-
authorProperty = authorProperty ?? type.GetProperty("author");
477-
categoryProperty = categoryProperty ?? type.GetProperty("category");
478-
dependenciesProperty = dependenciesProperty ?? type.GetProperty("dependencies");
479-
descriptionProperty = descriptionProperty ?? type.GetProperty("description");
480-
displayNameProperty = displayNameProperty ?? type.GetProperty("displayName");
481-
keywordsProperty = keywordsProperty ?? type.GetProperty("keywords");
482-
nameProperty = nameProperty ?? type.GetProperty("name");
483-
packageIdProperty = packageIdProperty ?? type.GetProperty("packageId");
484-
resolvedDependenciesProperty = resolvedDependenciesProperty ??
485-
type.GetProperty("resolvedDependencies");
486-
versionProperty = versionProperty ?? type.GetProperty("version");
487-
versionsProperty = versionsProperty ?? type.GetProperty("versions");
484+
if (type != null) {
485+
authorProperty = authorProperty ?? type.GetProperty("author");
486+
categoryProperty = categoryProperty ?? type.GetProperty("category");
487+
dependenciesProperty = dependenciesProperty ?? type.GetProperty("dependencies");
488+
descriptionProperty = descriptionProperty ?? type.GetProperty("description");
489+
displayNameProperty = displayNameProperty ?? type.GetProperty("displayName");
490+
keywordsProperty = keywordsProperty ?? type.GetProperty("keywords");
491+
nameProperty = nameProperty ?? type.GetProperty("name");
492+
packageIdProperty = packageIdProperty ?? type.GetProperty("packageId");
493+
resolvedDependenciesProperty = resolvedDependenciesProperty ??
494+
type.GetProperty("resolvedDependencies");
495+
versionProperty = versionProperty ?? type.GetProperty("version");
496+
versionsProperty = versionsProperty ?? type.GetProperty("versions");
497+
}
488498
}
489499

490500
/// <summary>
@@ -642,8 +652,10 @@ public Request(object request) : base(request) {
642652
type = type ??
643653
VersionHandler.FindClass("UnityEditor",
644654
"UnityEditor.PackageManager.Requests.Request");
645-
errorProperty = errorProperty ?? type.GetProperty("Error");
646-
isCompletedProperty = isCompletedProperty ?? type.GetProperty("IsCompleted");
655+
if (type != null) {
656+
errorProperty = errorProperty ?? type.GetProperty("Error");
657+
isCompletedProperty = isCompletedProperty ?? type.GetProperty("IsCompleted");
658+
}
647659
}
648660

649661
/// <summary>
@@ -690,7 +702,9 @@ public CollectionRequest(object request, string typeName) : base(request) {
690702
collectionRequestType =
691703
VersionHandler.FindClass("UnityEditor",
692704
"UnityEditor.PackageManager.Requests." + typeName);
693-
resultProperty = collectionRequestType.GetProperty("Result");
705+
if (collectionRequestType != null) {
706+
resultProperty = collectionRequestType.GetProperty("Result");
707+
}
694708
}
695709

696710
/// <summary>
@@ -727,7 +741,9 @@ public AddRequest(object request) : base(request) {
727741
addRequestType = addRequestType ??
728742
VersionHandler.FindClass("UnityEditor",
729743
"UnityEditor.PackageManager.Requests.AddRequest");
730-
resultProperty = resultProperty ?? addRequestType.GetProperty("Result");
744+
if (addRequestType != null) {
745+
resultProperty = resultProperty ?? addRequestType.GetProperty("Result");
746+
}
731747
}
732748

733749
/// <summary>
@@ -764,7 +780,9 @@ public RemoveRequest(object request) : base(request) {
764780
removeRequestType = removeRequestType ??
765781
VersionHandler.FindClass("UnityEditor",
766782
"UnityEditor.PackageManager.Requests.RemoveRequest");
767-
resultProperty = resultProperty ?? removeRequestType.GetProperty("PackageIdOrName");
783+
if (removeRequestType != null) {
784+
resultProperty = resultProperty ?? removeRequestType.GetProperty("PackageIdOrName");
785+
}
768786
}
769787

770788
/// <summary>
@@ -847,13 +865,15 @@ private static class Client {
847865
static Client() {
848866
type = type ??
849867
VersionHandler.FindClass("UnityEditor", "UnityEditor.PackageManager.Client");
850-
addMethod = addMethod ?? type.GetMethod("Add", new [] { typeof(String) });
851-
removeMethod = removeMethod ?? type.GetMethod("Remove", new [] { typeof(String) });
852-
listMethod = listMethod ?? type.GetMethod("List", Type.EmptyTypes);
853-
listMethodOfflineMode =
854-
listMethodOfflineMode ?? type.GetMethod("List", new [] { typeof(bool) });
855-
searchMethod = searchMethod ?? type.GetMethod("Search", new [] { typeof(String) });
856-
searchAllMethod = searchAllMethod ?? type.GetMethod("SearchAll", Type.EmptyTypes);
868+
if (type != null) {
869+
addMethod = addMethod ?? type.GetMethod("Add", new [] { typeof(String) });
870+
removeMethod = removeMethod ?? type.GetMethod("Remove", new [] { typeof(String) });
871+
listMethod = listMethod ?? type.GetMethod("List", Type.EmptyTypes);
872+
listMethodOfflineMode =
873+
listMethodOfflineMode ?? type.GetMethod("List", new [] { typeof(bool) });
874+
searchMethod = searchMethod ?? type.GetMethod("Search", new [] { typeof(String) });
875+
searchAllMethod = searchAllMethod ?? type.GetMethod("SearchAll", Type.EmptyTypes);
876+
}
857877
}
858878

859879
/// <summary>

source/UnityPackageManagerResolver/test/UnityPackageManagerClientIntegrationTests/UnityPackageManagerClientIntegrationTests.cs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -200,10 +200,11 @@ public static void TestSearchAvailablePackages(
200200
201201
},
202202
(result) => {
203-
var expectedPackageNameByQuery = new Dictionary<string, string>() {
204-
{"com.unity.ads", "com.unity.ads"},
205-
{"[email protected]", "com.unity.analytics"},
206-
};
203+
var expectedPackageNameByQuery = UpmAvailable ?
204+
new Dictionary<string, string>() {
205+
{"com.unity.ads", "com.unity.ads"},
206+
{"[email protected]", "com.unity.analytics"},
207+
} : new Dictionary<string, string>();
207208

208209
// Make sure all expected queries were performed.
209210
var queriesPerformed = new HashSet<string>(result.Keys);
@@ -303,9 +304,9 @@ public static void TestAddPackage(
303304
UnityPackageManagerClient.AddPackage(
304305
installPackage,
305306
(result) => {
306-
var message = CheckChangeResult(
307+
var message = UpmAvailable ? CheckChangeResult(
307308
result.Error, result.Package != null ? result.Package.Name : null,
308-
installPackage, testCaseResult);
309+
installPackage, testCaseResult) : "";
309310
if (testCaseResult.ErrorMessages.Count == 0) {
310311
UnityEngine.Debug.Log(message);
311312
}
@@ -327,16 +328,19 @@ public static void TestAddAndRemovePackage(
327328
UnityPackageManagerClient.AddPackage(
328329
packageToModify,
329330
(result) => {
330-
CheckChangeResult(result.Error,
331-
result.Package != null ? result.Package.Name : null,
332-
packageToModify, testCaseResult);
331+
if (UpmAvailable) {
332+
CheckChangeResult(result.Error,
333+
result.Package != null ? result.Package.Name : null,
334+
packageToModify, testCaseResult);
335+
}
333336
});
334337

335338
UnityPackageManagerClient.RemovePackage(
336339
packageToModify,
337340
(result) => {
338-
var message = CheckChangeResult(result.Error, result.PackageId, packageToModify,
339-
testCaseResult);
341+
var message = UpmAvailable ?
342+
CheckChangeResult(result.Error, result.PackageId, packageToModify,
343+
testCaseResult) : "";
340344
if (testCaseResult.ErrorMessages.Count == 0) {
341345
UnityEngine.Debug.Log(message);
342346
}

0 commit comments

Comments
 (0)