Allow tests to bypass PathForSource existence checks
Forcing every test to specify every file it wants to pass to
PathForSource or PathForModuleSrc is painful to maintain and
doesn't add any value. Allow tests to reference paths through
PathForSource and PathForModuleSrc without specifying them in
the mock FS.
Bug: 153485543
Test: all soong tests
Change-Id: Ia8a8fd965a338d0645b3721314bf91f50146ad21
Merged-In: Ia8a8fd965a338d0645b3721314bf91f50146ad21
(cherry picked from commit 5e6a797982
)
This commit is contained in:
@@ -111,6 +111,10 @@ type config struct {
|
||||
fs pathtools.FileSystem
|
||||
mockBpList string
|
||||
|
||||
// If testAllowNonExistentPaths is true then PathForSource and PathForModuleSrc won't error
|
||||
// in tests when a path doesn't exist.
|
||||
testAllowNonExistentPaths bool
|
||||
|
||||
OncePer
|
||||
}
|
||||
|
||||
@@ -230,6 +234,10 @@ func TestConfig(buildDir string, env map[string]string, bp string, fs map[string
|
||||
buildDir: buildDir,
|
||||
captureBuild: true,
|
||||
env: envCopy,
|
||||
|
||||
// Set testAllowNonExistentPaths so that test contexts don't need to specify every path
|
||||
// passed to PathForSource or PathForModuleSrc.
|
||||
testAllowNonExistentPaths: true,
|
||||
}
|
||||
config.deviceConfig = &deviceConfig{
|
||||
config: config,
|
||||
|
@@ -396,7 +396,7 @@ func expandOneSrcPath(ctx ModuleContext, s string, expandedExcludes []string) (P
|
||||
p := pathForModuleSrc(ctx, s)
|
||||
if exists, _, err := ctx.Config().fs.Exists(p.String()); err != nil {
|
||||
reportPathErrorf(ctx, "%s: %s", p, err.Error())
|
||||
} else if !exists {
|
||||
} else if !exists && !ctx.Config().testAllowNonExistentPaths {
|
||||
reportPathErrorf(ctx, "module source path %q does not exist", p)
|
||||
}
|
||||
|
||||
@@ -767,7 +767,7 @@ func PathForSource(ctx PathContext, pathComponents ...string) SourcePath {
|
||||
}
|
||||
} else if exists, _, err := ctx.Config().fs.Exists(path.String()); err != nil {
|
||||
reportPathErrorf(ctx, "%s: %s", path, err.Error())
|
||||
} else if !exists {
|
||||
} else if !exists && !ctx.Config().testAllowNonExistentPaths {
|
||||
reportPathErrorf(ctx, "source path %q does not exist", path)
|
||||
}
|
||||
return path
|
||||
|
Reference in New Issue
Block a user