func TestGCCMinusMOutputParserFirstLineOnMultipleLines(t *testing.T) {
	context := make(map[string]interface{})

	output := "sketch_with_config.ino.o: \\\n" +
		" /tmp/test097286304/sketch/sketch_with_config.ino.cpp \\\n" +
		" /tmp/test097286304/sketch/config.h \\\n" +
		" /tmp/test097286304/sketch/includes/de\\ bug.h Bridge.h\n" +
		"\n" +
		"/tmp/test097286304/sketch/config.h:\n" +
		"\n" +
		"/tmp/test097286304/sketch/includes/de\\ bug.h:\n" +
		"\n" +
		"Bridge.h:\n"

	context[constants.CTX_GCC_MINUS_M_OUTPUT] = output

	parser := builder.GCCMinusMOutputParser{}
	err := parser.Run(context)
	NoError(t, err)

	require.NotNil(t, context[constants.CTX_INCLUDES])
	includes := context[constants.CTX_INCLUDES].([]string)
	require.Equal(t, 3, len(includes))
	require.Equal(t, "/tmp/test097286304/sketch/config.h", includes[0])
	require.Equal(t, "/tmp/test097286304/sketch/includes/de bug.h", includes[1])
	require.Equal(t, "Bridge.h", includes[2])
}
func TestGCCMinusMOutputParserFirstLineOnMultipleLines(t *testing.T) {
	ctx := &types.Context{}

	output := "sketch_with_config.ino.o: \\\n" +
		" /tmp/test097286304/sketch/sketch_with_config.ino.cpp \\\n" +
		" /tmp/test097286304/sketch/config.h \\\n" +
		" /tmp/test097286304/sketch/includes/de\\ bug.h Bridge.h\n" +
		"\n" +
		"/tmp/test097286304/sketch/config.h:\n" +
		"\n" +
		"/tmp/test097286304/sketch/includes/de\\ bug.h:\n" +
		"\n" +
		"Bridge.h:\n"

	ctx.OutputGccMinusM = output

	parser := builder.GCCMinusMOutputParser{}
	err := parser.Run(ctx)
	NoError(t, err)

	includes := ctx.Includes
	require.Equal(t, 3, len(includes))
	require.Equal(t, "/tmp/test097286304/sketch/config.h", includes[0])
	require.Equal(t, "/tmp/test097286304/sketch/includes/de bug.h", includes[1])
	require.Equal(t, "Bridge.h", includes[2])
}
func TestGCCMinusMOutputParserEmptyOutput(t *testing.T) {
	ctx := &types.Context{}

	output := "sketch.ino.o: /tmp/test699709208/sketch/sketch.ino.cpp"

	ctx.OutputGccMinusM = output

	parser := builder.GCCMinusMOutputParser{}
	err := parser.Run(ctx)
	NoError(t, err)

	includes := ctx.Includes
	require.Equal(t, 0, len(includes))
}
func TestGCCMinusMOutputParserEmptyOutput(t *testing.T) {
	context := make(map[string]interface{})

	output := "sketch.ino.o: /tmp/test699709208/sketch/sketch.ino.cpp"

	context[constants.CTX_GCC_MINUS_M_OUTPUT] = output

	parser := builder.GCCMinusMOutputParser{}
	err := parser.Run(context)
	NoError(t, err)

	require.NotNil(t, context[constants.CTX_INCLUDES])
	includes := context[constants.CTX_INCLUDES].([]string)
	require.Equal(t, 0, len(includes))
}
func TestGCCMinusMOutputParser(t *testing.T) {
	ctx := &types.Context{}

	output := "sketch_with_config.o: sketch_with_config.ino config.h de\\ bug.h Bridge.h\n" +
		"\n" +
		"config.h:\n" +
		"\n" +
		"de\\ bug.h:\n" +
		"\n" +
		"Bridge.h:\n"

	ctx.OutputGccMinusM = output

	parser := builder.GCCMinusMOutputParser{}
	err := parser.Run(ctx)
	NoError(t, err)

	includes := ctx.Includes
	require.Equal(t, 3, len(includes))
	require.Equal(t, "config.h", includes[0])
	require.Equal(t, "de bug.h", includes[1])
	require.Equal(t, "Bridge.h", includes[2])
}
func TestGCCMinusMOutputParser(t *testing.T) {
	context := make(map[string]interface{})

	output := "sketch_with_config.o: sketch_with_config.ino config.h de\\ bug.h Bridge.h\n" +
		"\n" +
		"config.h:\n" +
		"\n" +
		"de\\ bug.h:\n" +
		"\n" +
		"Bridge.h:\n"

	context[constants.CTX_GCC_MINUS_M_OUTPUT] = output

	parser := builder.GCCMinusMOutputParser{}
	err := parser.Run(context)
	NoError(t, err)

	require.NotNil(t, context[constants.CTX_INCLUDES])
	includes := context[constants.CTX_INCLUDES].([]string)
	require.Equal(t, 3, len(includes))
	require.Equal(t, "config.h", includes[0])
	require.Equal(t, "de bug.h", includes[1])
	require.Equal(t, "Bridge.h", includes[2])
}