Allow macro definition with space

cflags: ["-DMACRO=\" definition \""] should not be rejected.

Bug: 66914194
Test: TestCompilerFlags in cc_test.go

Change-Id: I7f96505a83898616415ef1fb7e13596b56a063f3
diff --git a/cc/cc_test.go b/cc/cc_test.go
index b9cdba5..dc04a4e 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -603,5 +603,89 @@
 			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)
+		}
+	}
 }