Loading android/paths.go +40 −16 Original line number Diff line number Diff line Loading @@ -1237,7 +1237,12 @@ func PathForModuleRes(ctx ModuleContext, pathComponents ...string) ModuleResPath type InstallPath struct { basePath baseDir string // "../" for Make paths to convert "out/soong" to "out", "" for Soong paths // partitionDir is the part of the InstallPath that is automatically determined according to the context. // For example, it is host/<os>-<arch> for host modules, and target/product/<device>/<partition> for device modules. partitionDir string // makePath indicates whether this path is for Soong (false) or Make (true). makePath bool } func (p InstallPath) buildDir() string { Loading @@ -1250,7 +1255,23 @@ var _ WritablePath = InstallPath{} func (p InstallPath) writablePath() {} func (p InstallPath) String() string { return filepath.Join(p.config.buildDir, p.baseDir, p.path) if p.makePath { // Make path starts with out/ instead of out/soong. return filepath.Join(p.config.buildDir, "../", p.path) } else { return filepath.Join(p.config.buildDir, p.path) } } // PartitionDir returns the path to the partition where the install path is rooted at. It is // out/soong/target/product/<device>/<partition> for device modules, and out/soong/host/<os>-<arch> for host modules. // The ./soong is dropped if the install path is for Make. func (p InstallPath) PartitionDir() string { if p.makePath { return filepath.Join(p.config.buildDir, "../", p.partitionDir) } else { return filepath.Join(p.config.buildDir, p.partitionDir) } } // Join creates a new InstallPath with paths... joined with the current path. The Loading @@ -1271,7 +1292,7 @@ func (p InstallPath) withRel(rel string) InstallPath { // ToMakePath returns a new InstallPath that points to Make's install directory instead of Soong's, // i.e. out/ instead of out/soong/. func (p InstallPath) ToMakePath() InstallPath { p.baseDir = "../" p.makePath = true return p } Loading Loading @@ -1301,10 +1322,10 @@ func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string func pathForInstall(ctx PathContext, os OsType, arch ArchType, partition string, debug bool, pathComponents ...string) InstallPath { var outPaths []string var partionPaths []string if os.Class == Device { outPaths = []string{"target", "product", ctx.Config().DeviceName(), partition} partionPaths = []string{"target", "product", ctx.Config().DeviceName(), partition} } else { osName := os.String() if os == Linux { Loading @@ -1320,30 +1341,33 @@ func pathForInstall(ctx PathContext, os OsType, arch ArchType, partition string, if os.Class == Host && (arch == X86_64 || arch == Common) { archName = "x86" } outPaths = []string{"host", osName + "-" + archName, partition} partionPaths = []string{"host", osName + "-" + archName, partition} } if debug { outPaths = append([]string{"debug"}, outPaths...) partionPaths = append([]string{"debug"}, partionPaths...) } outPaths = append(outPaths, pathComponents...) path, err := validatePath(outPaths...) partionPath, err := validatePath(partionPaths...) if err != nil { reportPathError(ctx, err) } ret := InstallPath{basePath{path, ctx.Config(), ""}, ""} base := InstallPath{ basePath: basePath{partionPath, ctx.Config(), ""}, partitionDir: partionPath, makePath: false, } return ret return base.Join(ctx, pathComponents...) } func pathForNdkOrSdkInstall(ctx PathContext, prefix string, paths []string) InstallPath { paths = append([]string{prefix}, paths...) path, err := validatePath(paths...) if err != nil { reportPathError(ctx, err) base := InstallPath{ basePath: basePath{prefix, ctx.Config(), ""}, partitionDir: prefix, makePath: false, } return InstallPath{basePath{path, ctx.Config(), ""}, ""} return base.Join(ctx, paths...) } func PathForNdkInstall(ctx PathContext, paths ...string) InstallPath { Loading android/paths_test.go +124 −58 Original line number Diff line number Diff line Loading @@ -268,6 +268,7 @@ func TestPathForModuleInstall(t *testing.T) { ctx *moduleInstallPathContextImpl in []string out string partitionDir string }{ { name: "host binary", Loading @@ -279,6 +280,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "host/linux-x86/bin/my_test", partitionDir: "host/linux-x86", }, { Loading @@ -291,6 +293,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/system/bin/my_test", partitionDir: "target/product/test_device/system", }, { name: "vendor binary", Loading @@ -305,6 +308,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/vendor/bin/my_test", partitionDir: "target/product/test_device/vendor", }, { name: "odm binary", Loading @@ -319,6 +323,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/odm/bin/my_test", partitionDir: "target/product/test_device/odm", }, { name: "product binary", Loading @@ -333,6 +338,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/product/bin/my_test", partitionDir: "target/product/test_device/product", }, { name: "system_ext binary", Loading @@ -347,6 +353,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/system_ext/bin/my_test", partitionDir: "target/product/test_device/system_ext", }, { name: "root binary", Loading @@ -359,6 +366,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"my_test"}, out: "target/product/test_device/root/my_test", partitionDir: "target/product/test_device/root", }, { name: "recovery binary", Loading @@ -371,6 +379,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin/my_test"}, out: "target/product/test_device/recovery/root/system/bin/my_test", partitionDir: "target/product/test_device/recovery/root/system", }, { name: "recovery root binary", Loading @@ -384,6 +393,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"my_test"}, out: "target/product/test_device/recovery/root/my_test", partitionDir: "target/product/test_device/recovery/root", }, { Loading @@ -397,6 +407,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/nativetest/my_test", partitionDir: "target/product/test_device/data", }, { name: "vendor native test binary", Loading @@ -412,6 +423,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/nativetest/my_test", partitionDir: "target/product/test_device/data", }, { name: "odm native test binary", Loading @@ -427,6 +439,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/nativetest/my_test", partitionDir: "target/product/test_device/data", }, { name: "product native test binary", Loading @@ -442,6 +455,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/nativetest/my_test", partitionDir: "target/product/test_device/data", }, { Loading @@ -458,6 +472,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/nativetest/my_test", partitionDir: "target/product/test_device/data", }, { Loading @@ -471,6 +486,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/data/asan/system/bin/my_test", partitionDir: "target/product/test_device/data/asan/system", }, { name: "sanitized vendor binary", Loading @@ -486,6 +502,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/data/asan/vendor/bin/my_test", partitionDir: "target/product/test_device/data/asan/vendor", }, { name: "sanitized odm binary", Loading @@ -501,6 +518,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/data/asan/odm/bin/my_test", partitionDir: "target/product/test_device/data/asan/odm", }, { name: "sanitized product binary", Loading @@ -516,6 +534,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/data/asan/product/bin/my_test", partitionDir: "target/product/test_device/data/asan/product", }, { Loading @@ -532,6 +551,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/data/asan/system_ext/bin/my_test", partitionDir: "target/product/test_device/data/asan/system_ext", }, { Loading @@ -546,6 +566,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/asan/data/nativetest/my_test", partitionDir: "target/product/test_device/data/asan/data", }, { name: "sanitized vendor native test binary", Loading @@ -562,6 +583,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/asan/data/nativetest/my_test", partitionDir: "target/product/test_device/data/asan/data", }, { name: "sanitized odm native test binary", Loading @@ -578,6 +600,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/asan/data/nativetest/my_test", partitionDir: "target/product/test_device/data/asan/data", }, { name: "sanitized product native test binary", Loading @@ -594,6 +617,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/asan/data/nativetest/my_test", partitionDir: "target/product/test_device/data/asan/data", }, { name: "sanitized system_ext native test binary", Loading @@ -610,6 +634,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/asan/data/nativetest/my_test", partitionDir: "target/product/test_device/data/asan/data", }, { name: "device testcases", ctx: &moduleInstallPathContextImpl{ Loading @@ -621,6 +646,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"my_test", "my_test_bin"}, out: "target/product/test_device/testcases/my_test/my_test_bin", partitionDir: "target/product/test_device/testcases", }, { name: "host testcases", ctx: &moduleInstallPathContextImpl{ Loading @@ -632,6 +658,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"my_test", "my_test_bin"}, out: "host/linux-x86/testcases/my_test/my_test_bin", partitionDir: "host/linux-x86/testcases", }, { name: "forced host testcases", ctx: &moduleInstallPathContextImpl{ Loading @@ -645,6 +672,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"my_test", "my_test_bin"}, out: "host/linux-x86/testcases/my_test/my_test_bin", partitionDir: "host/linux-x86/testcases", }, } Loading @@ -657,10 +685,48 @@ func TestPathForModuleInstall(t *testing.T) { output.basePath.path, tc.out) } if output.partitionDir != tc.partitionDir { t.Errorf("unexpected partitionDir:\n got: %q\nwant: %q\n", output.partitionDir, tc.partitionDir) } }) } } func TestBaseDirForInstallPath(t *testing.T) { testConfig := pathTestConfig("") deviceTarget := Target{Os: Android, Arch: Arch{ArchType: Arm64}} ctx := &moduleInstallPathContextImpl{ baseModuleContext: baseModuleContext{ os: deviceTarget.Os, target: deviceTarget, }, } ctx.baseModuleContext.config = testConfig actual := PathForModuleInstall(ctx, "foo", "bar") expectedBaseDir := "target/product/test_device/system" if actual.partitionDir != expectedBaseDir { t.Errorf("unexpected partitionDir:\n got: %q\nwant: %q\n", actual.partitionDir, expectedBaseDir) } expectedRelPath := "foo/bar" if actual.Rel() != expectedRelPath { t.Errorf("unexpected Rel():\n got: %q\nwant: %q\n", actual.Rel(), expectedRelPath) } actualAfterJoin := actual.Join(ctx, "baz") // partitionDir is preserved even after joining if actualAfterJoin.partitionDir != expectedBaseDir { t.Errorf("unexpected partitionDir after joining:\n got: %q\nwant: %q\n", actualAfterJoin.partitionDir, expectedBaseDir) } // Rel() is updated though expectedRelAfterJoin := "baz" if actualAfterJoin.Rel() != expectedRelAfterJoin { t.Errorf("unexpected Rel() after joining:\n got: %q\nwant: %q\n", actualAfterJoin.Rel(), expectedRelAfterJoin) } } func TestDirectorySortedPaths(t *testing.T) { config := TestConfig("out", nil, "", map[string][]byte{ "Android.bp": nil, Loading Loading
android/paths.go +40 −16 Original line number Diff line number Diff line Loading @@ -1237,7 +1237,12 @@ func PathForModuleRes(ctx ModuleContext, pathComponents ...string) ModuleResPath type InstallPath struct { basePath baseDir string // "../" for Make paths to convert "out/soong" to "out", "" for Soong paths // partitionDir is the part of the InstallPath that is automatically determined according to the context. // For example, it is host/<os>-<arch> for host modules, and target/product/<device>/<partition> for device modules. partitionDir string // makePath indicates whether this path is for Soong (false) or Make (true). makePath bool } func (p InstallPath) buildDir() string { Loading @@ -1250,7 +1255,23 @@ var _ WritablePath = InstallPath{} func (p InstallPath) writablePath() {} func (p InstallPath) String() string { return filepath.Join(p.config.buildDir, p.baseDir, p.path) if p.makePath { // Make path starts with out/ instead of out/soong. return filepath.Join(p.config.buildDir, "../", p.path) } else { return filepath.Join(p.config.buildDir, p.path) } } // PartitionDir returns the path to the partition where the install path is rooted at. It is // out/soong/target/product/<device>/<partition> for device modules, and out/soong/host/<os>-<arch> for host modules. // The ./soong is dropped if the install path is for Make. func (p InstallPath) PartitionDir() string { if p.makePath { return filepath.Join(p.config.buildDir, "../", p.partitionDir) } else { return filepath.Join(p.config.buildDir, p.partitionDir) } } // Join creates a new InstallPath with paths... joined with the current path. The Loading @@ -1271,7 +1292,7 @@ func (p InstallPath) withRel(rel string) InstallPath { // ToMakePath returns a new InstallPath that points to Make's install directory instead of Soong's, // i.e. out/ instead of out/soong/. func (p InstallPath) ToMakePath() InstallPath { p.baseDir = "../" p.makePath = true return p } Loading Loading @@ -1301,10 +1322,10 @@ func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string func pathForInstall(ctx PathContext, os OsType, arch ArchType, partition string, debug bool, pathComponents ...string) InstallPath { var outPaths []string var partionPaths []string if os.Class == Device { outPaths = []string{"target", "product", ctx.Config().DeviceName(), partition} partionPaths = []string{"target", "product", ctx.Config().DeviceName(), partition} } else { osName := os.String() if os == Linux { Loading @@ -1320,30 +1341,33 @@ func pathForInstall(ctx PathContext, os OsType, arch ArchType, partition string, if os.Class == Host && (arch == X86_64 || arch == Common) { archName = "x86" } outPaths = []string{"host", osName + "-" + archName, partition} partionPaths = []string{"host", osName + "-" + archName, partition} } if debug { outPaths = append([]string{"debug"}, outPaths...) partionPaths = append([]string{"debug"}, partionPaths...) } outPaths = append(outPaths, pathComponents...) path, err := validatePath(outPaths...) partionPath, err := validatePath(partionPaths...) if err != nil { reportPathError(ctx, err) } ret := InstallPath{basePath{path, ctx.Config(), ""}, ""} base := InstallPath{ basePath: basePath{partionPath, ctx.Config(), ""}, partitionDir: partionPath, makePath: false, } return ret return base.Join(ctx, pathComponents...) } func pathForNdkOrSdkInstall(ctx PathContext, prefix string, paths []string) InstallPath { paths = append([]string{prefix}, paths...) path, err := validatePath(paths...) if err != nil { reportPathError(ctx, err) base := InstallPath{ basePath: basePath{prefix, ctx.Config(), ""}, partitionDir: prefix, makePath: false, } return InstallPath{basePath{path, ctx.Config(), ""}, ""} return base.Join(ctx, paths...) } func PathForNdkInstall(ctx PathContext, paths ...string) InstallPath { Loading
android/paths_test.go +124 −58 Original line number Diff line number Diff line Loading @@ -268,6 +268,7 @@ func TestPathForModuleInstall(t *testing.T) { ctx *moduleInstallPathContextImpl in []string out string partitionDir string }{ { name: "host binary", Loading @@ -279,6 +280,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "host/linux-x86/bin/my_test", partitionDir: "host/linux-x86", }, { Loading @@ -291,6 +293,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/system/bin/my_test", partitionDir: "target/product/test_device/system", }, { name: "vendor binary", Loading @@ -305,6 +308,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/vendor/bin/my_test", partitionDir: "target/product/test_device/vendor", }, { name: "odm binary", Loading @@ -319,6 +323,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/odm/bin/my_test", partitionDir: "target/product/test_device/odm", }, { name: "product binary", Loading @@ -333,6 +338,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/product/bin/my_test", partitionDir: "target/product/test_device/product", }, { name: "system_ext binary", Loading @@ -347,6 +353,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/system_ext/bin/my_test", partitionDir: "target/product/test_device/system_ext", }, { name: "root binary", Loading @@ -359,6 +366,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"my_test"}, out: "target/product/test_device/root/my_test", partitionDir: "target/product/test_device/root", }, { name: "recovery binary", Loading @@ -371,6 +379,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin/my_test"}, out: "target/product/test_device/recovery/root/system/bin/my_test", partitionDir: "target/product/test_device/recovery/root/system", }, { name: "recovery root binary", Loading @@ -384,6 +393,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"my_test"}, out: "target/product/test_device/recovery/root/my_test", partitionDir: "target/product/test_device/recovery/root", }, { Loading @@ -397,6 +407,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/nativetest/my_test", partitionDir: "target/product/test_device/data", }, { name: "vendor native test binary", Loading @@ -412,6 +423,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/nativetest/my_test", partitionDir: "target/product/test_device/data", }, { name: "odm native test binary", Loading @@ -427,6 +439,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/nativetest/my_test", partitionDir: "target/product/test_device/data", }, { name: "product native test binary", Loading @@ -442,6 +455,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/nativetest/my_test", partitionDir: "target/product/test_device/data", }, { Loading @@ -458,6 +472,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/nativetest/my_test", partitionDir: "target/product/test_device/data", }, { Loading @@ -471,6 +486,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/data/asan/system/bin/my_test", partitionDir: "target/product/test_device/data/asan/system", }, { name: "sanitized vendor binary", Loading @@ -486,6 +502,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/data/asan/vendor/bin/my_test", partitionDir: "target/product/test_device/data/asan/vendor", }, { name: "sanitized odm binary", Loading @@ -501,6 +518,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/data/asan/odm/bin/my_test", partitionDir: "target/product/test_device/data/asan/odm", }, { name: "sanitized product binary", Loading @@ -516,6 +534,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/data/asan/product/bin/my_test", partitionDir: "target/product/test_device/data/asan/product", }, { Loading @@ -532,6 +551,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"bin", "my_test"}, out: "target/product/test_device/data/asan/system_ext/bin/my_test", partitionDir: "target/product/test_device/data/asan/system_ext", }, { Loading @@ -546,6 +566,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/asan/data/nativetest/my_test", partitionDir: "target/product/test_device/data/asan/data", }, { name: "sanitized vendor native test binary", Loading @@ -562,6 +583,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/asan/data/nativetest/my_test", partitionDir: "target/product/test_device/data/asan/data", }, { name: "sanitized odm native test binary", Loading @@ -578,6 +600,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/asan/data/nativetest/my_test", partitionDir: "target/product/test_device/data/asan/data", }, { name: "sanitized product native test binary", Loading @@ -594,6 +617,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/asan/data/nativetest/my_test", partitionDir: "target/product/test_device/data/asan/data", }, { name: "sanitized system_ext native test binary", Loading @@ -610,6 +634,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"nativetest", "my_test"}, out: "target/product/test_device/data/asan/data/nativetest/my_test", partitionDir: "target/product/test_device/data/asan/data", }, { name: "device testcases", ctx: &moduleInstallPathContextImpl{ Loading @@ -621,6 +646,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"my_test", "my_test_bin"}, out: "target/product/test_device/testcases/my_test/my_test_bin", partitionDir: "target/product/test_device/testcases", }, { name: "host testcases", ctx: &moduleInstallPathContextImpl{ Loading @@ -632,6 +658,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"my_test", "my_test_bin"}, out: "host/linux-x86/testcases/my_test/my_test_bin", partitionDir: "host/linux-x86/testcases", }, { name: "forced host testcases", ctx: &moduleInstallPathContextImpl{ Loading @@ -645,6 +672,7 @@ func TestPathForModuleInstall(t *testing.T) { }, in: []string{"my_test", "my_test_bin"}, out: "host/linux-x86/testcases/my_test/my_test_bin", partitionDir: "host/linux-x86/testcases", }, } Loading @@ -657,10 +685,48 @@ func TestPathForModuleInstall(t *testing.T) { output.basePath.path, tc.out) } if output.partitionDir != tc.partitionDir { t.Errorf("unexpected partitionDir:\n got: %q\nwant: %q\n", output.partitionDir, tc.partitionDir) } }) } } func TestBaseDirForInstallPath(t *testing.T) { testConfig := pathTestConfig("") deviceTarget := Target{Os: Android, Arch: Arch{ArchType: Arm64}} ctx := &moduleInstallPathContextImpl{ baseModuleContext: baseModuleContext{ os: deviceTarget.Os, target: deviceTarget, }, } ctx.baseModuleContext.config = testConfig actual := PathForModuleInstall(ctx, "foo", "bar") expectedBaseDir := "target/product/test_device/system" if actual.partitionDir != expectedBaseDir { t.Errorf("unexpected partitionDir:\n got: %q\nwant: %q\n", actual.partitionDir, expectedBaseDir) } expectedRelPath := "foo/bar" if actual.Rel() != expectedRelPath { t.Errorf("unexpected Rel():\n got: %q\nwant: %q\n", actual.Rel(), expectedRelPath) } actualAfterJoin := actual.Join(ctx, "baz") // partitionDir is preserved even after joining if actualAfterJoin.partitionDir != expectedBaseDir { t.Errorf("unexpected partitionDir after joining:\n got: %q\nwant: %q\n", actualAfterJoin.partitionDir, expectedBaseDir) } // Rel() is updated though expectedRelAfterJoin := "baz" if actualAfterJoin.Rel() != expectedRelAfterJoin { t.Errorf("unexpected Rel() after joining:\n got: %q\nwant: %q\n", actualAfterJoin.Rel(), expectedRelAfterJoin) } } func TestDirectorySortedPaths(t *testing.T) { config := TestConfig("out", nil, "", map[string][]byte{ "Android.bp": nil, Loading