1// Copyright 2024 Google Inc. All rights reserved. 2// Licensed under the Apache License, Version 2.0 (the "License"); 3// you may not use this file except in compliance with the License. 4// You may obtain a copy of the License at 5// 6// http://www.apache.org/licenses/LICENSE-2.0 7// 8// Unless required by applicable law or agreed to in writing, software 9// distributed under the License is distributed on an "AS IS" BASIS, 10// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11// See the License for the specific language governing permissions and 12// limitations under the License. 13 14package systemfeatures 15 16import ( 17 "android/soong/android" 18 19 "testing" 20) 21 22func TestJavaSystemFeaturesSrcs(t *testing.T) { 23 bp := ` 24java_system_features_srcs { 25 name: "system-features-srcs", 26 full_class_name: "com.android.test.RoSystemFeatures", 27} 28` 29 30 res := android.GroupFixturePreparers( 31 android.FixtureRegisterWithContext(registerSystemFeaturesComponents), 32 android.PrepareForTestWithBuildFlag("RELEASE_USE_SYSTEM_FEATURE_BUILD_FLAGS", "true"), 33 android.PrepareForTestWithBuildFlag("RELEASE_SYSTEM_FEATURE_AUTOMOTIVE", "0"), 34 android.PrepareForTestWithBuildFlag("RELEASE_SYSTEM_FEATURE_TELEVISION", "UNAVAILABLE"), 35 android.PrepareForTestWithBuildFlag("RELEASE_SYSTEM_FEATURE_WATCH", ""), 36 android.PrepareForTestWithBuildFlag("RELEASE_NOT_SYSTEM_FEATURE_FOO", "BAR"), 37 ).RunTestWithBp(t, bp) 38 39 module := res.ModuleForTests("system-features-srcs", "") 40 cmd := module.Rule("system-features-srcs").RuleParams.Command 41 android.AssertStringDoesContain(t, "Expected fully class name", cmd, " com.android.test.RoSystemFeatures ") 42 android.AssertStringDoesContain(t, "Expected readonly flag", cmd, "--readonly=true") 43 android.AssertStringDoesContain(t, "Expected AUTOMOTIVE feature flag", cmd, "--feature=AUTOMOTIVE:0 ") 44 android.AssertStringDoesContain(t, "Expected TELEVISION feature flag", cmd, "--feature=TELEVISION:UNAVAILABLE ") 45 android.AssertStringDoesContain(t, "Expected WATCH feature flag", cmd, "--feature=WATCH: ") 46 android.AssertStringDoesNotContain(t, "Unexpected FOO arg from non-system feature flag", cmd, "FOO") 47 48 systemFeaturesModule := module.Module().(*javaSystemFeaturesSrcs) 49 expectedOutputPath := "out/soong/.intermediates/system-features-srcs/gen/RoSystemFeatures.java" 50 android.AssertPathsRelativeToTopEquals(t, "Expected output file", []string{expectedOutputPath}, systemFeaturesModule.Srcs()) 51} 52