123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package android
- import (
- "testing"
- "github.com/google/blueprint"
- )
- var licenseKindTests = []struct {
- name string
- fs MockFS
- expectedErrors []string
- }{
- {
- name: "license_kind must not accept licenses property",
- fs: map[string][]byte{
- "top/Android.bp": []byte(`
- license_kind {
- name: "top_license",
- licenses: ["other_license"],
- }`),
- },
- expectedErrors: []string{
- `top/Android.bp:4:14: unrecognized property "licenses"`,
- },
- },
- {
- name: "bad license_kind",
- fs: map[string][]byte{
- "top/Android.bp": []byte(`
- license_kind {
- name: "top_notice",
- conditions: ["notice"],
- }`),
- "other/Android.bp": []byte(`
- mock_license {
- name: "other_notice",
- license_kinds: ["notice"],
- }`),
- },
- expectedErrors: []string{
- `other/Android.bp:2:5: "other_notice" depends on undefined module "notice"`,
- },
- },
- {
- name: "good license kind",
- fs: map[string][]byte{
- "top/Android.bp": []byte(`
- license_kind {
- name: "top_by_exception_only",
- conditions: ["by_exception_only"],
- }
- mock_license {
- name: "top_proprietary",
- license_kinds: ["top_by_exception_only"],
- }`),
- "other/Android.bp": []byte(`
- mock_license {
- name: "other_proprietary",
- license_kinds: ["top_proprietary"],
- }`),
- },
- },
- {
- name: "multiple license kinds",
- fs: map[string][]byte{
- "top/Android.bp": []byte(`
- license_kind {
- name: "top_notice",
- conditions: ["notice"],
- }
- license_kind {
- name: "top_by_exception_only",
- conditions: ["by_exception_only"],
- }
- mock_license {
- name: "top_allowed_as_notice",
- license_kinds: ["top_notice"],
- }
- mock_license {
- name: "top_proprietary",
- license_kinds: ["top_by_exception_only"],
- }`),
- "other/Android.bp": []byte(`
- mock_license {
- name: "other_rule",
- license_kinds: ["top_by_exception_only"],
- }`),
- },
- },
- }
- func TestLicenseKind(t *testing.T) {
- for _, test := range licenseKindTests {
- t.Run(test.name, func(t *testing.T) {
- GroupFixturePreparers(
- prepareForLicenseTest,
- FixtureRegisterWithContext(func(ctx RegistrationContext) {
- ctx.RegisterModuleType("mock_license", newMockLicenseModule)
- }),
- test.fs.AddToFixture(),
- ).
- ExtendWithErrorHandler(FixtureExpectsAllErrorsToMatchAPattern(test.expectedErrors)).
- RunTest(t)
- })
- }
- }
- type mockLicenseProperties struct {
- License_kinds []string
- }
- type mockLicenseModule struct {
- ModuleBase
- DefaultableModuleBase
- properties mockLicenseProperties
- }
- func newMockLicenseModule() Module {
- m := &mockLicenseModule{}
- m.AddProperties(&m.properties)
- InitAndroidArchModule(m, HostAndDeviceSupported, MultilibCommon)
- InitDefaultableModule(m)
- return m
- }
- type licensekindTag struct {
- blueprint.BaseDependencyTag
- }
- func (j *mockLicenseModule) DepsMutator(ctx BottomUpMutatorContext) {
- m, ok := ctx.Module().(Module)
- if !ok {
- return
- }
- ctx.AddDependency(m, licensekindTag{}, j.properties.License_kinds...)
- }
- func (p *mockLicenseModule) GenerateAndroidBuildActions(ModuleContext) {
- }
|