From 2cdd5df7cc9f451086ac5d1a2f922033311e6dda Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Mon, 25 Feb 2019 10:25:24 -0800 Subject: [PATCH] Fix Rel() after ReplaceExtension or InSameDir Copying p.rel doesn't work, as rel needs to match the end of the value in path. Apply the same transformation to p.rel as p.path. Test: paths_test.go Change-Id: I42d676c6c4fc18d9852c1a73f25e5a791d7553d0 --- android/paths.go | 4 ++-- android/paths_test.go | 8 ++++++-- dexpreopt/dexpreopt_test.go | 6 +++--- java/dexpreopt_config.go | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/android/paths.go b/android/paths.go index 3366db140..afde55e02 100644 --- a/android/paths.go +++ b/android/paths.go @@ -712,7 +712,7 @@ func (p OutputPath) ReplaceExtension(ctx PathContext, ext string) OutputPath { reportPathErrorf(ctx, "extension %q cannot contain /", ext) } ret := PathForOutput(ctx, pathtools.ReplaceExtension(p.path, ext)) - ret.rel = p.rel + ret.rel = pathtools.ReplaceExtension(p.rel, ext) return ret } @@ -724,7 +724,7 @@ func (p OutputPath) InSameDir(ctx PathContext, paths ...string) OutputPath { } ret := PathForOutput(ctx, filepath.Dir(p.path), path) - ret.rel = p.rel + ret.rel = filepath.Join(filepath.Dir(p.rel), path) return ret } diff --git a/android/paths_test.go b/android/paths_test.go index 3b6d2ec5d..20a00a0be 100644 --- a/android/paths_test.go +++ b/android/paths_test.go @@ -696,22 +696,26 @@ func ExampleOutputPath_ReplaceExtension() { ctx := &configErrorWrapper{ config: TestConfig("out", nil), } - p := PathForOutput(ctx, "system/framework/boot.art") + p := PathForOutput(ctx, "system/framework").Join(ctx, "boot.art") p2 := p.ReplaceExtension(ctx, "oat") fmt.Println(p, p2) + fmt.Println(p.Rel(), p2.Rel()) // Output: // out/system/framework/boot.art out/system/framework/boot.oat + // boot.art boot.oat } func ExampleOutputPath_FileInSameDir() { ctx := &configErrorWrapper{ config: TestConfig("out", nil), } - p := PathForOutput(ctx, "system/framework/boot.art") + p := PathForOutput(ctx, "system/framework").Join(ctx, "boot.art") p2 := p.InSameDir(ctx, "oat", "arm", "boot.vdex") fmt.Println(p, p2) + fmt.Println(p.Rel(), p2.Rel()) // Output: // out/system/framework/boot.art out/system/framework/oat/arm/boot.vdex + // boot.art oat/arm/boot.vdex } diff --git a/dexpreopt/dexpreopt_test.go b/dexpreopt/dexpreopt_test.go index 2a58ab9c6..6dfa9d266 100644 --- a/dexpreopt/dexpreopt_test.go +++ b/dexpreopt/dexpreopt_test.go @@ -64,7 +64,7 @@ func TestDexPreopt(t *testing.T) { {android.PathForOutput(ctx, "test/oat/arm/package.vdex"), "/system/app/test/oat/arm/test.vdex"}, } - if !reflect.DeepEqual(rule.Installs(), wantInstalls) { + if rule.Installs().String() != wantInstalls.String() { t.Errorf("\nwant installs:\n %v\ngot:\n %v", wantInstalls, rule.Installs()) } } @@ -100,7 +100,7 @@ func TestDexPreoptSystemOther(t *testing.T) { {android.PathForOutput(ctx, "test/oat/arm/package.vdex"), "/system_other/app/test/oat/arm/test.vdex"}, } - if !reflect.DeepEqual(rule.Installs(), wantInstalls) { + if rule.Installs().String() != wantInstalls.String() { t.Errorf("\nwant installs:\n %v\ngot:\n %v", wantInstalls, rule.Installs()) } } @@ -123,7 +123,7 @@ func TestDexPreoptProfile(t *testing.T) { {android.PathForOutput(ctx, "test/oat/arm/package.vdex"), "/system/app/test/oat/arm/test.vdex"}, } - if !reflect.DeepEqual(rule.Installs(), wantInstalls) { + if rule.Installs().String() != wantInstalls.String() { t.Errorf("\nwant installs:\n %v\ngot:\n %v", wantInstalls, rule.Installs()) } } diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go index 280b6011d..409b4b1fc 100644 --- a/java/dexpreopt_config.go +++ b/java/dexpreopt_config.go @@ -114,7 +114,7 @@ func defaultBootImageConfig(ctx android.PathContext) bootImageConfig { for _, target := range ctx.Config().Targets[android.Android] { images[target.Arch.ArchType] = dir.Join(ctx, - "system/framework", target.Arch.ArchType.String(), "boot.art") + "system/framework", target.Arch.ArchType.String()).Join(ctx, "boot.art") } return bootImageConfig{