Skip to content

Commit 0fa7801

Browse files
committed
stembuild: packagers write to logger
Replace direct access to `os.Stderr` to quiet tests
1 parent 726c53e commit 0fa7801

File tree

3 files changed

+44
-35
lines changed

3 files changed

+44
-35
lines changed

stembuild/package_stemcell/packager/vcenter_packager.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package packager
22

33
import (
44
"errors"
5-
"fmt"
65
"os"
76
"path"
87
"path/filepath"
@@ -57,7 +56,7 @@ func (v VCenterPackager) Package() error {
5756
return errors.New("failed to export the prepared VM")
5857
}
5958

60-
fmt.Println("Converting VMDK into stemcell")
59+
v.Logger.Printf("Converting VMDK into stemcell")
6160
vmName := path.Base(v.SourceConfig.VmInventoryPath)
6261
shaSum, err := TarGenerator(filepath.Join(stemcellDir, "image"), filepath.Join(workingDir, vmName)) //nolint:ineffassign,staticcheck
6362
manifestContents := CreateManifest(v.OutputConfig.Os, v.OutputConfig.StemcellVersion, shaSum)
@@ -70,7 +69,7 @@ func (v VCenterPackager) Package() error {
7069
stemcellFilename := StemcellFilename(v.OutputConfig.StemcellVersion, v.OutputConfig.Os)
7170
_, err = TarGenerator(filepath.Join(v.OutputConfig.OutputDir, stemcellFilename), stemcellDir) //nolint:ineffassign,staticcheck
7271

73-
fmt.Printf("Stemcell successfully created: %s\n", stemcellFilename)
72+
v.Logger.Printf("Stemcell successfully created: %s\n", stemcellFilename)
7473
return nil
7574
}
7675

stembuild/package_stemcell/packager/vcenter_packager_test.go

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"path"
1313
"path/filepath"
1414

15+
"github.com/cloudfoundry/bosh-windows-stemcell-builder/stembuild/colorlogger"
1516
"github.com/cloudfoundry/bosh-windows-stemcell-builder/stembuild/filesystem"
1617
"github.com/cloudfoundry/bosh-windows-stemcell-builder/stembuild/package_stemcell/config"
1718
"github.com/cloudfoundry/bosh-windows-stemcell-builder/stembuild/package_stemcell/packager"
@@ -22,11 +23,13 @@ import (
2223
)
2324

2425
var _ = Describe("VcenterPackager", func() {
25-
26-
var outputDir string
27-
var sourceConfig config.SourceConfig
28-
var outputConfig config.OutputConfig
29-
var fakeVcenterClient *packagerfakes.FakeIaasClient
26+
var (
27+
outputDir string
28+
sourceConfig config.SourceConfig
29+
outputConfig config.OutputConfig
30+
fakeVcenterClient *packagerfakes.FakeIaasClient
31+
vcenterPackager *packager.VCenterPackager
32+
)
3033

3134
BeforeEach(func() {
3235
// Revert to manual cleanup which fails non-catastrophically on windows
@@ -36,6 +39,14 @@ var _ = Describe("VcenterPackager", func() {
3639
sourceConfig = config.SourceConfig{Password: "password", URL: "url", Username: "username", VmInventoryPath: "path/valid-vm-name"}
3740
outputConfig = config.OutputConfig{Os: "2019", StemcellVersion: "2019.00", OutputDir: outputDir}
3841
fakeVcenterClient = &packagerfakes.FakeIaasClient{}
42+
logger := colorlogger.New(0, false, GinkgoWriter)
43+
44+
vcenterPackager = &packager.VCenterPackager{
45+
SourceConfig: sourceConfig,
46+
OutputConfig: outputConfig,
47+
Client: fakeVcenterClient,
48+
Logger: logger,
49+
}
3950
})
4051

4152
AfterEach(func() {
@@ -49,20 +60,19 @@ var _ = Describe("VcenterPackager", func() {
4960
Context("ValidateSourceParameters", func() {
5061
It("returns an error if the vCenter url is invalid", func() {
5162
fakeVcenterClient.ValidateUrlReturns(errors.New("vcenter client url error"))
52-
packager := packager.VCenterPackager{SourceConfig: sourceConfig, OutputConfig: outputConfig, Client: fakeVcenterClient}
5363

54-
err := packager.ValidateSourceParameters()
64+
err := vcenterPackager.ValidateSourceParameters()
5565

5666
Expect(err).To(HaveOccurred())
5767
Expect(fakeVcenterClient.ValidateUrlCallCount()).To(Equal(1))
5868
Expect(err.Error()).To(Equal("vcenter client url error"))
5969

6070
})
71+
6172
It("returns an error if the vCenter credentials are not valid", func() {
6273
fakeVcenterClient.ValidateCredentialsReturns(errors.New("vcenter client credential error"))
63-
packager := packager.VCenterPackager{SourceConfig: sourceConfig, OutputConfig: outputConfig, Client: fakeVcenterClient}
6474

65-
err := packager.ValidateSourceParameters()
75+
err := vcenterPackager.ValidateSourceParameters()
6676

6777
Expect(err).To(HaveOccurred())
6878
Expect(fakeVcenterClient.ValidateCredentialsCallCount()).To(Equal(1))
@@ -71,42 +81,44 @@ var _ = Describe("VcenterPackager", func() {
7181

7282
It("returns an error if VM given does not exist ", func() {
7383
fakeVcenterClient.FindVMReturns(errors.New("vcenter client vm error"))
74-
packager := packager.VCenterPackager{SourceConfig: sourceConfig, OutputConfig: outputConfig, Client: fakeVcenterClient}
7584

76-
err := packager.ValidateSourceParameters()
85+
err := vcenterPackager.ValidateSourceParameters()
7786

7887
Expect(err).To(HaveOccurred())
7988
Expect(fakeVcenterClient.FindVMCallCount()).To(Equal(1))
8089
Expect(err.Error()).To(Equal("vcenter client vm error"))
8190
})
82-
It("returns no error if all source parameters are valid", func() {
83-
packager := packager.VCenterPackager{SourceConfig: sourceConfig, OutputConfig: outputConfig, Client: fakeVcenterClient}
8491

85-
err := packager.ValidateSourceParameters()
92+
It("returns no error if all source parameters are valid", func() {
93+
err := vcenterPackager.ValidateSourceParameters()
8694

8795
Expect(err).NotTo(HaveOccurred())
8896
})
8997
})
98+
9099
Context("ValidateFreeSpace", func() {
91100
It("is a NOOP", func() {
92-
packager := packager.VCenterPackager{SourceConfig: sourceConfig, OutputConfig: outputConfig, Client: fakeVcenterClient}
93-
err := packager.ValidateFreeSpaceForPackage(&filesystem.OSFileSystem{})
101+
err := vcenterPackager.ValidateFreeSpaceForPackage(&filesystem.OSFileSystem{})
94102

95103
Expect(err).To(Not(HaveOccurred()))
96104
})
97105
})
98106

99107
Describe("Package", func() {
100-
var vcenterPackager *packager.VCenterPackager
101-
102108
AfterEach(func() {
103-
os.RemoveAll("./valid-vm-name") //nolint:errcheck
104-
os.RemoveAll("image") //nolint:errcheck
109+
ovfName := "./valid-vm-name"
110+
err := os.RemoveAll(ovfName)
111+
if err != nil {
112+
By(fmt.Sprintf("removing '%s' failed: %s", ovfName, err))
113+
}
114+
imageFile := "image"
115+
err = os.RemoveAll(imageFile)
116+
if err != nil {
117+
By(fmt.Sprintf("removing '%s' failed: %s", imageFile, err))
118+
}
105119
})
106120

107121
BeforeEach(func() {
108-
vcenterPackager = &packager.VCenterPackager{SourceConfig: sourceConfig, OutputConfig: outputConfig, Client: fakeVcenterClient}
109-
110122
fakeVcenterClient.ExportVMStub = func(vmInventoryPath string, destination string) error {
111123
vmName := path.Base(vmInventoryPath)
112124
os.Mkdir(filepath.Join(destination, vmName), 0777) //nolint:errcheck
@@ -125,8 +137,8 @@ var _ = Describe("VcenterPackager", func() {
125137
stemcellFilename := packager.StemcellFilename(vcenterPackager.OutputConfig.StemcellVersion, vcenterPackager.OutputConfig.Os)
126138
stemcellFile := filepath.Join(vcenterPackager.OutputConfig.OutputDir, stemcellFilename)
127139
_, err = os.Stat(stemcellFile)
128-
129140
Expect(err).NotTo(HaveOccurred())
141+
130142
var actualStemcellManifestContent string
131143
expectedManifestContent := `---
132144
name: bosh-vsphere-esxi-windows2019-go_agent
@@ -145,6 +157,7 @@ stemcell_formats:
145157
gzr, err := gzip.NewReader(fileReader)
146158
Expect(err).ToNot(HaveOccurred())
147159
defer gzr.Close() //nolint:errcheck
160+
148161
tarfileReader := tar.NewReader(gzr)
149162
count := 0
150163

@@ -173,7 +186,6 @@ stemcell_formats:
173186
expectedManifestContent = fmt.Sprintf(expectedManifestContent, actualSha1.Sum(nil))
174187

175188
default:
176-
177189
Fail(fmt.Sprintf("Found unknown file: %s", filepath.Base(header.Name)))
178190
}
179191
}
@@ -229,9 +241,8 @@ stemcell_formats:
229241
})
230242

231243
It("Returns a error message if exporting the VM fails", func() {
232-
packager := packager.VCenterPackager{SourceConfig: sourceConfig, OutputConfig: outputConfig, Client: fakeVcenterClient}
233244
fakeVcenterClient.ExportVMReturns(errors.New("some client error"))
234-
err := packager.Package()
245+
err := vcenterPackager.Package()
235246

236247
Expect(fakeVcenterClient.ExportVMCallCount()).To(Equal(1))
237248
vmPath, _ := fakeVcenterClient.ExportVMArgsForCall(0)

stembuild/package_stemcell/packager/vmdk_packager.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -332,26 +332,25 @@ func (c *VmdkPackager) catchInterruptSignal() {
332332
for sig := range ch {
333333
c.Logger.Printf("received signal: %s", sig)
334334
if stopping {
335-
fmt.Fprintf(os.Stderr, "received second (%s) signal - exiting now\n", sig) //nolint:errcheck
336-
c.Cleanup() // remove temp dir
335+
c.Logger.Printf("received second (%s) signal - exiting now\n", sig)
336+
c.Cleanup()
337337
os.Exit(1)
338338
}
339339
stopping = true
340-
fmt.Fprintf(os.Stderr, "received (%s) signal cleaning up\n", sig) //nolint:errcheck
340+
c.Logger.Printf("received (%s) signal cleaning up\n", sig)
341341
c.StopConfig()
342342
}
343343
}
344344

345345
func (c *VmdkPackager) Package() error {
346-
347346
go c.catchInterruptSignal()
348347

349348
start := time.Now()
350349

351350
stemcellPath, err := c.ConvertVMDK()
352351
if err != nil {
353-
fmt.Fprintf(os.Stderr, "Error: %s\n", err) //nolint:errcheck
354-
c.Cleanup() // remove temp dir
352+
c.Logger.Printf("Error: %s\n", err)
353+
c.Cleanup()
355354
return err
356355
}
357356

0 commit comments

Comments
 (0)