Example #1
0
        private async Task <bool> PackagesMissingAsync(IPackageManager pm, string txtPath)
        {
            try {
                var original  = File.ReadAllLines(txtPath);
                var installed = await pm.GetInstalledPackagesAsync(CancellationTokens.After15s);

                return(PipRequirementsUtils.AnyPackageMissing(original, installed));
            } catch (IOException) {
            } catch (OperationCanceledException) {
            }

            return(false);
        }
        public void AnyPackageMissing()
        {
            // AnyPackageMissing only checks if a package is listed or not
            // It does NOT compare version numbers.
            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "Django" },
                               new[] { new PackageSpec("Django", "1.11") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "django" },
                               new[] { new PackageSpec("Django", "1.11") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "Flask", "Flask-Admin" },
                               new[] { new PackageSpec("Flask", "1.0.2"), new PackageSpec("Flask-Admin", "1.5.2") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "django >=1.9, <2" },
                               new[] { new PackageSpec("Django", "1.11") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "django==1.11" },
                               new[] { new PackageSpec("Django", "1.11") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "django >=1.9, <2" },
                               new[] { new PackageSpec("Django", "1.8") }
                               ));

            Assert.IsTrue(PipRequirementsUtils.AnyPackageMissing(
                              new[] { "Flask" },
                              new PackageSpec[0]
                              ));

            Assert.IsTrue(PipRequirementsUtils.AnyPackageMissing(
                              new[] { "Flask", "Flask-Admin" },
                              new[] { new PackageSpec("Flask", "1.0.2") }
                              ));
        }
        public void PackagesMissing()
        {
            // AnyPackageMissing only checks if a package is listed or not
            // It does NOT compare version numbers.
            Assert.IsTrue(PipRequirementsUtils.AnyPackageMissing(
                              new[] { "Django" },
                              new PackageSpec[0]
                              ));

            Assert.IsTrue(PipRequirementsUtils.AnyPackageMissing(
                              new[] { "Django#Flask" },
                              new[] { new PackageSpec("Flask", "2.0") }
                              ));

            Assert.IsTrue(PipRequirementsUtils.AnyPackageMissing(
                              new[] { "Fla sk" },
                              new[] { new PackageSpec("Flask", "2.0") }
                              ));

            Assert.IsTrue(PipRequirementsUtils.AnyPackageMissing(
                              new[] { "  django>=1.1,<1.9#comment" },
                              new PackageSpec[0]
                              ));

            Assert.IsTrue(PipRequirementsUtils.AnyPackageMissing(
                              new[] { "Django  >=   1.2  ,   < 1.98 ",
                                      "Flask  >=   2.2 ,   < 2.8 " },
                              new[] { new PackageSpec("Flask", "2.8") }
                              ));

            Assert.IsTrue(PipRequirementsUtils.AnyPackageMissing(
                              new[] { "django >= 1.1.5, flask<= 3.0 " }, //Should only attempt to match "Django"
                              new[] { new PackageSpec("Flask", "2.2") }
                              ));

            Assert.IsTrue(PipRequirementsUtils.AnyPackageMissing(
                              new[] { "Flask",
                                      "FlaskAdmin" },
                              new[] { new PackageSpec("Flask", "1.0.2") }
                              ));
        }
        public void PackagesNotMissing()
        {
            // AnyPackageMissing only checks if a package is listed or not
            // It does NOT compare version numbers.
            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "#comment Flask" },
                               new PackageSpec[0]
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "Django#comment Flask" },
                               new[] { new PackageSpec("DJANGO", "1.2") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "django==1.1" },
                               new[] { new PackageSpec("Flask", "2.0"),
                                       new PackageSpec("Django", "1.1") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "  django>=1.1,<1.9#comment    #comment" },
                               new[] { new PackageSpec("DJANGO", "1.5") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "django  >=   1.2 ,   < 1.98    #   comment  " },
                               new[] { new PackageSpec("Django", "1.8") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "Flask= =1.1",
                                       "FlaskAdmin < = 3.9",
                                       "Django> = 1.4 , <  = 1.9" },
                               new[] { new PackageSpec("Django", "1.8"),
                                       new PackageSpec("Flask", "2.1"),
                                       new PackageSpec("FlaskAdmin", "3.2") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "django >= 1.1.5, flask<= 3.0 " }, //Should only attempt to match "Django"
                               new[] { new PackageSpec("Django", "1.2") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "-r user/ptvs/requirements.txt",
                                       "git+https://myvcs.com/some_dependency",
                                       "#Django" },
                               new PackageSpec[0]
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "-r Django asd mor ereqs.txt",
                                       "git+ Django https://myvcs.com/some_d ependency  @sometag#egg=S    omeDependency" },
                               new PackageSpec[0]
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "-r asd mor ereqs.txt",
                                       "django#Bottle",
                                       "git+https://myvcs.com/some_dependency",
                                       "Flask#flaskAdmin" },
                               new[] { new PackageSpec("Django", "1.2"),
                                       new PackageSpec("Flask", "2.2") }
                               ));

            Assert.IsFalse(PipRequirementsUtils.AnyPackageMissing(
                               new[] { "git", "requirementstxt" },
                               new[] { new PackageSpec("git", "6.0"),
                                       new PackageSpec("requirementstxt", "7.0") }
                               ));
        }