diff options
Diffstat (limited to 'sh/sh_binary.go')
-rw-r--r-- | sh/sh_binary.go | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/sh/sh_binary.go b/sh/sh_binary.go index 853f3d368..320e97f19 100644 --- a/sh/sh_binary.go +++ b/sh/sh_binary.go @@ -15,6 +15,7 @@ package sh import ( + "fmt" "path/filepath" "strings" @@ -164,6 +165,9 @@ type TestProperties struct { // Test options. Test_options android.CommonTestOptions + + // a list of extra test configuration files that should be installed with the module. + Extra_test_configs []string `android:"path,arch_variant"` } type ShBinary struct { @@ -186,8 +190,9 @@ type ShTest struct { installDir android.InstallPath - data []android.DataPath - testConfig android.Path + data []android.DataPath + testConfig android.Path + extraTestConfigs android.Paths dataModules map[string]android.Path } @@ -471,6 +476,7 @@ func (s *ShTest) GenerateAndroidBuildActions(ctx android.ModuleContext) { HostTemplate: "${ShellTestConfigTemplate}", }) + s.extraTestConfigs = android.PathsForModuleSrc(ctx, s.testProperties.Extra_test_configs) s.dataModules = make(map[string]android.Path) ctx.VisitDirectDeps(func(dep android.Module) { depTag := ctx.OtherModuleDependencyTag(dep) @@ -510,6 +516,27 @@ func (s *ShTest) GenerateAndroidBuildActions(ctx android.ModuleContext) { installedData := ctx.InstallTestData(s.installDir, s.data) s.installedFile = ctx.InstallExecutable(s.installDir, s.outputFilePath.Base(), s.outputFilePath, installedData...) + + mkEntries := s.AndroidMkEntries()[0] + android.SetProvider(ctx, tradefed.BaseTestProviderKey, tradefed.BaseTestProviderData{ + TestcaseRelDataFiles: addArch(ctx.Arch().ArchType.String(), installedData.Paths()), + OutputFile: s.outputFilePath, + TestConfig: s.testConfig, + TestSuites: s.testProperties.Test_suites, + IsHost: false, + IsUnitTest: Bool(s.testProperties.Test_options.Unit_test), + MkInclude: mkEntries.Include, + MkAppClass: mkEntries.Class, + InstallDir: s.installDir, + }) +} + +func addArch(archType string, paths android.Paths) []string { + archRelPaths := []string{} + for _, p := range paths { + archRelPaths = append(archRelPaths, fmt.Sprintf("%s/%s", archType, p.Rel())) + } + return archRelPaths } func (s *ShTest) InstallInData() bool { @@ -533,6 +560,9 @@ func (s *ShTest) AndroidMkEntries() []android.AndroidMkEntries { entries.AddStrings("LOCAL_TEST_DATA_BINS", s.testProperties.Data_bins...) } entries.SetBoolIfTrue("LOCAL_COMPATIBILITY_PER_TESTCASE_DIRECTORY", Bool(s.testProperties.Per_testcase_directory)) + if len(s.extraTestConfigs) > 0 { + entries.AddStrings("LOCAL_EXTRA_FULL_TEST_CONFIGS", s.extraTestConfigs.Strings()...) + } s.testProperties.Test_options.SetAndroidMkEntries(entries) }, |