# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")

go_library(
    name = "fakes",
    testonly = True,
    srcs = [
        "gce.go",
        "gcs.go",
        "time.go",
    ],
    importpath = "cos.googlesource.com/cos/tools.git/src/pkg/fakes",
    visibility = ["//visibility:public"],
    deps = [
        "@com_google_cloud_go_storage//:storage",
        "@org_golang_google_api//compute/v1:compute",
        "@org_golang_google_api//googleapi",
        "@org_golang_google_api//option",
    ],
)

go_test(
    name = "fakes_test",
    srcs = [
        "gce_test.go",
        "gcs_test.go",
    ],
    embed = [":fakes"],
    deps = [
        "@com_github_google_go_cmp//cmp",
        "@com_github_google_go_cmp//cmp/cmpopts",
        "@com_google_cloud_go_storage//:storage",
        "@org_golang_google_api//compute/v1:compute",
        "@org_golang_google_api//googleapi",
        "@org_golang_google_api//iterator",
    ],
)
