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

Quelle  license_test.go   Sprache: unbekannt

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

package android

import (
 "testing"
)

// Common test set up for license tests.
var prepareForLicenseTest = GroupFixturePreparers(
 // General preparers in alphabetical order.
 PrepareForTestWithDefaults,
 PrepareForTestWithLicenses,
 PrepareForTestWithOverrides,
 PrepareForTestWithPackageModule,
 PrepareForTestWithPrebuilts,
 PrepareForTestWithVisibility,

 // Additional test specific stuff
 prepareForTestWithFakePrebuiltModules,
 FixtureMergeEnv(map[string]string{"ANDROID_REQUIRE_LICENSES": "1"}),
)

var licenseTests = []struct {
 name           string
 fs             MockFS
 expectedErrors []string
}{
 {
  name: "license must not accept licenses property",
  fs: map[string][]byte{
   "top/Android.bp": []byte(`
    license {
     name: "top_license",
     visibility: ["//visibility:private"],
     licenses: ["other_license"],
    }`),
  },
  expectedErrors: []string{
   `top/Android.bp:5:14: unrecognized property "licenses"`,
  },
 },
 {
  name: "private license",
  fs: map[string][]byte{
   "top/Android.bp": []byte(`
    license_kind {
     name: "top_notice",
     conditions: ["notice"],
     visibility: ["//visibility:private"],
    }

    license {
     name: "top_allowed_as_notice",
     license_kinds: ["top_notice"],
     visibility: ["//visibility:private"],
    }`),
   "other/Android.bp": []byte(`
    rule {
     name: "arule",
     licenses: ["top_allowed_as_notice"],
    }`),
   "yetmore/Android.bp": []byte(`
    package {
     default_applicable_licenses: ["top_allowed_as_notice"],
    }`),
  },
  expectedErrors: []string{
   `other/Android.bp:2:5: module "arule": depends on //top:top_allowed_as_notice ` +
    `which is not visible to this module`,
   `yetmore/Android.bp:2:5: module "//yetmore": depends on //top:top_allowed_as_notice ` +
    `which is not visible to this module`,
  },
 },
 {
  name: "must reference license_kind module",
  fs: map[string][]byte{
   "top/Android.bp": []byte(`
    rule {
     name: "top_by_exception_only",
    }

    license {
     name: "top_proprietary",
     license_kinds: ["top_by_exception_only"],
     visibility: ["//visibility:public"],
    }`),
  },
  expectedErrors: []string{
   `top/Android.bp:6:5: module "top_proprietary": license_kinds property ` +
    `"top_by_exception_only" is not a license_kind module`,
  },
 },
 {
  name: "must not duplicate license_kind",
  fs: map[string][]byte{
   "top/Android.bp": []byte(`
    license_kind {
     name: "top_by_exception_only",
     conditions: ["by_exception_only"],
     visibility: ["//visibility:private"],
    }

    license_kind {
     name: "top_by_exception_only_2",
     conditions: ["by_exception_only"],
     visibility: ["//visibility:private"],
    }

    license {
     name: "top_proprietary",
     license_kinds: [
      "top_by_exception_only",
      "top_by_exception_only_2",
      "top_by_exception_only"
     ],
     visibility: ["//visibility:public"],
    }`),
  },
  expectedErrors: []string{
   `top/Android.bp:14:5: module "top_proprietary": Duplicated license kind: "top_by_exception_only"`,
  },
 },
 {
  name: "license_kind module must exist",
  fs: map[string][]byte{
   "top/Android.bp": []byte(`
    license {
     name: "top_notice_allowed",
     license_kinds: ["top_notice"],
     visibility: ["//visibility:public"],
    }`),
  },
  expectedErrors: []string{
   `top/Android.bp:2:5: "top_notice_allowed" depends on undefined module "top_notice"`,
  },
 },
 {
  name: "public license",
  fs: map[string][]byte{
   "top/Android.bp": []byte(`
    license_kind {
     name: "top_by_exception_only",
     conditions: ["by_exception_only"],
     visibility: ["//visibility:private"],
    }

    license {
     name: "top_proprietary",
     license_kinds: ["top_by_exception_only"],
     visibility: ["//visibility:public"],
    }`),
   "other/Android.bp": []byte(`
    rule {
     name: "arule",
     licenses: ["top_proprietary"],
    }`),
   "yetmore/Android.bp": []byte(`
    package {
     default_applicable_licenses: ["top_proprietary"],
    }`),
  },
 },
 {
  name: "multiple licenses",
  fs: map[string][]byte{
   "top/Android.bp": []byte(`
    package {
     default_applicable_licenses: ["top_proprietary"],
    }

    license_kind {
     name: "top_notice",
     conditions: ["notice"],
    }

    license_kind {
     name: "top_by_exception_only",
     conditions: ["by_exception_only"],
     visibility: ["//visibility:public"],
    }

    license {
     name: "top_allowed_as_notice",
     license_kinds: ["top_notice"],
    }

    license {
     name: "top_proprietary",
     license_kinds: ["top_by_exception_only"],
     visibility: ["//visibility:public"],
    }
    rule {
     name: "myrule",
     licenses: ["top_allowed_as_notice", "top_proprietary"]
    }`),
   "other/Android.bp": []byte(`
    rule {
     name: "arule",
     licenses: ["top_proprietary"],
    }`),
   "yetmore/Android.bp": []byte(`
    package {
     default_applicable_licenses: ["top_proprietary"],
    }`),
  },
 },
}

func TestLicense(t *testing.T) {
 for _, test := range licenseTests {
  t.Run(test.name, func(t *testing.T) {
   // Customize the common license text fixture factory.
   GroupFixturePreparers(
    prepareForLicenseTest,
    FixtureRegisterWithContext(func(ctx RegistrationContext) {
     ctx.RegisterModuleType("rule", newMockRuleModule)
    }),
    test.fs.AddToFixture(),
   ).
    ExtendWithErrorHandler(FixtureExpectsAllErrorsToMatchAPattern(test.expectedErrors)).
    RunTest(t)
  })
 }
}

func testLicense(t *testing.T, fs MockFS, expectedErrors []string) {
}

type mockRuleModule struct {
 ModuleBase
 DefaultableModuleBase
}

func newMockRuleModule() Module {
 m := &mockRuleModule{}
 InitAndroidModule(m)
 InitDefaultableModule(m)
 return m
}

func (p *mockRuleModule) GenerateAndroidBuildActions(ModuleContext) {
}

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