public static void TestAddAndRemovePackage( IntegrationTester.TestCase testCase, Action <IntegrationTester.TestCaseResult> testCaseComplete) { var testCaseResult = new IntegrationTester.TestCaseResult(testCase); const string packageToModify = "com.unity.ads"; UnityPackageManagerClient.AddPackage( packageToModify, (result) => { if (UpmAvailable) { CheckChangeResult(result.Error, result.Package != null ? result.Package.Name : null, packageToModify, testCaseResult); } }); UnityPackageManagerClient.RemovePackage( packageToModify, (result) => { var message = UpmAvailable ? CheckChangeResult(result.Error, result.PackageId, packageToModify, testCaseResult) : ""; if (testCaseResult.ErrorMessages.Count == 0) { UnityEngine.Debug.Log(message); } testCaseComplete(testCaseResult); }); }
public static void TestSearchAvailablePackagesAll( IntegrationTester.TestCase testCase, Action <IntegrationTester.TestCaseResult> testCaseComplete) { var testCaseResult = new IntegrationTester.TestCaseResult(testCase); UnityPackageManagerClient.SearchAvailablePackages( (result) => { // Make sure common optional Unity packages are returned in the search result. if (UpmSearchAllAvailable) { CheckPackageNamesInPackageInfos( new List <string>() { "com.unity.2d.animation", "com.unity.entities" }, result.Packages, testCaseResult, "SearchAvailablePackages returned an unexpected set of packages"); } var message = String.Format( "Error: '{0}', PackageInfos:\n{1}\n", result.Error, String.Join("\n", PackageInfoListToStringList(result.Packages).ToArray())); if (!String.IsNullOrEmpty(result.Error.ToString())) { testCaseResult.ErrorMessages.Add(message); } else { UnityEngine.Debug.Log(message); } testCaseComplete(testCaseResult); }); }
public static void TestListInstalledPackages( IntegrationTester.TestCase testCase, Action <IntegrationTester.TestCaseResult> testCaseComplete) { var testCaseResult = new IntegrationTester.TestCaseResult(testCase); UnityPackageManagerClient.ListInstalledPackages((result) => { // Unity 2017.x doesn't install any default packages. if (ExecutionEnvironment.VersionMajorMinor >= 2018.0) { // Make sure a subset of the default packages installed in all a newly created // Unity project are present in the returned list. CheckPackageNamesInPackageInfos( new List <string>() { "com.unity.modules.audio", "com.unity.modules.physics" }, result.Packages, testCaseResult, "Found an unexpected set of packages"); } var message = String.Format( "Error: '{0}', PackageInfos:\n{1}\n", result.Error, String.Join("\n", PackageInfoListToStringList(result.Packages).ToArray())); if (!String.IsNullOrEmpty(result.Error.ToString())) { testCaseResult.ErrorMessages.Add(message); } else { UnityEngine.Debug.Log(message); } testCaseComplete(testCaseResult); }); }
public static void TestAddPackage( IntegrationTester.TestCase testCase, Action <IntegrationTester.TestCaseResult> testCaseComplete) { var testCaseResult = new IntegrationTester.TestCaseResult(testCase); const string installPackage = "com.unity.analytics"; UnityPackageManagerClient.AddPackage( installPackage, (result) => { var message = UpmAvailable ? CheckChangeResult( result.Error, result.Package != null ? result.Package.Name : null, installPackage, testCaseResult) : ""; if (testCaseResult.ErrorMessages.Count == 0) { UnityEngine.Debug.Log(message); } testCaseComplete(testCaseResult); }); }
public static void TestSearchAvailablePackages( IntegrationTester.TestCase testCase, Action <IntegrationTester.TestCaseResult> testCaseComplete) { var testCaseResult = new IntegrationTester.TestCaseResult(testCase); var progressLines = new List <string>(); UnityPackageManagerClient.SearchAvailablePackages( new [] { "com.unity.ads", "[email protected]" }, (result) => { var expectedPackageNameByQuery = UpmAvailable ? new Dictionary <string, string>() { { "com.unity.ads", "com.unity.ads" }, { "[email protected]", "com.unity.analytics" }, } : new Dictionary <string, string>(); // Make sure all expected queries were performed. var queriesPerformed = new HashSet <string>(result.Keys); if (!queriesPerformed.SetEquals(expectedPackageNameByQuery.Keys)) { testCaseResult.ErrorMessages.Add( String.Format( "Search returned a subset of queries [{0}] vs. expected [{1}]", String.Join(", ", (new List <string>(queriesPerformed)).ToArray()), String.Join(", ", (new List <string>( expectedPackageNameByQuery.Keys)).ToArray()))); } var packageResults = new List <string>(); foreach (var kv in result) { var searchQuery = kv.Key; var searchResult = kv.Value; packageResults.Add(String.Format( "{0}, Error: '{1}':\n{2}\n", searchQuery, searchResult.Error, String.Join("\n", PackageInfoListToStringList(searchResult.Packages).ToArray()))); if (!String.IsNullOrEmpty(searchResult.Error.ToString())) { testCaseResult.ErrorMessages.Add( String.Format("Failed when searching for '{0}', Error '{1}'", searchQuery, searchResult.Error.ToString())); } // Make sure returned packages match the search pattern. string expectedPackageName; if (expectedPackageNameByQuery.TryGetValue(searchQuery, out expectedPackageName)) { CheckPackageNamesInPackageInfos( new List <string>() { expectedPackageName }, searchResult.Packages, testCaseResult, String.Format("Returned an unexpected list of for search query '{0}'", searchQuery)); } else { testCaseResult.ErrorMessages.Add( String.Format("Unexpected search result returned '{0}'", searchQuery)); } } // Make sure progress was reported. if (progressLines.Count == 0) { testCaseResult.ErrorMessages.Add("No progress reported"); } var message = String.Format(String.Join("\n", packageResults.ToArray())); if (testCaseResult.ErrorMessages.Count == 0) { UnityEngine.Debug.Log(message); } else { testCaseResult.ErrorMessages.Add(message); } testCaseComplete(testCaseResult); }, progress: (value, item) => { progressLines.Add(String.Format("Progress: {0}: {1}", value, item)); }); }
public static void TestMigration( IntegrationTester.TestCase testCase, Action <IntegrationTester.TestCaseResult> testCaseComplete) { #if EDM_WITH_MIGRATION_NOT_AVAILABLE_ON_UPM testCaseComplete(new IntegrationTester.TestCaseResult(testCase) { Skipped = true }); return; #endif var testCaseResult = new IntegrationTester.TestCaseResult(testCase); PackageMigrator.TryMigration((error) => { if (CompleteIfNotAvailable(error, testCaseResult, testCaseComplete)) { return; } if (!String.IsNullOrEmpty(error)) { testCaseResult.ErrorMessages.Add(String.Format( "Migration failed with error {0}", error)); } // Make sure only expected version handler packages are still installed. var expectedVersionHandlerPackages = new HashSet <string>() { "Firebase Realtime Database" }; var manifestsByPackageName = new HashSet <string>( VersionHandlerImpl.ManifestReferences. FindAndReadManifestsInAssetsFolderByPackageName().Keys); manifestsByPackageName.ExceptWith(expectedVersionHandlerPackages); if (manifestsByPackageName.Count > 0) { testCaseResult.ErrorMessages.Add(String.Format( "Unexpected version handler packages found in the project:\n{0}", (new List <string>(manifestsByPackageName)).ToArray())); } // Make sure the expected UPM packages are installed. UnityPackageManagerClient.ListInstalledPackages((listResult) => { var installedPackageNames = new HashSet <string>(); foreach (var pkg in listResult.Packages) { installedPackageNames.Add(pkg.Name); } // Make sure expected UPM packages are installed. var expectedPackageNames = new List <string>() { "com.google.external-dependency-manager", "com.google.firebase.auth" }; if (installedPackageNames.IsSupersetOf(expectedPackageNames)) { testCaseResult.ErrorMessages.Add(String.Format( "Expected packages [{0}] not installed", String.Join(", ", expectedPackageNames.ToArray()))); } testCaseComplete(testCaseResult); }); }); }