Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dd81e67e authored by Colin Cross's avatar Colin Cross
Browse files

Extend TestIncludeDirectoryOrdering to cover the platform variants too

Bug: 374130155
Test: TestIncludeDirectoryOrdering
Flag: EXEMPT test only
Change-Id: Ic75c049c9ffff809a4981e130583edd2681c6ae5
parent b0f26ed9
Loading
Loading
Loading
Loading
+107 −35
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import (
	"reflect"
	"regexp"
	"runtime"
	"slices"
	"strings"
	"testing"

@@ -2742,10 +2743,18 @@ func TestIncludeDirectoryOrdering(t *testing.T) {
		"${config.ArmToolchainCflags}",
		"${config.ArmArmv7ANeonCflags}",
		"${config.ArmGenericCflags}",
	}

	expectedTargetNDKFlags := []string{
		"-target",
		"armv7a-linux-androideabi21",
	}

	expectedTargetPlatformFlags := []string{
		"-target",
		"armv7a-linux-androideabi10000",
	}

	expectedIncludes := []string{
		"external/foo/android_arm_export_include_dirs",
		"external/foo/lib32_export_include_dirs",
@@ -2773,6 +2782,9 @@ func TestIncludeDirectoryOrdering(t *testing.T) {
		"external/foo/libarm",
		"external/foo/lib32",
		"external/foo/libandroid_arm",
	}

	expectedNDKSTLIncludes := []string{
		"defaults/cc/common/ndk_libc++_shared_include_dirs",
	}

@@ -2783,38 +2795,89 @@ func TestIncludeDirectoryOrdering(t *testing.T) {
	cstd := []string{"-std=gnu17", "-std=conly"}
	cppstd := []string{"-std=gnu++20", "-std=cpp", "-fno-rtti"}

	lastIncludes := []string{
	lastNDKIncludes := []string{
		"out/soong/ndk/sysroot/usr/include",
		"out/soong/ndk/sysroot/usr/include/arm-linux-androideabi",
	}

	combineSlices := func(slices ...[]string) []string {
		var ret []string
		for _, s := range slices {
			ret = append(ret, s...)
		}
		return ret
	lastPlatformIncludes := []string{
		"${config.CommonGlobalIncludes}",
	}

	testCases := []struct {
		name             string
		src              string
		expected []string
		expectedNDK      []string
		expectedPlatform []string
	}{
		{
			name: "c",
			src:  "foo.c",
			expected: combineSlices(baseExpectedFlags, conly, expectedIncludes, cflags, cstd, lastIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}),
			expectedNDK: slices.Concat(
				baseExpectedFlags,
				expectedTargetNDKFlags,
				conly,
				expectedIncludes,
				expectedNDKSTLIncludes,
				cflags,
				cstd,
				lastNDKIncludes,
				[]string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"},
			),
			expectedPlatform: slices.Concat(
				baseExpectedFlags,
				expectedTargetPlatformFlags,
				conly,
				expectedIncludes,
				cflags,
				cstd,
				lastPlatformIncludes,
				[]string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"},
			),
		},
		{
			name: "cc",
			src:  "foo.cc",
			expected: combineSlices(baseExpectedFlags, cppOnly, expectedIncludes, cflags, cppstd, lastIncludes, []string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"}),
			expectedNDK: slices.Concat(
				baseExpectedFlags,
				expectedTargetNDKFlags,
				cppOnly,
				expectedIncludes,
				expectedNDKSTLIncludes,
				cflags,
				cppstd,
				lastNDKIncludes,
				[]string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"},
			),
			expectedPlatform: slices.Concat(
				baseExpectedFlags,
				expectedTargetPlatformFlags,
				cppOnly,
				expectedIncludes,
				cflags,
				cppstd,
				lastPlatformIncludes,
				[]string{"${config.NoOverrideGlobalCflags}", "${config.NoOverrideExternalGlobalCflags}"},
			),
		},
		{
			name: "assemble",
			src:  "foo.s",
			expected: combineSlices(baseExpectedFlags, []string{"${config.CommonGlobalAsflags}"}, expectedIncludes, lastIncludes),
			expectedNDK: slices.Concat(
				baseExpectedFlags,
				expectedTargetNDKFlags,
				[]string{"${config.CommonGlobalAsflags}"},
				expectedIncludes,
				expectedNDKSTLIncludes,
				lastNDKIncludes,
			),
			expectedPlatform: slices.Concat(
				baseExpectedFlags,
				expectedTargetPlatformFlags,
				[]string{"${config.CommonGlobalAsflags}"},
				expectedIncludes,
				lastPlatformIncludes,
			),
		},
	}

@@ -2909,11 +2972,12 @@ func TestIncludeDirectoryOrdering(t *testing.T) {
		`, lib, lib)
			}

			runTest := func(t *testing.T, variant string, expected []string) {
				ctx := android.GroupFixturePreparers(
					PrepareForIntegrationTestWithCc,
					android.FixtureAddTextFile("external/foo/Android.bp", bp),
				).RunTest(t)
			cflags := ctx.ModuleForTests("libfoo", "android_arm_armv7-a-neon_sdk_static").Output("obj/external/foo/foo.o").Args["cFlags"]
				cflags := ctx.ModuleForTests("libfoo", variant).Output("obj/external/foo/foo.o").Args["cFlags"]

				var includes []string
				flags := strings.Split(cflags, " ")
@@ -2927,7 +2991,15 @@ func TestIncludeDirectoryOrdering(t *testing.T) {
					}
				}

			android.AssertArrayString(t, "includes", tc.expected, includes)
				android.AssertArrayString(t, "includes", expected, includes)
			}

			t.Run("platform", func(t *testing.T) {
				runTest(t, "android_arm_armv7-a-neon_static", tc.expectedPlatform)
			})
			t.Run("ndk", func(t *testing.T) {
				runTest(t, "android_arm_armv7-a-neon_sdk_static", tc.expectedNDK)
			})
		})
	}