예제 #1
0
        public async Task BuildsImageFromDockerfile()
        {
            var dockerFile = ProjectLocator.FindSlnFiles().First().Directory
                             .GetDirectories("Examples").Single()
                             .GetDirectories("ExampleProject").Single()
                             .GetFiles("Dockerfile").Single();

            var client   = new DockerClientProvider().GetDockerClient();
            var provider = new DockerfileImageProvider(dockerFile, "..");

            string image = await provider.GetImage(client);

            Assert.NotNull(image);
        }
예제 #2
0
        public async Task FindsDockerFileWhenSuppliedWithProjectName()
        {
            var dockerFile = ProjectLocator.FindSlnFiles().First().Directory
                             .GetDirectories("Examples").Single()
                             .GetDirectories("ExampleProject").Single()
                             .GetFiles("Dockerfile").Single();

            var locator = new Mock <IDockerfileLocator>();

            locator.Setup(l => l.GetDockerfile(new KeyValuePair <string, string>("project", "foo")))
            .Returns(dockerFile).Verifiable();
            var client   = new DockerClientProvider().GetDockerClient();
            var provider = new DockerfileImageProvider("foo", "..", null, locator.Object);
            var image    = await provider.GetImage(client);

            Assert.NotNull(image);
            locator.Verify();
        }
예제 #3
0
        public async Task ThrowsWhenDockerBuildFails(string content)
        {
            var dir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

            Directory.CreateDirectory(dir);
            var file = new FileInfo(Path.Combine(dir, "Dockerfile"));

            File.WriteAllText(file.FullName, content);
            try
            {
                var client   = new DockerClientProvider().GetDockerClient();
                var provider = new DockerfileImageProvider(file, ".");
                await Assert.ThrowsAsync <DockerBuildFailedException>(async() => await provider.GetImage(client));
            }
            finally
            {
                Directory.Delete(dir, true);
            }
        }