public override void TestImportSelections() { var testFeed1 = FeedTest.CreateTestFeed(); testFeed1.Uri = FeedTest.Sub1Uri; testFeed1.Name = "Sub 1"; FeedCacheMock.Setup(x => x.GetFeed(FeedTest.Sub1Uri)).Returns(testFeed1); var testImplementation1 = (Implementation)testFeed1.Elements[0]; var testImplementation2 = new Implementation { ID = "id2", ManifestDigest = new ManifestDigest(sha256: "abc"), Version = new ImplementationVersion("1.0") }; var testFeed2 = new Feed { Uri = FeedTest.Sub2Uri, Name = "Sub 2", Elements = { testImplementation2 } }; FeedCacheMock.Setup(x => x.GetFeed(FeedTest.Sub2Uri)).Returns(testFeed2); var selections = SelectionsTest.CreateTestSelections(); // Download uncached implementations StoreMock.Setup(x => x.Contains(It.IsAny <ManifestDigest>())).Returns(false); FetcherMock.Setup(x => x.Fetch(new[] { testImplementation1, testImplementation2 })); using (var tempFile = new TemporaryFile("0install-unit-tests")) { selections.SaveXml(tempFile); RunAndAssert(Resources.AllComponentsDownloaded, 0, selections, tempFile); } }
public override void TestNormal() { var requirements = RequirementsTest.CreateTestRequirements(); var selections = SelectionsTest.CreateTestSelections(); var testFeed1 = FeedTest.CreateTestFeed(); testFeed1.Uri = FeedTest.Sub1Uri; testFeed1.Name = "Sub 1"; var testImplementation1 = testFeed1[selections.Implementations[0].ID]; FeedCacheMock.Setup(x => x.GetFeed(FeedTest.Sub1Uri)).Returns(testFeed1); var testImplementation2 = new Implementation { ID = "id2", ManifestDigest = new ManifestDigest(sha256: "abc"), Version = new ImplementationVersion("1.0") }; var testFeed2 = new Feed { Uri = FeedTest.Sub2Uri, Name = "Sub 2", Elements = { testImplementation2 } }; FeedCacheMock.Setup(x => x.GetFeed(FeedTest.Sub2Uri)).Returns(testFeed2); SolverMock.Setup(x => x.Solve(requirements)).Returns(selections); // Download uncached implementations StoreMock.Setup(x => x.Contains(It.IsAny <ManifestDigest>())).Returns(false); FetcherMock.Setup(x => x.Fetch(new[] { testImplementation1, testImplementation2 })); RunAndAssert(Resources.AllComponentsDownloaded, 0, selections, "http://0install.de/feeds/test/test1.xml", "--command=command", "--os=Windows", "--cpu=i586", "--not-before=1.0", "--before=2.0", "--version-for=http://0install.de/feeds/test/test2.xml", "2.0..!3.0"); }
public override void TestNormal() { var requirements = RequirementsTest.CreateTestRequirements(); var selectionsOld = SelectionsTest.CreateTestSelections(); var selectionsNew = SelectionsTest.CreateTestSelections(); selectionsNew.Implementations[1].Version = new ImplementationVersion("2.0"); selectionsNew.Implementations.Add(new ImplementationSelection { InterfaceUri = FeedTest.Sub3Uri, ID = "id3", Version = new ImplementationVersion("0.1") }); SolverMock.SetupSequence(x => x.Solve(requirements)).Returns(selectionsOld).Returns(selectionsNew); var impl1 = new Implementation { ID = "id1" }; var impl2 = new Implementation { ID = "id2" }; var impl3 = new Implementation { ID = "id3" }; FeedCacheMock.Setup(x => x.GetFeed(FeedTest.Sub1Uri)).Returns(new Feed { Uri = FeedTest.Sub1Uri, Elements = { impl1 } }); FeedCacheMock.Setup(x => x.GetFeed(FeedTest.Sub2Uri)).Returns(new Feed { Uri = FeedTest.Sub2Uri, Elements = { impl2 } }); FeedCacheMock.Setup(x => x.GetFeed(FeedTest.Sub3Uri)).Returns(new Feed { Uri = FeedTest.Sub3Uri, Elements = { impl3 } }); // Download uncached implementations StoreMock.Setup(x => x.Contains(It.IsAny <ManifestDigest>())).Returns(false); FetcherMock.Setup(x => x.Fetch(new[] { impl1, impl2, impl3 }.IsEquivalent())); // Check for <replaced-by> FeedCacheMock.Setup(x => x.GetFeed(FeedTest.Test1Uri)).Returns(FeedTest.CreateTestFeed()); RunAndAssert("http://0install.de/feeds/test/test2.xml: 1.0 -> 2.0" + Environment.NewLine + "http://0install.de/feeds/test/sub3.xml: new -> 0.1", 0, selectionsNew, "http://0install.de/feeds/test/test1.xml", "--command=command", "--os=Windows", "--cpu=i586", "--not-before=1.0", "--before=2.0", "--version-for=http://0install.de/feeds/test/test2.xml", "2.0..!3.0"); }
public void TestListImplementations() { var testFeed = FeedTest.CreateTestFeed(); var testImplementation = (Implementation)testFeed.Elements[0]; var digest1 = testImplementation.ManifestDigest; var digest2 = new ManifestDigest(sha256New: "2"); using (var tempDir = new TemporaryDirectory("0install-unit-tests")) { FeedCacheMock.Setup(x => x.ListAll()).Returns(new[] { testFeed.Uri }); FeedCacheMock.Setup(x => x.GetFeed(testFeed.Uri)).Returns(testFeed); StoreMock.Setup(x => x.ListAll()).Returns(new[] { digest1, digest2 }); StoreMock.Setup(x => x.ListAllTemp()).Returns(new string[0]); StoreMock.Setup(x => x.GetPath(It.IsAny <ManifestDigest>())).Returns(tempDir); FileUtils.Touch(Path.Combine(tempDir, ".manifest")); var feedNode = new FeedNode(testFeed, Target.FeedCache); RunAndAssert(new ImplementationNode[] { new OwnedImplementationNode(digest1, testImplementation, feedNode, Target.Store), new OrphanedImplementationNode(digest2, Target.Store) }, ExitCode.OK, "list-implementations"); } }
public void TestPattern() { FeedCacheMock.Setup(x => x.ListAll()).Returns(new[] { FeedTest.Test1Uri, FeedTest.Test2Uri }); RunAndAssert(new[] { FeedTest.Test2Uri.ToStringRfc() }, ExitCode.OK, "test2"); }