prevent file=nil panic if syntax error in Blueprints
Bug: 65683273 Test: build/soong/scripts/diff_build_graphs.sh \ 'build/blueprint:work^^^' 'build/blueprint:work' Test: put a syntax error in a file and see that the reported error reports the location of the violation Change-Id: Iaeedb91ea8e816cb8e9ee954f21cd6c6bc4afa48
This commit is contained in:
parent
8fd9578a6a
commit
a7e408af0a
2 changed files with 43 additions and 2 deletions
|
@ -768,8 +768,10 @@ func (c *Context) WalkBlueprintsFiles(rootDir string, filePaths []string,
|
|||
<-blueprint.parent.doneVisiting
|
||||
}
|
||||
|
||||
// process this file
|
||||
visitor(file)
|
||||
if len(errs) == 0 {
|
||||
// process this file
|
||||
visitor(file)
|
||||
}
|
||||
if blueprint.doneVisiting != nil {
|
||||
close(blueprint.doneVisiting)
|
||||
}
|
||||
|
|
|
@ -16,6 +16,8 @@ package blueprint
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"sync"
|
||||
|
@ -353,3 +355,40 @@ func doTestWalkFileOrder(t *testing.T, sleepDuration time.Duration) {
|
|||
t.Errorf("Incorrect visit order; expected %v, got %v", correctVisitOrder, visitOrder)
|
||||
}
|
||||
}
|
||||
|
||||
// test that WalkBlueprintsFiles reports syntax errors
|
||||
func TestWalkingWithSyntaxError(t *testing.T) {
|
||||
// setup mock context
|
||||
ctx := newContext()
|
||||
mockFiles := map[string][]byte{
|
||||
"Blueprints": []byte(`
|
||||
sample_module {
|
||||
name: "a" "b",
|
||||
}
|
||||
`),
|
||||
"dir1/Blueprints": []byte(`
|
||||
sample_module {
|
||||
name: "b",
|
||||
`),
|
||||
"dir1/dir2/Blueprints": []byte(`
|
||||
sample_module {
|
||||
name: "c",
|
||||
}
|
||||
`),
|
||||
}
|
||||
ctx.MockFileSystem(mockFiles)
|
||||
|
||||
keys := []string{"Blueprints", "dir1/Blueprints", "dir1/dir2/Blueprints"}
|
||||
|
||||
// visit the blueprints files
|
||||
_, errs := ctx.WalkBlueprintsFiles(".", keys, func(file *parser.File) {})
|
||||
|
||||
expectedErrs := []error{
|
||||
errors.New(`Blueprints:3:18: expected "}", found String`),
|
||||
errors.New(`dir1/Blueprints:4:3: expected "}", found EOF`),
|
||||
}
|
||||
if fmt.Sprintf("%s", expectedErrs) != fmt.Sprintf("%s", errs) {
|
||||
t.Errorf("Incorrect errors; expected:\n%s\ngot:\n%s", expectedErrs, errs)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue