Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Android/build/build/make/tools/compliance/   (Android Betriebssystem Version 17©)  Datei vom 26.5.2026 mit Größe 3 kB image not shown  

Quelle  resolutionset_test.go   Sprache: unbekannt

 
Spracherkennung für: .go vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

// Copyright 2021 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
//
//      http://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.

package compliance

import (
 "sort"
 "testing"
)

var (
 // bottomUp describes the bottom-up resolve of a hypothetical graph
 // the graph has a container image, a couple binaries, and a couple
 // libraries. bin1 statically links lib1 and dynamically links lib2;
 // bin2 dynamically links lib1 and statically links lib2.
 // binc represents a compiler or other toolchain binary used for
 // building the other binaries.
 bottomUp = []res{
  {"image", "image", "notice|restricted"},
  {"image", "bin1", "reciprocal"},
  {"image", "bin2", "restricted"},
  {"image", "lib1", "notice"},
  {"image", "lib2", "notice"},
  {"binc", "binc", "proprietary"},
  {"bin1", "bin1", "reciprocal"},
  {"bin1", "lib1", "notice"},
  {"bin2", "bin2", "restricted"},
  {"bin2", "lib2", "notice"},
  {"lib1", "lib1", "notice"},
  {"lib2", "lib2", "notice"},
 }

 // notice describes bottomUp after a top-down notice resolve.
 notice = []res{
  {"image", "image", "notice|restricted"},
  {"image", "bin1", "reciprocal"},
  {"image", "bin2", "restricted"},
  {"image", "lib1", "notice"},
  {"image", "lib2", "notice|restricted"},
  {"bin1", "bin1", "reciprocal"},
  {"bin1", "lib1", "notice"},
  {"bin2", "bin2", "restricted"},
  {"bin2", "lib2", "notice|restricted"},
  {"lib1", "lib1", "notice"},
  {"lib2", "lib2", "notice"},
 }

 // share describes bottomUp after a top-down share resolve.
 share = []res{
  {"image", "image", "restricted"},
  {"image", "bin1", "reciprocal"},
  {"image", "bin2", "restricted"},
  {"image", "lib2", "restricted"},
  {"bin1", "bin1", "reciprocal"},
  {"bin2", "bin2", "restricted"},
  {"bin2", "lib2", "restricted"},
 }

 // proprietary describes bottomUp after a top-down proprietary resolve.
 // Note that the proprietary binc is not reachable through the toolchain
 // dependency.
 proprietary = []res{}
)

func TestResolutionSet_AttachesTo(t *testing.T) {
 lg := newLicenseGraph()

 rsShare := toResolutionSet(lg, share)

 t.Logf("checking resolution set %s", rsShare.String())

 actual := rsShare.AttachesTo().Names()
 sort.Strings(actual)

 expected := []string{"bin1", "bin2", "image"}

 t.Logf("actual rsShare: %v", actual)
 t.Logf("expected rsShare: %v", expected)

 if len(actual) != len(expected) {
  t.Errorf("rsShare: wrong number of targets: got %d, want %d", len(actual), len(expected))
  return
 }
 for i := 0; i < len(actual); i++ {
  if actual[i] != expected[i] {
   t.Errorf("rsShare: unexpected target at index %d: got %s, want %s", i, actual[i], expected[i])
  }
 }

 rsPrivate := toResolutionSet(lg, proprietary)
 actual = rsPrivate.AttachesTo().Names()
 expected = []string{}

 t.Logf("actual rsPrivate: %v", actual)
 t.Logf("expected rsPrivate: %v", expected)

 if len(actual) != len(expected) {
  t.Errorf("rsPrivate: wrong number of targets: got %d, want %d", len(actual), len(expected))
  return
 }
 for i := 0; i < len(actual); i++ {
  if actual[i] != expected[i] {
   t.Errorf("rsPrivate: unexpected target at index %d: got %s, want %s", i, actual[i], expected[i])
  }
 }
}

func TestResolutionSet_AttachesToTarget(t *testing.T) {
 lg := newLicenseGraph()

 rsShare := toResolutionSet(lg, share)

 t.Logf("checking resolution set %s", rsShare.String())

 if rsShare.AttachesToTarget(newTestNode(lg, "binc")) {
  t.Errorf("actual.AttachesToTarget(\"binc\"): got true, want false")
 }
 if !rsShare.AttachesToTarget(newTestNode(lg, "image")) {
  t.Errorf("actual.AttachesToTarget(\"image\"): got false want true")
 }
}

[Dauer der Verarbeitung: 0.21 Sekunden, vorverarbeitet 2026-06-28]