// 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.
@available(added=7)
library fuchsia.buildinfo.test;

using fuchsia.buildinfo;

/// Returns fake build information about a Fuchsia system. Used for testing.
/// SetBuildInfo() must be called first, else GetBuildInfo() will return
/// an empty table.
@discoverable
closed protocol BuildInfoTestController {
    // Set the return value of GetBuildInfo().
    strict SetBuildInfo(struct {
        build_info fuchsia.buildinfo.BuildInfo;
    }) -> ();
};
