renderedJobList.Add(renderedJob1) // compress archive, err := renderedJobListCompressor.Compress(renderedJobList) Expect(err).ToNot(HaveOccurred()) defer func() { err := archive.Delete(); Expect(err).ToNot(HaveOccurred()) }() // decompress renderedJobListDir, err := fs.TempDir("RenderedJobListCompressorTest") Expect(err).ToNot(HaveOccurred()) defer func() { err := fs.RemoveAll(renderedJobListDir); Expect(err).ToNot(HaveOccurred()) }() err = compressor.DecompressFileToDir(archive.Path(), renderedJobListDir, boshcmd.CompressorOptions{}) Expect(err).ToNot(HaveOccurred()) // verify that archive contained rendered scripts from job 0 content, err := fs.ReadFileString(filepath.Join(renderedJobListDir, "fake-job-name-0", "script-0")) Expect(err).ToNot(HaveOccurred()) Expect(content).To(Equal("fake-rendered-job-0-script-0-content")) content, err = fs.ReadFileString(filepath.Join(renderedJobListDir, "fake-job-name-0", "script-1")) Expect(err).ToNot(HaveOccurred()) Expect(content).To(Equal("fake-rendered-job-0-script-1-content")) // verify that archive contained rendered scripts from job 1 content, err = fs.ReadFileString(filepath.Join(renderedJobListDir, "fake-job-name-1", "script-0")) Expect(err).ToNot(HaveOccurred()) Expect(content).To(Equal("fake-rendered-job-1-script-0-content")) }) }) Context("with a fake fs & compressor", func() { var (
"./app.stdout.log", "./other_logs/", "./some_directory/", "./some_directory/sub_dir/", "./some_directory/sub_dir/other_sub_dir/", "./some_directory/sub_dir/other_sub_dir/.keep", "./other_logs/more_logs/", "./other_logs/other_app.stderr.log", "./other_logs/other_app.stdout.log", "./other_logs/more_logs/more.stdout.log", )) _, _, _, err = cmdRunner.RunCommand("tar", "-xzpf", tgzName, "-C", dstDir) Expect(err).ToNot(HaveOccurred()) content, err := fs.ReadFileString(dstDir + "/app.stdout.log") Expect(err).ToNot(HaveOccurred()) Expect(content).To(ContainSubstring("this is app stdout")) content, err = fs.ReadFileString(dstDir + "/app.stderr.log") Expect(err).ToNot(HaveOccurred()) Expect(content).To(ContainSubstring("this is app stderr")) content, err = fs.ReadFileString(dstDir + "/other_logs/other_app.stdout.log") Expect(err).ToNot(HaveOccurred()) Expect(content).To(ContainSubstring("this is other app stdout")) }) }) Describe("DecompressFileToDir", func() { It("decompresses the file to the given directory", func() {
Expect(err).ToNot(HaveOccurred()) Expect(copiedFiles).To(Equal([]string{ dstDir + "/app.stderr.log", dstDir + "/app.stdout.log", dstDir + "/other_logs/more_logs/more.stdout.log", dstDir + "/other_logs/other_app.stdout.log", dstDir + "/some_directory/sub_dir/other_sub_dir/.keep", })) tarDirStat, err := os.Stat(dstDir) Expect(err).ToNot(HaveOccurred()) Expect(os.FileMode(0755)).To(Equal(tarDirStat.Mode().Perm())) content, err := fs.ReadFileString(dstDir + "/app.stdout.log") Expect(err).ToNot(HaveOccurred()) assert.Contains(GinkgoT(), content, "this is app stdout") content, err = fs.ReadFileString(dstDir + "/app.stderr.log") Expect(err).ToNot(HaveOccurred()) assert.Contains(GinkgoT(), content, "this is app stderr") content, err = fs.ReadFileString(dstDir + "/other_logs/other_app.stdout.log") Expect(err).ToNot(HaveOccurred()) assert.Contains(GinkgoT(), content, "this is other app stdout") content, err = fs.ReadFileString(dstDir + "/other_logs/more_logs/more.stdout.log") Expect(err).ToNot(HaveOccurred()) assert.Contains(GinkgoT(), content, "this is more stdout")