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

Commit f41f0e5c authored by Colin Cross's avatar Colin Cross Committed by Gerrit Code Review
Browse files

Merge "Extend TestIncludeDirectoryOrdering to cover the platform variants too" into main

parents b5e6d8ce dd81e67e
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)
			})
		})
	}