public void SaveTest()
        {
            VersionRequirement vr;
            XmlDocument        xdoc;
            XmlNode            node;
            String             MinVersion, MaxVersion, Version;


            //
            // Prepare the test.
            //
            xdoc          = new XmlDocument();
            vr            = new VersionRequirement();
            MinVersion    = "1.2.3";
            vr.MinVersion = new PackageVersion("1.2.3");
            MaxVersion    = "4.5.6";
            vr.MaxVersion = new PackageVersion("4.5.6");
            Version       = "7.8.9";
            vr.Version    = new PackageVersion("7.8.9");

            //
            // Run the test.
            //
            node = vr.Save(xdoc, false);

            //
            // Verify the test.
            //
            Assert.AreEqual(MinVersion, node.Attributes["MinVersion"].Value);
            Assert.AreEqual(MaxVersion, node.Attributes["MaxVersion"].Value);
            Assert.AreEqual(Version, node.Attributes["Version"].Value);
        }
        public void XmlConstructorTest()
        {
            VersionRequirement vr;
            XmlDocument        xdoc;
            XmlNode            node;
            String             MinVersion, MaxVersion, Version;


            //
            // Prepare the test.
            //
            xdoc       = new XmlDocument();
            node       = xdoc.CreateElement("VersionRequirement");
            MinVersion = "1.2.3";
            AddXmlAttribute(node, "MinVersion", MinVersion);
            MaxVersion = "4.5.6";
            AddXmlAttribute(node, "MaxVersion", MaxVersion);
            Version = "7.8.9";
            AddXmlAttribute(node, "Version", Version);

            //
            // Run the test.
            //
            vr = new VersionRequirement(node);

            //
            // Verify the test.
            //
            Assert.AreEqual(MinVersion, vr.MinVersion.ToString());
            Assert.AreEqual(MaxVersion, vr.MaxVersion.ToString());
            Assert.AreEqual(Version, vr.Version.ToString());
        }
        public void VersionRequirement_Compare_Null()
        {
            Assert.Throws <ArgumentNullException>(() => VersionRequirement.Compare(null, null, CompareType.EqualTo));
            Version valid = Version.Parse("1.0");

            Assert.Throws <ArgumentNullException>(() => VersionRequirement.Compare(valid, null, CompareType.EqualTo));
            Assert.Throws <ArgumentNullException>(() => VersionRequirement.Compare(null, valid, CompareType.EqualTo));
        }
Esempio n. 4
0
 /// <inheritdoc />
 public bool TryGetMeta(string text, ref PackageMeta packmeta, out VersionRequirement requiredVersion, CompletePackageReference packref)
 {
     return(this.TryGetCommonHjsonMeta(
                text,
                @"\<\#", @"\#\>",
                ref packmeta,
                out requiredVersion,
                packref, packref.RepositoryUrl));
 }
Esempio n. 5
0
        public void JsonParser_ParseJSON_Dependency_Normal()
        {
            var info = LoadJSONFile("dependencynormal");

            Assert.AreEqual(info.Dependencies.Length, 2);

            Assert.AreEqual(info.Dependencies[0].ID, "test2");
            var expected = new VersionRequirement(Version.Parse("1.0"), CompareType.GreaterThan);

            Assert.AreEqual(info.Dependencies[0].VersionRequirement, expected);

            Assert.AreEqual(info.Dependencies[1].ID, "test4");
            expected = new VersionRequirement(Version.Parse("1.3.2"), CompareType.GreaterThan | CompareType.EqualTo);
            Assert.AreEqual(info.Dependencies[1].VersionRequirement, expected);
        }
Esempio n. 6
0
        /// <summary>
        /// Try to get the meta comment text of a script
        /// </summary>
        /// <param name="engine"></param>
        /// <param name="text">text of the entire package</param>
        /// <param name="commentStartRegexPattern">a regex pattern for comment start</param>
        /// <param name="commentEndRegexPattern">a regex pattern for comment end</param>
        /// <param name="metaText">output meta text if valid</param>
        /// <param name="requiredVersion">output version requirement if valid</param>
        /// <param name="packref">optional pack reference for logging to know which pack we're talking about.</param>
        /// <returns>True if the meta comment was found successfully</returns>
        public static bool TryGetScriptMultilineMetaComment(
            this IScriptEngine engine,
            string text,
            string commentStartRegexPattern,
            string commentEndRegexPattern,
            out string metaText,
            out VersionRequirement requiredVersion,
            CompletePackageReference packref = null)
        {
            metaText        = "";
            requiredVersion = new VersionRequirement();

            var matches = text.MatchGroup(
                $@"{commentStartRegexPattern}\s+uppm\s+(?<uppmversion>[\d\.]+)\s+(?<packmeta>\{{.*\}})\s+{commentEndRegexPattern}",
                RegexOptions.CultureInvariant |
                RegexOptions.IgnoreCase |
                RegexOptions.Singleline);

            if (matches == null ||
                matches.Count == 0 ||
                matches["uppmversion"]?.Length <= 0 ||
                matches["packmeta"]?.Length <= 0
                )
            {
                engine.Log.Error("{PackRef} doesn't contain valid metadata.", packref?.ToString() ?? "Script");
                return(false);
            }

            if (UppmVersion.TryParse(matches["uppmversion"].Value, out var minuppmversion, UppmVersion.Inference.Zero))
            {
                requiredVersion.MinimalVersion = minuppmversion;
                requiredVersion.Valid          = minuppmversion <= Uppm.CoreVersion;
                metaText = matches["packmeta"].Value;
                if (!requiredVersion.Valid)
                {
                    Log.Error(
                        "{PackRef} requires at least uppm {$RequiredMinVersion}. " +
                        "It's incompatible with Current version of uppm ({$UppmVersion})",
                        packref?.ToString() ?? "Script",
                        requiredVersion.MinimalVersion,
                        Uppm.CoreVersion);
                    return(false);
                }
                return(true);
            }
            Log.Error("{PackRef} doesn't contain valid metadata.", packref?.ToString() ?? "Script");
            return(false);
        }
