internal static UpmPackageVersion ToPackageVersion(this AvailableVersion self, UpmPackageVersion baseInfo)
        {
            var semver = SemVersion.Parse(self.refNameVersion);

            var newPInfo = JsonUtility.FromJson <UnityEditor.PackageManager.PackageInfo>(JsonUtility.ToJson(baseInfo.packageInfo));

            newPInfo.m_Version = self.version;
            newPInfo.m_Git     = new GitInfo("", self.refName);

#if UNITY_2019_4_10_OR_NEWER
            var p = new UpmPackageVersion(newPInfo, false, semver, newPInfo.displayName, false);
#else
            var p = new UpmPackageVersion(newPInfo, false, semver, newPInfo.displayName);
#endif

            // Update tag.
            PackageTag tag = PackageTag.Git | PackageTag.Installable | PackageTag.Removable;
            if (semver.Major == 0 || !string.IsNullOrEmpty(semver.Prerelease))
            {
                tag |= PackageTag.Preview;
            }
            else if (semver.IsRelease())
            {
                tag |= PackageTag.Release;
            }

            p.m_Tag            = tag;
            p.m_IsFullyFetched = true;
            p.m_PackageId      = string.Format("{0}@{1}#{2}", self.packageName, self.repoUrl, self.refName);
            return(p);
        }
Example #2
0
 void Reset()
 {
     TestCaseCount       = 0;
     TestMode            = 0;
     TestCasePassedCount = 0;
     mockPackageVersion  = null;
     upmPackageVersion   = null;
 }
Example #3
0
        public void Test(IPackageVersion packageVersion, TestMode testMode)
        {
            Reset();

            if (packageVersion is MockPackageVersion)
            {
                mockPackageVersion = packageVersion as MockPackageVersion;
            }
            else
            {
                upmPackageVersion = packageVersion as UpmPackageVersion;
            }

            TestMode = testMode;
            ShowTestRunnerWindow();

            Run();
        }
 internal static void UnlockVersion(this UpmPackageVersion self)
 {
     self.m_Tag = self.m_Tag & ~PackageTag.VersionLocked;
 }
 internal static SemVersion GetVersion(this UpmPackageVersion self)
 {
     return(self.version ?? new SemVersion(0));
 }
 internal static UnityEditor.PackageManager.PackageInfo GetPackageInfo(this UpmPackageVersion self)
 {
     return(self.packageInfo);
 }
Example #7
0
        /// <summary>
        /// Update package info.
        /// </summary>
#if UNITY_2019_3_OR_NEWER
        void UpdatePackageVersions(UpmPackage package, IEnumerable <string> versions)
        {
            var pInfo = package.installedVersion as UpmPackageVersion;
            var json  = JsonUtility.ToJson(pInfo.packageInfo);

            string packageName, repoUrl, installedRefName;

            PackageUtils.SplitPackageId(pInfo.uniqueId, out packageName, out repoUrl, out installedRefName);

            Debug.LogFormat("[UpdatePackageVersions] packageName = {0}, count = {1}, current = {2}", package.name, versions.Count(), pInfo.version);
            var versionInfos = versions
                               .Select(ver =>
            {
                Debug.LogFormat("[UpdatePackageVersions] version = {0}", ver);
                var splited = ver.Split(',');
                var refName = splited[0];
                var version = splited[1];
                var semver  = SemVersion.Parse(version == refName ? version : version + "-" + refName);

                var info = JsonUtility.FromJson <PackageInfo>(json);
                Expose.FromObject(info).Set("m_Version", version);
                Expose.FromObject(info).Set("m_Git", new GitInfo("", refName));

                var p = new UpmPackageVersion(info, false, semver, pInfo.displayName);

                // Update tag.
                PackageTag tag = PackageTag.Git | PackageTag.Installable | PackageTag.Removable;
                if ((semver.Major == 0 && string.IsNullOrEmpty(semver.Prerelease)) ||
                    PackageTag.Preview.ToString().Equals(semver.Prerelease.Split('.')[0], StringComparison.InvariantCultureIgnoreCase))
                {
                    tag |= PackageTag.Preview;
                }

                if (semver.IsRelease())
                {
                    tag |= PackageTag.Release;
                }
                else
                {
                    if ((semver.Major == 0 && string.IsNullOrEmpty(semver.Prerelease)) ||
                        PackageTag.Preview.ToString().Equals(semver.Prerelease.Split('.')[0], StringComparison.InvariantCultureIgnoreCase))
                    {
                        tag |= PackageTag.Preview;
                    }
                }

                Expose.FromObject(p).Set("m_Tag", tag);
                Expose.FromObject(p).Set("m_IsFullyFetched", true);
                Expose.FromObject(p).Set("m_PackageId", string.Format("{0}@{1}#{2}", packageName, repoUrl, semver));

                return(p);
            })
                               .Concat(new[] { pInfo })
                               .Where(p => p == pInfo || p.version != pInfo.version)
                               .OrderBy(x => x.version)
                               .ToArray();

            if (0 < versionInfos.Length)
            {
                // Add verify tag on latest version.
                var latest = versionInfos
                             .Where(x => x.version.IsRelease())
                             .LastOrDefault();
                if (latest != null)
                {
                    var tag = Expose.FromObject(latest).Get("m_Tag").As <PackageTag>();
                    tag |= PackageTag.Verified;
                    Expose.FromObject(latest).Set("m_Tag", tag);
                }

                // Unlock version tag.
                var t = Expose.FromObject(pInfo).Get("m_Tag").As <PackageTag>();
                Expose.FromObject(pInfo).Set("m_Tag", t & ~PackageTag.VersionLocked);

                Debug.LogFormat("[UpdatePackageVersions] package source changing");
                package.UpdateVersions(versionInfos);
            }
        }