blob: 385622e747b668deb602d9fa1a0f87917b976112 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package artifactory
import (
"reflect"
"testing"
"go.fuchsia.dev/fuchsia/tools/build"
)
// Implements productSizeCheckerOutputModules.
type mockProductSizeCheckerOutputModules struct {
productSizeCheckerOutput []build.ProductSizeCheckerOutput
}
func (m mockProductSizeCheckerOutputModules) BuildDir() string {
return "BUILD_DIR"
}
func (m mockProductSizeCheckerOutputModules) ProductSizeCheckerOutput() []build.ProductSizeCheckerOutput {
return m.productSizeCheckerOutput
}
func TestProductSizeCheckerOutputUploads(t *testing.T) {
m := &mockProductSizeCheckerOutputModules{
productSizeCheckerOutput: []build.ProductSizeCheckerOutput{
{
Visualization: "obj/build/viz",
SizeBreakdown: "A/B/C/D",
},
},
}
expected := []Upload{
{
Source: "BUILD_DIR/obj/build/viz",
Destination: "namespace/visualization",
Recursive: true,
},
{
Source: "BUILD_DIR/A/B/C/D",
Destination: "namespace/size_breakdown.txt",
},
}
actual, err := productSizeCheckerOutputUploads(m, "namespace")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if !reflect.DeepEqual(actual, expected) {
t.Fatalf("unexpected product size checker uploads:\nexpected: %v\nactual: %v\n", expected, actual)
}
}
func TestTooManyProductSizeCheckerOutputs(t *testing.T) {
m := &mockProductSizeCheckerOutputModules{
productSizeCheckerOutput: []build.ProductSizeCheckerOutput{
{
Visualization: "obj/build/viz",
SizeBreakdown: "A/B/C/D",
},
{
Visualization: "viz",
SizeBreakdown: "x",
},
},
}
expected_error_message := "Expected 0 or 1 ProductSizeCheckerOutputs, found 2"
_, err := productSizeCheckerOutputUploads(m, "namespace")
if err == nil || err.Error() != expected_error_message {
t.Fatalf("unexpected product size checker error returned:\nexpected: %v\nactual: %v\n", expected_error_message, err)
}
}