Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4143ee81 authored by Cole Faust's avatar Cole Faust
Browse files

Add support for selects on string lists

Bug: 375341427
Test: m nothing --no-skip-soong-tests
Change-Id: I6ecab80f054e8594dacbeaaa33714b2f55af16b5
parent e00f2462
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2450,6 +2450,8 @@ func (e configurationEvalutor) EvaluateConfiguration(condition proptools.Configu
					return proptools.ConfigurableValueString(v)
				case "bool":
					return proptools.ConfigurableValueBool(v == "true")
				case "string_list":
					return proptools.ConfigurableValueStringList(strings.Split(v, " "))
				default:
					panic("unhandled soong config variable type: " + ty)
				}
+48 −0
Original line number Diff line number Diff line
@@ -1031,6 +1031,54 @@ my_module_type {
				my_string_list: &[]string{"d2", "e2", "f2", "a1", "b1", "c1"},
			},
		},
		{
			name: "string list variables",
			bp: `
my_module_type {
	name: "foo",
	my_string_list: ["a"] + select(soong_config_variable("my_namespace", "my_var"), {
		any @ my_var: my_var,
		default: [],
	}),
}
`,
			vendorVars: map[string]map[string]string{
				"my_namespace": {
					"my_var": "b c",
				},
			},
			vendorVarTypes: map[string]map[string]string{
				"my_namespace": {
					"my_var": "string_list",
				},
			},
			provider: selectsTestProvider{
				my_string_list: &[]string{"a", "b", "c"},
			},
		},
		{
			name: "string list variables don't match string matchers",
			bp: `
my_module_type {
	name: "foo",
	my_string_list: ["a"] + select(soong_config_variable("my_namespace", "my_var"), {
		"foo": ["b"],
		default: [],
	}),
}
`,
			vendorVars: map[string]map[string]string{
				"my_namespace": {
					"my_var": "b c",
				},
			},
			vendorVarTypes: map[string]map[string]string{
				"my_namespace": {
					"my_var": "string_list",
				},
			},
			expectedError: `Expected all branches of a select on condition soong_config_variable\("my_namespace", "my_var"\) to have type string_list, found string`,
		},
	}

	for _, tc := range testCases {