Esempio n. 7
0
        internal static KotlinVersionRequirement FromProtobuf(VersionRequirement vr, JvmNameResolver resolver)
        {
            if (vr is null)
            {
                return(null);
            }

            return(new KotlinVersionRequirement {
                Version = vr.Version,
                VersionFull = vr.VersionFull,
                Level = (KotlinVersionLevel)vr.level,
                ErrorCode = vr.ErrorCode,
                Message = vr.Message,
                VersionKind = (KotlinVersionKind)vr.version_kind
            });
        }
        public void BaseConstructorTest()
        {
            VersionRequirement vr;


            //
            // No preparation needed.
            //

            //
            // Run the test.
            //
            vr = new VersionRequirement();

            //
            // Verify the test.
            //
            Assert.AreEqual("VersionRequirement", vr.NodeName);
        }
        public void ValidateVersion_EqualToMinimumTest()
        {
            VersionRequirement vr;
            PackageVersion     pv;


            //
            // Prepare the test.
            //
            vr            = new VersionRequirement();
            vr.MinVersion = new PackageVersion("1.0.0");
            pv            = new PackageVersion("1.0.0");

            //
            // Run the test.
            //
            vr.ValidateVersion(pv, "x");

            //
            // Validation is via exception or not.
            //
        }
        public void ValidateVersion_GreaterThanVersionTest()
        {
            VersionRequirement vr;
            PackageVersion     pv;


            //
            // Prepare the test.
            //
            vr         = new VersionRequirement();
            vr.Version = new PackageVersion("1.0.0");
            pv         = new PackageVersion("1.9.5");

            //
            // Run the test.
            //
            vr.ValidateVersion(pv, "x");

            //
            // Validation is via exception or not.
            //
        }
