Add unit_test test option in sh_test_host

This change allows sh_test_host to be included
in host-unit-tests suite when test option `unit_test` is set to true.

Bug: 183209767
Test: m host-unit-tests
Change-Id: I5b441d5f49468cb681eb414dade8a1309c6e810a
This commit is contained in:
Dan Shi
2021-05-24 12:04:54 -07:00
parent 18cf19745e
commit b40deac018
2 changed files with 19 additions and 0 deletions

View File

@@ -104,6 +104,12 @@ type shBinaryProperties struct {
Recovery_available *bool Recovery_available *bool
} }
// Test option struct.
type TestOptions struct {
// If the test is a hostside(no device required) unittest that shall be run during presubmit check.
Unit_test *bool
}
type TestProperties struct { type TestProperties struct {
// list of compatibility suites (for example "cts", "vts") that the module should be // list of compatibility suites (for example "cts", "vts") that the module should be
// installed into. // installed into.
@@ -143,6 +149,9 @@ type TestProperties struct {
// list of device library modules that should be installed alongside the test. // list of device library modules that should be installed alongside the test.
// Only available for host sh_test modules. // Only available for host sh_test modules.
Data_device_libs []string `android:"path,arch_variant"` Data_device_libs []string `android:"path,arch_variant"`
// Test options.
Test_options TestOptions
} }
type ShBinary struct { type ShBinary struct {
@@ -440,6 +449,9 @@ func (s *ShTest) AndroidMkEntries() []android.AndroidMkEntries {
dir := strings.TrimSuffix(s.dataModules[relPath].String(), relPath) dir := strings.TrimSuffix(s.dataModules[relPath].String(), relPath)
entries.AddStrings("LOCAL_TEST_DATA", dir+":"+relPath) entries.AddStrings("LOCAL_TEST_DATA", dir+":"+relPath)
} }
if Bool(s.testProperties.Test_options.Unit_test) {
entries.SetBool("LOCAL_IS_UNIT_TEST", true)
}
}, },
}, },
}} }}

View File

@@ -3,6 +3,7 @@ package sh
import ( import (
"os" "os"
"path/filepath" "path/filepath"
"strconv"
"testing" "testing"
"android/soong/android" "android/soong/android"
@@ -148,6 +149,9 @@ func TestShTestHost(t *testing.T) {
"testdata/data1", "testdata/data1",
"testdata/sub/data2", "testdata/sub/data2",
], ],
test_options: {
unit_test: true,
},
} }
`) `)
@@ -156,6 +160,9 @@ func TestShTestHost(t *testing.T) {
if !mod.Host() { if !mod.Host() {
t.Errorf("host bit is not set for a sh_test_host module.") t.Errorf("host bit is not set for a sh_test_host module.")
} }
entries := android.AndroidMkEntriesForTest(t, ctx, mod)[0]
actualData, _ := strconv.ParseBool(entries.EntryMap["LOCAL_IS_UNIT_TEST"][0])
android.AssertBoolEquals(t, "LOCAL_IS_UNIT_TEST", true, actualData)
} }
func TestShTestHost_dataDeviceModules(t *testing.T) { func TestShTestHost_dataDeviceModules(t *testing.T) {