diff options
author | Jaewoong Jung <jungjw@google.com> | 2020-06-01 10:45:49 -0700 |
---|---|---|
committer | Jaewoong Jung <jungjw@google.com> | 2020-06-01 13:44:48 -0700 |
commit | 4b79e98a6e4f882d6bbb882e9fed626e0c490bd7 (patch) | |
tree | f1497567645e52e96f18a1cc46a1eee07e93c2a4 /sh/sh_binary_test.go | |
parent | a91b64d3eeea5598062326c02cdd14dd8d8b704b (diff) |
Soong package structure refactoring
Give prebuilt_etc and sh_binary their own packages and split the
gigantic main Android.bp up to small, per-package ones.
Test: m nothing, TreeHugger
Bug: 156980228
Change-Id: I7b00cd344b9f16861f1ff39edf0029f016b853d0
Diffstat (limited to 'sh/sh_binary_test.go')
-rw-r--r-- | sh/sh_binary_test.go | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/sh/sh_binary_test.go b/sh/sh_binary_test.go new file mode 100644 index 000000000..6c0d96abe --- /dev/null +++ b/sh/sh_binary_test.go @@ -0,0 +1,99 @@ +package sh + +import ( + "io/ioutil" + "os" + "reflect" + "testing" + + "android/soong/android" +) + +var buildDir string + +func setUp() { + var err error + buildDir, err = ioutil.TempDir("", "soong_sh_test") + if err != nil { + panic(err) + } +} + +func tearDown() { + os.RemoveAll(buildDir) +} + +func TestMain(m *testing.M) { + run := func() int { + setUp() + defer tearDown() + + return m.Run() + } + + os.Exit(run()) +} + +func testShBinary(t *testing.T, bp string) (*android.TestContext, android.Config) { + fs := map[string][]byte{ + "test.sh": nil, + "testdata/data1": nil, + "testdata/sub/data2": nil, + } + + config := android.TestArchConfig(buildDir, nil, bp, fs) + + ctx := android.NewTestArchContext() + ctx.RegisterModuleType("sh_test", ShTestFactory) + ctx.RegisterModuleType("sh_test_host", ShTestHostFactory) + ctx.Register(config) + _, errs := ctx.ParseFileList(".", []string{"Android.bp"}) + android.FailIfErrored(t, errs) + _, errs = ctx.PrepareBuildActions(config) + android.FailIfErrored(t, errs) + + return ctx, config +} + +func TestShTestTestData(t *testing.T) { + ctx, config := testShBinary(t, ` + sh_test { + name: "foo", + src: "test.sh", + filename: "test.sh", + data: [ + "testdata/data1", + "testdata/sub/data2", + ], + } + `) + + mod := ctx.ModuleForTests("foo", "android_arm64_armv8-a").Module().(*ShTest) + + entries := android.AndroidMkEntriesForTest(t, config, "", mod)[0] + expected := []string{":testdata/data1", ":testdata/sub/data2"} + actual := entries.EntryMap["LOCAL_TEST_DATA"] + if !reflect.DeepEqual(expected, actual) { + t.Errorf("Unexpected test data expected: %q, actual: %q", expected, actual) + } +} + +func TestShTestHost(t *testing.T) { + ctx, _ := testShBinary(t, ` + sh_test_host { + name: "foo", + src: "test.sh", + filename: "test.sh", + data: [ + "testdata/data1", + "testdata/sub/data2", + ], + } + `) + + buildOS := android.BuildOs.String() + mod := ctx.ModuleForTests("foo", buildOS+"_x86_64").Module().(*ShTest) + if !mod.Host() { + t.Errorf("host bit is not set for a sh_test_host module.") + } +} |