Esempio n. 11
0
        /// <summary>
        /// Common implementation for <see cref="IScriptEngine.TryGetMeta"/> in case
        /// package defines metadata as HJSON in a multiline comment
        /// </summary>
        /// <param name="engine"></param>
        /// <param name="text">text of the entire package</param>
        /// <param name="commentStartRegexPattern">a regex pattern for comment start</param>
        /// <param name="commentEndRegexPattern">a regex pattern for comment end</param>
        /// <param name="packMeta">reference to a <see cref="PackageMeta"/>.
        /// if reference is null a new one will be created and assigned to it</param>
        /// <param name="requiredVersion">output version requirement if valid</param>
        /// <param name="packref">optional pack reference for logging to know which pack we're talking about.</param>
        /// <param name="parentRepo">Optionally a parent repository can be specified. This is used mostly for keeping dependency contexts correct.</param>
        /// <returns>True if package metadata was parsed successfully</returns>
        public static bool TryGetCommonHjsonMeta(
            this IScriptEngine engine,
            string text,
            string commentStartRegexPattern,
            string commentEndRegexPattern,
            ref PackageMeta packMeta,
            out VersionRequirement requiredVersion,
            CompletePackageReference packref = null,
            string parentRepo = "")
        {
            if (!engine.TryGetScriptMultilineMetaComment(
                    text,
                    commentStartRegexPattern,
                    commentEndRegexPattern,
                    out var metatext,
                    out requiredVersion,
                    packref))
            {
                return(false);
            }

            packMeta      = packMeta ?? new PackageMeta();
            packMeta.Text = text;
            packMeta.RequiredUppmVersion = requiredVersion;

            if (!engine.TryGetHjsonScriptMultilineMeta(
                    metatext,
                    ref packMeta,
                    packref,
                    parentRepo))
            {
                return(false);
            }

            if (engine.TryGetScriptText(text, out var scripttext, parentRepo))
            {
                packMeta.ScriptText = scripttext;
                return(true);
            }
Esempio n. 12
0
 internal void OnDeserialize(StreamingContext context)
 {
     VersionRequirement = VersionRequirement.Parse(version);
 }
        public void VersionRequirement_Parse_NormalInputs(CompareType type, string comparerString)
        {
            var expected = new VersionRequirement(Version.Parse("1.0"), type);

            Assert.AreEqual(expected, VersionRequirement.Parse($"{comparerString}1.0"));
        }
        public void VersionRequirement_Compare_SatisfiedBy_Null_Input()
        {
            var validRequirement = new VersionRequirement(Version.Parse("1.0"), CompareType.EqualTo);

            Assert.Throws <ArgumentNullException>(() => validRequirement.SatisfiedWith(null));
        }
Esempio n. 15
0
 public Dependency(string iD, string version)
 {
     ID = iD;
     VersionRequirement = VersionRequirement.Parse(version);
 }
        public void VersionRequirement_Compare_Invalid_Compare(CompareType type)
        {
            var version = Version.Parse("1.0");

            Assert.Throws <ArgumentException>(() => VersionRequirement.Compare(version, version, type));
        }
 public void VersionRequirement_Compare_Valid_Inputs(string a, string b, CompareType type, bool expected)
 {
     Assert.AreEqual(VersionRequirement.Compare(Version.Parse(a), Version.Parse(b), type), expected);
 }
        public void VersionRequirement_Compare_SatisfiedBy_NormalInputs(string testedVersion, CompareType type, bool expected)
        {
            var requirement = new VersionRequirement(Version.Parse("1.0"), type);

            Assert.AreEqual(requirement.SatisfiedWith(Version.Parse(testedVersion)), expected);
        }
 public void VersionRequirement_Parse_Empty()
 {
     Assert.Throws <ArgumentException>(() => VersionRequirement.Parse(""));
 }
 public void VersionRequirement_Parse_Null()
 {
     Assert.Throws <ArgumentNullException>(() => VersionRequirement.Parse(null));
 }
        public void VersionRequirement_Parse_NoComparer()
        {
            var expected = new VersionRequirement(Version.Parse("1.0"), CompareType.EqualTo);

            Assert.AreEqual(expected, VersionRequirement.Parse("1.0"));
        }
Esempio n. 22
0
        public void XmlConstructorTest()
        {
            PackageRecommendation rec;
            PackageRequirement    req;
            PackageChangelog      changelog;
            VersionRequirement    arena;
            PackageInfo           info;
            XmlDocument           xdoc;
            XmlNode infoNode;
            String  distributor, packagename, version, synopsis, description;


            //
            // Prepare the test.
            //
            xdoc        = new XmlDocument();
            infoNode    = xdoc.CreateElement("Info");
            distributor = "RefrshCache";
            AddSimpleXmlNode(infoNode, "Distributor", distributor);
            packagename = "RC.TestPackage";
            AddSimpleXmlNode(infoNode, "PackageName", packagename);
            version = "3.2.8";
            AddSimpleXmlNode(infoNode, "Version", version);
            synopsis = "This is a short synopsis message.";
            AddSimpleXmlNode(infoNode, "Synopsis", synopsis);
            description = "This is a longer description.";
            AddSimpleXmlNode(infoNode, "Description", description);
            arena            = new VersionRequirement();
            arena.Version    = new PackageVersion("1.2.3");
            arena.MinVersion = new PackageVersion("4.5.6");
            arena.MaxVersion = new PackageVersion("7.8.9");
            infoNode.AppendChild(arena.Save(xdoc, false).CopyAndRename("ArenaVersion"));
            req      = new PackageRequirement();
            req.Name = "RC.Package1";
            infoNode.AppendChild(req.Save(xdoc, false));
            rec             = new PackageRecommendation();
            rec.Name        = "RC.Package2";
            rec.Description = "You should install this.";
            infoNode.AppendChild(rec.Save(xdoc, false));
            changelog             = new PackageChangelog();
            changelog.Version     = new PackageVersion("8.9.982");
            changelog.Description = "I made some changes.";
            infoNode.AppendChild(changelog.Save(xdoc, false));

            //
            // Run the test.
            //
            info = new PackageInfo(infoNode);

            //
            // Verify the test.
            //
            Assert.AreEqual(distributor, info.Distributor);
            Assert.AreEqual(packagename, info.PackageName);
            Assert.AreEqual(version, info.Version.ToString());
            Assert.AreEqual(synopsis, info.Synopsis);
            Assert.AreEqual(description, info.Description);
            Assert.AreEqual(arena.MinVersion.ToString(), info.Arena.MinVersion.ToString());
            Assert.AreEqual(arena.MaxVersion.ToString(), info.Arena.MaxVersion.ToString());
            Assert.AreEqual(arena.Version.ToString(), info.Arena.Version.ToString());
            Assert.AreEqual(1, info.Requires.Count);
            Assert.AreEqual(1, info.Recommends.Count);
            Assert.AreEqual(1, info.Changelog.Count);
        }