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") } )); }