1*c8dee2aaSAndroid Build Coastguard Worker// Copyright 2022 Google LLC 2*c8dee2aaSAndroid Build Coastguard Worker// 3*c8dee2aaSAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be 4*c8dee2aaSAndroid Build Coastguard Worker// found in the LICENSE file. 5*c8dee2aaSAndroid Build Coastguard Worker 6*c8dee2aaSAndroid Build Coastguard Workerpackage exporter 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Workerimport ( 9*c8dee2aaSAndroid Build Coastguard Worker "go.skia.org/infra/go/skerr" 10*c8dee2aaSAndroid Build Coastguard Worker "go.skia.org/skia/bazel/exporter/build_proto/analysis_v2" 11*c8dee2aaSAndroid Build Coastguard Worker "go.skia.org/skia/bazel/exporter/build_proto/build" 12*c8dee2aaSAndroid Build Coastguard Worker "google.golang.org/protobuf/encoding/prototext" 13*c8dee2aaSAndroid Build Coastguard Worker "google.golang.org/protobuf/proto" 14*c8dee2aaSAndroid Build Coastguard Worker) 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker// A test helper function to convert a textproto protobuf into a binary protobuf. 17*c8dee2aaSAndroid Build Coastguard Workerfunc textProtoToProtobuf(textProto string) ([]byte, error) { 18*c8dee2aaSAndroid Build Coastguard Worker qr := analysis_v2.CqueryResult{} 19*c8dee2aaSAndroid Build Coastguard Worker err := prototext.Unmarshal([]byte(textProto), &qr) 20*c8dee2aaSAndroid Build Coastguard Worker if err != nil { 21*c8dee2aaSAndroid Build Coastguard Worker return nil, skerr.Wrapf(err, "unable to unmarshal textproto") 22*c8dee2aaSAndroid Build Coastguard Worker } 23*c8dee2aaSAndroid Build Coastguard Worker 24*c8dee2aaSAndroid Build Coastguard Worker return proto.Marshal(&qr) 25*c8dee2aaSAndroid Build Coastguard Worker} 26*c8dee2aaSAndroid Build Coastguard Worker 27*c8dee2aaSAndroid Build Coastguard Worker// A test helper function to create a build.Rule with given properties (and srcs). 28*c8dee2aaSAndroid Build Coastguard Workerfunc createTestBuildRule(name, ruleClass, loc string, srcs []string) *build.Rule { 29*c8dee2aaSAndroid Build Coastguard Worker srcsAttrName := "srcs" 30*c8dee2aaSAndroid Build Coastguard Worker ad := build.Attribute_STRING_LIST 31*c8dee2aaSAndroid Build Coastguard Worker attr := build.Attribute{Name: &srcsAttrName, Type: &ad, StringListValue: srcs} 32*c8dee2aaSAndroid Build Coastguard Worker 33*c8dee2aaSAndroid Build Coastguard Worker r := build.Rule{Name: &name, RuleClass: &ruleClass, Location: &loc} 34*c8dee2aaSAndroid Build Coastguard Worker r.Attribute = append(r.Attribute, &attr) 35*c8dee2aaSAndroid Build Coastguard Worker return &r 36*c8dee2aaSAndroid Build Coastguard Worker} 37