Merge "Allow macro definition with space"
This commit is contained in:
@@ -603,5 +603,89 @@ func TestLibDeps(t *testing.T) {
|
|||||||
expected,
|
expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var compilerFlagsTestCases = []struct {
|
||||||
|
in string
|
||||||
|
out bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
in: "a",
|
||||||
|
out: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-a",
|
||||||
|
out: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-Ipath/to/something",
|
||||||
|
out: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-isystempath/to/something",
|
||||||
|
out: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "--coverage",
|
||||||
|
out: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-include a/b",
|
||||||
|
out: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-include a/b c/d",
|
||||||
|
out: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-DMACRO",
|
||||||
|
out: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-DMAC RO",
|
||||||
|
out: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-a -b",
|
||||||
|
out: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-DMACRO=definition",
|
||||||
|
out: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-DMACRO=defi nition",
|
||||||
|
out: true, // TODO(jiyong): this should be false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-DMACRO(x)=x + 1",
|
||||||
|
out: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
in: "-DMACRO=\"defi nition\"",
|
||||||
|
out: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
type mockContext struct {
|
||||||
|
BaseModuleContext
|
||||||
|
result bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ctx *mockContext) PropertyErrorf(property, format string, args ...interface{}) {
|
||||||
|
// CheckBadCompilerFlags calls this function when the flag should be rejected
|
||||||
|
ctx.result = false
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCompilerFlags(t *testing.T) {
|
||||||
|
for _, testCase := range compilerFlagsTestCases {
|
||||||
|
ctx := &mockContext{result: true}
|
||||||
|
CheckBadCompilerFlags(ctx, "", []string{testCase.in})
|
||||||
|
if ctx.result != testCase.out {
|
||||||
|
t.Errorf("incorrect output:")
|
||||||
|
t.Errorf(" input: %#v", testCase.in)
|
||||||
|
t.Errorf(" expected: %#v", testCase.out)
|
||||||
|
t.Errorf(" got: %#v", ctx.result)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -50,6 +50,11 @@ func CheckBadCompilerFlags(ctx BaseModuleContext, prop string, flags []string) {
|
|||||||
} else if strings.HasPrefix("../", path) {
|
} else if strings.HasPrefix("../", path) {
|
||||||
ctx.PropertyErrorf(prop, "Path must not start with `../`: `%s`. Use include_dirs to -include from a different directory", flag)
|
ctx.PropertyErrorf(prop, "Path must not start with `../`: `%s`. Use include_dirs to -include from a different directory", flag)
|
||||||
}
|
}
|
||||||
|
} else if strings.HasPrefix(flag, "-D") && strings.Contains(flag, "=") {
|
||||||
|
// Do nothing in this case.
|
||||||
|
// For now, we allow space characters in -DNAME=def form to allow use cases
|
||||||
|
// like -DNAME="value with string". Later, this check should be done more
|
||||||
|
// correctly to prevent multi flag cases like -DNAME=value -O2.
|
||||||
} else {
|
} else {
|
||||||
ctx.PropertyErrorf(prop, "Bad flag: `%s` is not an allowed multi-word flag. Should it be split into multiple flags?", flag)
|
ctx.PropertyErrorf(prop, "Bad flag: `%s` is not an allowed multi-word flag. Should it be split into multiple flags?", flag)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user