From 3092a8e573e582eef58421b918c4af18536fa097 Mon Sep 17 00:00:00 2001 From: Trevor Radcliffe Date: Wed, 24 Aug 2022 15:25:25 +0000 Subject: [PATCH] Write Soong tests to confirm Sysprop directories These tests will break if the sysprop output files and directory paths are changed. At the very least, this is a good warning to let us know to change other places accordingly, like the Bazel rule. Bug: 235131252 Test: tests Change-Id: I80f037a6e8fe68cdd2042c64175e0d3bd3fefde3 --- cc/cc_test.go | 8 ++++---- cc/gen_test.go | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/cc/cc_test.go b/cc/cc_test.go index f02570020..75a9f1937 100644 --- a/cc/cc_test.go +++ b/cc/cc_test.go @@ -4111,7 +4111,7 @@ func TestIncludeDirsExporting(t *testing.T) { name: "libfoo", srcs: [ "foo.c", - "a.sysprop", + "path/to/a.sysprop", "b.aidl", "a.proto", ], @@ -4124,11 +4124,11 @@ func TestIncludeDirsExporting(t *testing.T) { `), expectedSystemIncludeDirs(``), expectedGeneratedHeaders(` - .intermediates/libfoo/android_arm64_armv8-a_shared/gen/sysprop/include/a.sysprop.h + .intermediates/libfoo/android_arm64_armv8-a_shared/gen/sysprop/include/path/to/a.sysprop.h `), expectedOrderOnlyDeps(` - .intermediates/libfoo/android_arm64_armv8-a_shared/gen/sysprop/include/a.sysprop.h - .intermediates/libfoo/android_arm64_armv8-a_shared/gen/sysprop/public/include/a.sysprop.h + .intermediates/libfoo/android_arm64_armv8-a_shared/gen/sysprop/include/path/to/a.sysprop.h + .intermediates/libfoo/android_arm64_armv8-a_shared/gen/sysprop/public/include/path/to/a.sysprop.h `), ) }) diff --git a/cc/gen_test.go b/cc/gen_test.go index 40a571619..85df33312 100644 --- a/cc/gen_test.go +++ b/cc/gen_test.go @@ -74,4 +74,26 @@ func TestGen(t *testing.T) { }) + t.Run("sysprop", func(t *testing.T) { + ctx := testCc(t, ` + cc_library { + name: "libsysprop", + srcs: [ + "path/to/foo.sysprop", + ], + }`) + + outDir := "out/soong/.intermediates/libsysprop/android_arm64_armv8-a_static/gen" + syspropBuildParams := ctx.ModuleForTests("libsysprop", "android_arm64_armv8-a_static").Rule("sysprop") + + android.AssertStringEquals(t, "header output directory does not match", outDir+"/sysprop/include/path/to", syspropBuildParams.Args["headerOutDir"]) + android.AssertStringEquals(t, "public output directory does not match", outDir+"/sysprop/public/include/path/to", syspropBuildParams.Args["publicOutDir"]) + android.AssertStringEquals(t, "src output directory does not match", outDir+"/sysprop/path/to", syspropBuildParams.Args["srcOutDir"]) + android.AssertStringEquals(t, "output include name does not match", "path/to/foo.sysprop.h", syspropBuildParams.Args["includeName"]) + android.AssertStringEquals(t, "Input file does not match", "path/to/foo.sysprop", syspropBuildParams.Input.String()) + android.AssertStringEquals(t, "Output file does not match", outDir+"/sysprop/path/to/foo.sysprop.cpp", syspropBuildParams.Output.String()) + android.AssertStringListContains(t, "Implicit outputs does not contain header file", syspropBuildParams.ImplicitOutputs.Strings(), outDir+"/sysprop/include/path/to/foo.sysprop.h") + android.AssertStringListContains(t, "Implicit outputs does not contain public header file", syspropBuildParams.ImplicitOutputs.Strings(), outDir+"/sysprop/public/include/path/to/foo.sysprop.h") + android.AssertIntEquals(t, "Implicit outputs contains the incorrect number of elements", 2, len(syspropBuildParams.ImplicitOutputs.Strings())) + }) }