From 9a7ee4a8813b5927a5491d91fe2f5520344b9416 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 16 Nov 2016 20:45:32 +0100 Subject: [PATCH 1/6] CTagsParser is now a standard go class This is a first refactoring that aims to create a ctags package that is not strongly tied to the builder (and so can possibly be replaced with another parser in the future) A temporary CTags command has been made to reduce the number of changes involved in this commit. It will be removed at the end of the refactoring. Signed-off-by: Cristian Maglie --- .../builder/container_add_prototypes.go | 2 +- src/arduino.cc/builder/ctags/command.go | 11 ++ src/arduino.cc/builder/ctags/ctags_parser.go | 64 +++++----- .../builder/test/ctags_parser_test.go | 118 +++--------------- .../builder/test/ctags_to_prototypes_test.go | 30 ++--- 5 files changed, 74 insertions(+), 151 deletions(-) create mode 100644 src/arduino.cc/builder/ctags/command.go diff --git a/src/arduino.cc/builder/container_add_prototypes.go b/src/arduino.cc/builder/container_add_prototypes.go index 378a0689..27f77211 100644 --- a/src/arduino.cc/builder/container_add_prototypes.go +++ b/src/arduino.cc/builder/container_add_prototypes.go @@ -48,7 +48,7 @@ func (s *ContainerAddPrototypes) Run(ctx *types.Context) error { &FilterSketchSource{Source: &ctx.SourceGccMinusE}, &CTagsTargetFileSaver{Source: &ctx.SourceGccMinusE, TargetFileName: constants.FILE_CTAGS_TARGET_FOR_GCC_MINUS_E}, &ctags.CTagsRunner{}, - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, &PrototypesAdder{}, &SketchSaver{}, diff --git a/src/arduino.cc/builder/ctags/command.go b/src/arduino.cc/builder/ctags/command.go new file mode 100644 index 00000000..15da2dac --- /dev/null +++ b/src/arduino.cc/builder/ctags/command.go @@ -0,0 +1,11 @@ +package ctags + +import "arduino.cc/builder/types" + +type CTags struct{} + +func (c *CTags) Run(ctx *types.Context) error { + parser := &CTagsParser{} + ctx.CTagsOfPreprocessedSource = parser.Parse(ctx.CTagsOutput) + return nil +} diff --git a/src/arduino.cc/builder/ctags/ctags_parser.go b/src/arduino.cc/builder/ctags/ctags_parser.go index 349fd32d..c630400d 100644 --- a/src/arduino.cc/builder/ctags/ctags_parser.go +++ b/src/arduino.cc/builder/ctags/ctags_parser.go @@ -30,14 +30,12 @@ package ctags import ( - "arduino.cc/builder/constants" - "arduino.cc/builder/types" "bufio" "os" - "reflect" - "runtime" "strconv" "strings" + + "arduino.cc/builder/types" ) const KIND_PROTOTYPE = "prototype" @@ -54,32 +52,30 @@ var KNOWN_TAG_KINDS = map[string]bool{ "function": true, } -type CTagsParser struct{} - -func (s *CTagsParser) Run(ctx *types.Context) error { - rows := strings.Split(ctx.CTagsOutput, "\n") +type CTagsParser struct { + tags []*types.CTag +} +func (p *CTagsParser) Parse(ctagsOutput string) []*types.CTag { + rows := strings.Split(ctagsOutput, "\n") rows = removeEmpty(rows) - var tags []*types.CTag for _, row := range rows { - tags = append(tags, parseTag(row)) + p.tags = append(p.tags, parseTag(row)) } - skipTagsWhere(tags, tagIsUnknown, ctx) - skipTagsWhere(tags, tagIsUnhandled, ctx) - addPrototypes(tags) - removeDefinedProtypes(tags, ctx) - removeDuplicate(tags) - skipTagsWhere(tags, prototypeAndCodeDontMatch, ctx) - - ctx.CTagsOfPreprocessedSource = tags + p.skipTagsWhere(tagIsUnknown) + p.skipTagsWhere(tagIsUnhandled) + p.addPrototypes() + p.removeDefinedProtypes() + p.skipDuplicates() + p.skipTagsWhere(prototypeAndCodeDontMatch) - return nil + return p.tags } -func addPrototypes(tags []*types.CTag) { - for _, tag := range tags { +func (p *CTagsParser) addPrototypes() { + for _, tag := range p.tags { if !tag.SkipMe { addPrototype(tag) } @@ -108,28 +104,28 @@ func addPrototype(tag *types.CTag) { tag.PrototypeModifiers = strings.TrimSpace(tag.PrototypeModifiers) } -func removeDefinedProtypes(tags []*types.CTag, ctx *types.Context) { +func (p *CTagsParser) removeDefinedProtypes() { definedPrototypes := make(map[string]bool) - for _, tag := range tags { + for _, tag := range p.tags { if tag.Kind == KIND_PROTOTYPE { definedPrototypes[tag.Prototype] = true } } - for _, tag := range tags { + for _, tag := range p.tags { if definedPrototypes[tag.Prototype] { - if ctx.DebugLevel >= 10 { - ctx.GetLogger().Fprintln(os.Stdout, constants.LOG_LEVEL_DEBUG, constants.MSG_SKIPPING_TAG_ALREADY_DEFINED, tag.FunctionName) - } + //if ctx.DebugLevel >= 10 { + // ctx.GetLogger().Fprintln(os.Stdout, constants.LOG_LEVEL_DEBUG, constants.MSG_SKIPPING_TAG_ALREADY_DEFINED, tag.FunctionName) + //} tag.SkipMe = true } } } -func removeDuplicate(tags []*types.CTag) { +func (p *CTagsParser) skipDuplicates() { definedPrototypes := make(map[string]bool) - for _, tag := range tags { + for _, tag := range p.tags { if !definedPrototypes[tag.Prototype] && tag.SkipMe == false { definedPrototypes[tag.Prototype] = true } else { @@ -140,13 +136,13 @@ func removeDuplicate(tags []*types.CTag) { type skipFuncType func(tag *types.CTag) bool -func skipTagsWhere(tags []*types.CTag, skipFunc skipFuncType, ctx *types.Context) { - for _, tag := range tags { +func (p *CTagsParser) skipTagsWhere(skipFunc skipFuncType) { + for _, tag := range p.tags { if !tag.SkipMe { skip := skipFunc(tag) - if skip && ctx.DebugLevel >= 10 { - ctx.GetLogger().Fprintln(os.Stdout, constants.LOG_LEVEL_DEBUG, constants.MSG_SKIPPING_TAG_WITH_REASON, tag.FunctionName, runtime.FuncForPC(reflect.ValueOf(skipFunc).Pointer()).Name()) - } + //if skip && p.debugLevel >= 10 { + // ctx.GetLogger().Fprintln(os.Stdout, constants.LOG_LEVEL_DEBUG, constants.MSG_SKIPPING_TAG_WITH_REASON, tag.FunctionName, runtime.FuncForPC(reflect.ValueOf(skipFunc).Pointer()).Name()) + //} tag.SkipMe = skip } } diff --git a/src/arduino.cc/builder/test/ctags_parser_test.go b/src/arduino.cc/builder/test/ctags_parser_test.go index 45f246af..6cb7232a 100644 --- a/src/arduino.cc/builder/test/ctags_parser_test.go +++ b/src/arduino.cc/builder/test/ctags_parser_test.go @@ -30,26 +30,20 @@ package test import ( - "arduino.cc/builder/ctags" - "arduino.cc/builder/types" - "github.com/stretchr/testify/require" "io/ioutil" "path/filepath" "testing" + + "arduino.cc/builder/ctags" + "github.com/stretchr/testify/require" ) func TestCTagsParserShouldListPrototypes(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldListPrototypes.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 8, len(tags)) idx := 0 @@ -87,17 +81,11 @@ func TestCTagsParserShouldListPrototypes(t *testing.T) { } func TestCTagsParserShouldListTemplates(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldListTemplates.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 3, len(tags)) idx := 0 @@ -115,17 +103,11 @@ func TestCTagsParserShouldListTemplates(t *testing.T) { } func TestCTagsParserShouldListTemplates2(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldListTemplates2.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 4, len(tags)) idx := 0 @@ -145,17 +127,11 @@ func TestCTagsParserShouldListTemplates2(t *testing.T) { } func TestCTagsParserShouldDealWithClasses(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealWithClasses.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 2, len(tags)) idx := 0 @@ -167,17 +143,11 @@ func TestCTagsParserShouldDealWithClasses(t *testing.T) { } func TestCTagsParserShouldDealWithStructs(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealWithStructs.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 5, len(tags)) idx := 0 @@ -199,17 +169,11 @@ func TestCTagsParserShouldDealWithStructs(t *testing.T) { } func TestCTagsParserShouldDealWithMacros(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealWithMacros.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 8, len(tags)) idx := 0 @@ -239,17 +203,11 @@ func TestCTagsParserShouldDealWithMacros(t *testing.T) { } func TestCTagsParserShouldDealFunctionWithDifferentSignatures(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealFunctionWithDifferentSignatures.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 3, len(tags)) idx := 0 @@ -264,17 +222,11 @@ func TestCTagsParserShouldDealFunctionWithDifferentSignatures(t *testing.T) { } func TestCTagsParserClassMembersAreFilteredOut(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserClassMembersAreFilteredOut.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 5, len(tags)) idx := 0 @@ -298,17 +250,11 @@ func TestCTagsParserClassMembersAreFilteredOut(t *testing.T) { } func TestCTagsParserStructWithFunctions(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserStructWithFunctions.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 8, len(tags)) idx := 0 @@ -340,17 +286,11 @@ func TestCTagsParserStructWithFunctions(t *testing.T) { } func TestCTagsParserDefaultArguments(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserDefaultArguments.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 3, len(tags)) idx := 0 @@ -366,17 +306,11 @@ func TestCTagsParserDefaultArguments(t *testing.T) { } func TestCTagsParserNamespace(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserNamespace.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 3, len(tags)) idx := 0 @@ -392,17 +326,11 @@ func TestCTagsParserNamespace(t *testing.T) { } func TestCTagsParserStatic(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserStatic.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 3, len(tags)) idx := 0 @@ -417,17 +345,11 @@ func TestCTagsParserStatic(t *testing.T) { } func TestCTagsParserFunctionPointer(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserFunctionPointer.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 4, len(tags)) idx := 0 @@ -445,17 +367,11 @@ func TestCTagsParserFunctionPointer(t *testing.T) { } func TestCTagsParserFunctionPointers(t *testing.T) { - ctx := &types.Context{} - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserFunctionPointers.txt")) NoError(t, err) - ctx.CTagsOutput = string(bytes) - ctagsParser := ctags.CTagsParser{} - ctagsParser.Run(ctx) - - tags := ctx.CTagsOfPreprocessedSource + tags := ctagsParser.Parse(string(bytes)) require.Equal(t, 5, len(tags)) idx := 0 diff --git a/src/arduino.cc/builder/test/ctags_to_prototypes_test.go b/src/arduino.cc/builder/test/ctags_to_prototypes_test.go index 1f90395a..6d5808ee 100644 --- a/src/arduino.cc/builder/test/ctags_to_prototypes_test.go +++ b/src/arduino.cc/builder/test/ctags_to_prototypes_test.go @@ -51,7 +51,7 @@ func TestCTagsToPrototypesShouldListPrototypes(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -82,7 +82,7 @@ func TestCTagsToPrototypesShouldListTemplates(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -111,7 +111,7 @@ func TestCTagsToPrototypesShouldListTemplates2(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -141,7 +141,7 @@ func TestCTagsToPrototypesShouldDealWithClasses(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -166,7 +166,7 @@ func TestCTagsToPrototypesShouldDealWithStructs(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -195,7 +195,7 @@ func TestCTagsToPrototypesShouldDealWithMacros(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -226,7 +226,7 @@ func TestCTagsToPrototypesShouldDealFunctionWithDifferentSignatures(t *testing.T ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -253,7 +253,7 @@ func TestCTagsToPrototypesClassMembersAreFilteredOut(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -281,7 +281,7 @@ func TestCTagsToPrototypesStructWithFunctions(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -309,7 +309,7 @@ func TestCTagsToPrototypesDefaultArguments(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -338,7 +338,7 @@ func TestCTagsToPrototypesNamespace(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -366,7 +366,7 @@ func TestCTagsToPrototypesStatic(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -396,7 +396,7 @@ func TestCTagsToPrototypesFunctionPointer(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -425,7 +425,7 @@ func TestCTagsToPrototypesFunctionPointers(t *testing.T) { ctx.CTagsOutput = string(bytes) commands := []types.Command{ - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } @@ -474,7 +474,7 @@ func TestCTagsRunnerSketchWithClassFunction(t *testing.T) { &builder.WarnAboutArchIncompatibleLibraries{}, &builder.CTagsTargetFileSaver{Source: &ctx.Source, TargetFileName: constants.FILE_CTAGS_TARGET}, &ctags.CTagsRunner{}, - &ctags.CTagsParser{}, + &ctags.CTags{}, &ctags.CTagsToPrototypes{}, } From f2cf4bd56debcb33bfb4b5b817d4835f45031d0a Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 16 Nov 2016 21:23:02 +0100 Subject: [PATCH 2/6] CTagsToPrototypes is now a class-method Signed-off-by: Cristian Maglie --- .../builder/container_add_prototypes.go | 1 - src/arduino.cc/builder/ctags/command.go | 5 + .../builder/ctags/ctags_to_prototypes.go | 41 +-- .../builder/test/ctags_to_prototypes_test.go | 301 ++---------------- 4 files changed, 56 insertions(+), 292 deletions(-) diff --git a/src/arduino.cc/builder/container_add_prototypes.go b/src/arduino.cc/builder/container_add_prototypes.go index 27f77211..77f770e5 100644 --- a/src/arduino.cc/builder/container_add_prototypes.go +++ b/src/arduino.cc/builder/container_add_prototypes.go @@ -49,7 +49,6 @@ func (s *ContainerAddPrototypes) Run(ctx *types.Context) error { &CTagsTargetFileSaver{Source: &ctx.SourceGccMinusE, TargetFileName: constants.FILE_CTAGS_TARGET_FOR_GCC_MINUS_E}, &ctags.CTagsRunner{}, &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, &PrototypesAdder{}, &SketchSaver{}, } diff --git a/src/arduino.cc/builder/ctags/command.go b/src/arduino.cc/builder/ctags/command.go index 15da2dac..2aeaddbd 100644 --- a/src/arduino.cc/builder/ctags/command.go +++ b/src/arduino.cc/builder/ctags/command.go @@ -7,5 +7,10 @@ type CTags struct{} func (c *CTags) Run(ctx *types.Context) error { parser := &CTagsParser{} ctx.CTagsOfPreprocessedSource = parser.Parse(ctx.CTagsOutput) + protos, line := parser.GeneratePrototypes() + if line != -1 { + ctx.PrototypesLineWhereToInsert = line + } + ctx.Prototypes = protos return nil } diff --git a/src/arduino.cc/builder/ctags/ctags_to_prototypes.go b/src/arduino.cc/builder/ctags/ctags_to_prototypes.go index 954cb424..459174d8 100644 --- a/src/arduino.cc/builder/ctags/ctags_to_prototypes.go +++ b/src/arduino.cc/builder/ctags/ctags_to_prototypes.go @@ -30,27 +30,18 @@ package ctags import ( - "arduino.cc/builder/types" "strings" -) - -type CTagsToPrototypes struct{} - -func (s *CTagsToPrototypes) Run(ctx *types.Context) error { - tags := ctx.CTagsOfPreprocessedSource - lineWhereToInsertPrototypes := findLineWhereToInsertPrototypes(tags) - if lineWhereToInsertPrototypes != -1 { - ctx.PrototypesLineWhereToInsert = lineWhereToInsertPrototypes - } + "arduino.cc/builder/types" +) - ctx.Prototypes = toPrototypes(tags) - return nil +func (p *CTagsParser) GeneratePrototypes() ([]*types.Prototype, int) { + return p.toPrototypes(), p.findLineWhereToInsertPrototypes() } -func findLineWhereToInsertPrototypes(tags []*types.CTag) int { - firstFunctionLine := firstFunctionAtLine(tags) - firstFunctionPointerAsArgument := firstFunctionPointerUsedAsArgument(tags) +func (p *CTagsParser) findLineWhereToInsertPrototypes() int { + firstFunctionLine := p.firstFunctionAtLine() + firstFunctionPointerAsArgument := p.firstFunctionPointerUsedAsArgument() if firstFunctionLine != -1 && firstFunctionPointerAsArgument != -1 { if firstFunctionLine < firstFunctionPointerAsArgument { return firstFunctionLine @@ -64,9 +55,9 @@ func findLineWhereToInsertPrototypes(tags []*types.CTag) int { } } -func firstFunctionPointerUsedAsArgument(tags []*types.CTag) int { - functionNames := collectFunctionNames(tags) - for _, tag := range tags { +func (p *CTagsParser) firstFunctionPointerUsedAsArgument() int { + functionNames := p.collectFunctionNames() + for _, tag := range p.tags { if functionNameUsedAsFunctionPointerIn(tag, functionNames) { return tag.Line } @@ -83,9 +74,9 @@ func functionNameUsedAsFunctionPointerIn(tag *types.CTag, functionNames []string return false } -func collectFunctionNames(tags []*types.CTag) []string { +func (p *CTagsParser) collectFunctionNames() []string { names := []string{} - for _, tag := range tags { + for _, tag := range p.tags { if tag.Kind == KIND_FUNCTION { names = append(names, tag.FunctionName) } @@ -93,8 +84,8 @@ func collectFunctionNames(tags []*types.CTag) []string { return names } -func firstFunctionAtLine(tags []*types.CTag) int { - for _, tag := range tags { +func (p *CTagsParser) firstFunctionAtLine() int { + for _, tag := range p.tags { if !tagIsUnknown(tag) && isHandled(tag) && tag.Kind == KIND_FUNCTION { return tag.Line } @@ -102,9 +93,9 @@ func firstFunctionAtLine(tags []*types.CTag) int { return -1 } -func toPrototypes(tags []*types.CTag) []*types.Prototype { +func (p *CTagsParser) toPrototypes() []*types.Prototype { prototypes := []*types.Prototype{} - for _, tag := range tags { + for _, tag := range p.tags { if strings.TrimSpace(tag.Prototype) == "" { continue } diff --git a/src/arduino.cc/builder/test/ctags_to_prototypes_test.go b/src/arduino.cc/builder/test/ctags_to_prototypes_test.go index 6d5808ee..2b2d4457 100644 --- a/src/arduino.cc/builder/test/ctags_to_prototypes_test.go +++ b/src/arduino.cc/builder/test/ctags_to_prototypes_test.go @@ -42,26 +42,17 @@ import ( "github.com/stretchr/testify/require" ) -func TestCTagsToPrototypesShouldListPrototypes(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldListPrototypes.txt")) +func producePrototypes(t *testing.T, filename string) ([]*types.Prototype, int) { + bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", filename)) NoError(t, err) - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + parser := &ctags.CTagsParser{} + parser.Parse(string(bytes)) + return parser.GeneratePrototypes() +} +func TestCTagsToPrototypesShouldListPrototypes(t *testing.T) { + prototypes, line := producePrototypes(t, "TestCTagsParserShouldListPrototypes.txt") require.Equal(t, 5, len(prototypes)) require.Equal(t, "void setup();", prototypes[0].Prototype) require.Equal(t, "/tmp/sketch7210316334309249705.cpp", prototypes[0].File) @@ -70,28 +61,11 @@ func TestCTagsToPrototypesShouldListPrototypes(t *testing.T) { require.Equal(t, "void analogCommand(YunClient client);", prototypes[3].Prototype) require.Equal(t, "void modeCommand(YunClient client);", prototypes[4].Prototype) - require.Equal(t, 33, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 33, line) } func TestCTagsToPrototypesShouldListTemplates(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldListTemplates.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserShouldListTemplates.txt") require.Equal(t, 3, len(prototypes)) require.Equal(t, "template T minimum (T a, T b);", prototypes[0].Prototype) @@ -99,28 +73,11 @@ func TestCTagsToPrototypesShouldListTemplates(t *testing.T) { require.Equal(t, "void setup();", prototypes[1].Prototype) require.Equal(t, "void loop();", prototypes[2].Prototype) - require.Equal(t, 2, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 2, line) } func TestCTagsToPrototypesShouldListTemplates2(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldListTemplates2.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserShouldListTemplates2.txt") require.Equal(t, 4, len(prototypes)) require.Equal(t, "void setup();", prototypes[0].Prototype) @@ -129,53 +86,19 @@ func TestCTagsToPrototypesShouldListTemplates2(t *testing.T) { require.Equal(t, "template int SRAM_writeAnything(int ee, const T& value);", prototypes[2].Prototype) require.Equal(t, "template int SRAM_readAnything(int ee, T& value);", prototypes[3].Prototype) - require.Equal(t, 1, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 1, line) } func TestCTagsToPrototypesShouldDealWithClasses(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealWithClasses.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserShouldDealWithClasses.txt") require.Equal(t, 0, len(prototypes)) - require.Equal(t, 8, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 8, line) } func TestCTagsToPrototypesShouldDealWithStructs(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealWithStructs.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserShouldDealWithStructs.txt") require.Equal(t, 3, len(prototypes)) require.Equal(t, "void setup();", prototypes[0].Prototype) @@ -183,28 +106,11 @@ func TestCTagsToPrototypesShouldDealWithStructs(t *testing.T) { require.Equal(t, "void loop();", prototypes[1].Prototype) require.Equal(t, "void dostuff(A_NEW_TYPE * bar);", prototypes[2].Prototype) - require.Equal(t, 9, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 9, line) } func TestCTagsToPrototypesShouldDealWithMacros(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealWithMacros.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserShouldDealWithMacros.txt") require.Equal(t, 5, len(prototypes)) require.Equal(t, "void setup();", prototypes[0].Prototype) @@ -214,111 +120,43 @@ func TestCTagsToPrototypesShouldDealWithMacros(t *testing.T) { require.Equal(t, "void disabledIsDefined();", prototypes[3].Prototype) require.Equal(t, "int useMyType(MyType type);", prototypes[4].Prototype) - require.Equal(t, 18, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 18, line) } func TestCTagsToPrototypesShouldDealFunctionWithDifferentSignatures(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealFunctionWithDifferentSignatures.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserShouldDealFunctionWithDifferentSignatures.txt") require.Equal(t, 1, len(prototypes)) require.Equal(t, "boolean getBytes( byte addr, int amount );", prototypes[0].Prototype) require.Equal(t, "/tmp/test260613593/preproc/ctags_target.cpp", prototypes[0].File) - require.Equal(t, 5031, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 5031, line) } func TestCTagsToPrototypesClassMembersAreFilteredOut(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserClassMembersAreFilteredOut.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserClassMembersAreFilteredOut.txt") require.Equal(t, 2, len(prototypes)) require.Equal(t, "void setup();", prototypes[0].Prototype) require.Equal(t, "/tmp/test834438754/preproc/ctags_target.cpp", prototypes[0].File) require.Equal(t, "void loop();", prototypes[1].Prototype) - require.Equal(t, 14, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 14, line) } func TestCTagsToPrototypesStructWithFunctions(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserStructWithFunctions.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserStructWithFunctions.txt") require.Equal(t, 2, len(prototypes)) require.Equal(t, "void setup();", prototypes[0].Prototype) require.Equal(t, "/tmp/build7315640391316178285.tmp/preproc/ctags_target.cpp", prototypes[0].File) require.Equal(t, "void loop();", prototypes[1].Prototype) - require.Equal(t, 16, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 16, line) } func TestCTagsToPrototypesDefaultArguments(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserDefaultArguments.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserDefaultArguments.txt") require.Equal(t, 3, len(prototypes)) require.Equal(t, "void test(int x = 1);", prototypes[0].Prototype) @@ -326,56 +164,22 @@ func TestCTagsToPrototypesDefaultArguments(t *testing.T) { require.Equal(t, "/tmp/test179252494/preproc/ctags_target.cpp", prototypes[1].File) require.Equal(t, "void loop();", prototypes[2].Prototype) - require.Equal(t, 2, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 2, line) } func TestCTagsToPrototypesNamespace(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserNamespace.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserNamespace.txt") require.Equal(t, 2, len(prototypes)) require.Equal(t, "void setup();", prototypes[0].Prototype) require.Equal(t, "/tmp/test030883150/preproc/ctags_target.cpp", prototypes[0].File) require.Equal(t, "void loop();", prototypes[1].Prototype) - require.Equal(t, 8, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 8, line) } func TestCTagsToPrototypesStatic(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserStatic.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserStatic.txt") require.Equal(t, 3, len(prototypes)) require.Equal(t, "void setup();", prototypes[0].Prototype) @@ -384,28 +188,11 @@ func TestCTagsToPrototypesStatic(t *testing.T) { require.Equal(t, "void doStuff();", prototypes[2].Prototype) require.Equal(t, "static", prototypes[2].Modifiers) - require.Equal(t, 2, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 2, line) } func TestCTagsToPrototypesFunctionPointer(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserFunctionPointer.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserFunctionPointer.txt") require.Equal(t, 3, len(prototypes)) require.Equal(t, "void t1Callback();", prototypes[0].Prototype) @@ -413,34 +200,17 @@ func TestCTagsToPrototypesFunctionPointer(t *testing.T) { require.Equal(t, "void setup();", prototypes[1].Prototype) require.Equal(t, "void loop();", prototypes[2].Prototype) - require.Equal(t, 2, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 2, line) } func TestCTagsToPrototypesFunctionPointers(t *testing.T) { - ctx := &types.Context{} - - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserFunctionPointers.txt")) - NoError(t, err) - - ctx.CTagsOutput = string(bytes) - - commands := []types.Command{ - &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, line := producePrototypes(t, "TestCTagsParserFunctionPointers.txt") require.Equal(t, 2, len(prototypes)) require.Equal(t, "void setup();", prototypes[0].Prototype) require.Equal(t, "/tmp/test907446433/preproc/ctags_target.cpp", prototypes[0].File) require.Equal(t, "void loop();", prototypes[1].Prototype) - require.Equal(t, 2, ctx.PrototypesLineWhereToInsert) + require.Equal(t, 2, line) } func TestCTagsRunnerSketchWithClassFunction(t *testing.T) { @@ -475,7 +245,6 @@ func TestCTagsRunnerSketchWithClassFunction(t *testing.T) { &builder.CTagsTargetFileSaver{Source: &ctx.Source, TargetFileName: constants.FILE_CTAGS_TARGET}, &ctags.CTagsRunner{}, &ctags.CTags{}, - &ctags.CTagsToPrototypes{}, } for _, command := range commands { From f44e83504b67e91739baa35a8dab1e9573da639c Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 16 Nov 2016 21:31:23 +0100 Subject: [PATCH 3/6] TestCTagsRunnerSketchWithClassFunction now tests only the ctags parser Signed-off-by: Cristian Maglie --- ...TestCTagsRunnerSketchWithClassFunction.txt | 4 ++ .../builder/test/ctags_to_prototypes_test.go | 43 +------------------ 2 files changed, 5 insertions(+), 42 deletions(-) create mode 100644 src/arduino.cc/builder/test/ctags_output/TestCTagsRunnerSketchWithClassFunction.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsRunnerSketchWithClassFunction.txt b/src/arduino.cc/builder/test/ctags_output/TestCTagsRunnerSketchWithClassFunction.txt new file mode 100644 index 00000000..8d83586a --- /dev/null +++ b/src/arduino.cc/builder/test/ctags_output/TestCTagsRunnerSketchWithClassFunction.txt @@ -0,0 +1,4 @@ +asdf /home/megabug/Workspace/arduino-builder/src/arduino.cc/builder/test/sketch_class_function/sketch_class_function.ino /^ void asdf() {}$/;" kind:function line:2 class:test signature:() returntype:void +setup /home/megabug/Workspace/arduino-builder/src/arduino.cc/builder/test/sketch_class_function/sketch_class_function.ino /^void setup() {$/;" kind:function line:4 signature:() returntype:void +loop /home/megabug/Workspace/arduino-builder/src/arduino.cc/builder/test/sketch_class_function/sketch_class_function.ino /^void loop() {}$/;" kind:function line:7 signature:() returntype:void +asdf /home/megabug/Workspace/arduino-builder/src/arduino.cc/builder/test/sketch_class_function/sketch_class_function.ino /^void asdf() {}$/;" kind:function line:8 signature:() returntype:void diff --git a/src/arduino.cc/builder/test/ctags_to_prototypes_test.go b/src/arduino.cc/builder/test/ctags_to_prototypes_test.go index 2b2d4457..2f0a5878 100644 --- a/src/arduino.cc/builder/test/ctags_to_prototypes_test.go +++ b/src/arduino.cc/builder/test/ctags_to_prototypes_test.go @@ -31,12 +31,9 @@ package test import ( "io/ioutil" - "os" "path/filepath" "testing" - "arduino.cc/builder" - "arduino.cc/builder/constants" "arduino.cc/builder/ctags" "arduino.cc/builder/types" "github.com/stretchr/testify/require" @@ -214,45 +211,7 @@ func TestCTagsToPrototypesFunctionPointers(t *testing.T) { } func TestCTagsRunnerSketchWithClassFunction(t *testing.T) { - DownloadCoresAndToolsAndLibraries(t) - - sketchLocation := Abs(t, filepath.Join("sketch_class_function", "sketch_class_function.ino")) - - ctx := &types.Context{ - HardwareFolders: []string{filepath.Join("..", "hardware"), "hardware", "downloaded_hardware"}, - ToolsFolders: []string{"downloaded_tools"}, - BuiltInLibrariesFolders: []string{"downloaded_libraries"}, - OtherLibrariesFolders: []string{"libraries"}, - SketchLocation: sketchLocation, - FQBN: "arduino:avr:leonardo", - ArduinoAPIVersion: "10600", - Verbose: true, - } - - buildPath := SetupBuildPath(t, ctx) - defer os.RemoveAll(buildPath) - - commands := []types.Command{ - - &builder.ContainerSetupHardwareToolsLibsSketchAndProps{}, - - &builder.ContainerMergeCopySketchFiles{}, - - &builder.ContainerFindIncludes{}, - - &builder.PrintUsedLibrariesIfVerbose{}, - &builder.WarnAboutArchIncompatibleLibraries{}, - &builder.CTagsTargetFileSaver{Source: &ctx.Source, TargetFileName: constants.FILE_CTAGS_TARGET}, - &ctags.CTagsRunner{}, - &ctags.CTags{}, - } - - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - - prototypes := ctx.Prototypes + prototypes, _ := producePrototypes(t, "TestCTagsRunnerSketchWithClassFunction.txt") require.Equal(t, 3, len(prototypes)) require.Equal(t, "void setup();", prototypes[0].Prototype) From 91a9a557eaeeb73bdbdcdc3f037fd7341371042e Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 17 Nov 2016 11:58:19 +0100 Subject: [PATCH 4/6] Moved ctags test into ctags package Signed-off-by: Cristian Maglie --- .../{test => ctags}/ctags_parser_test.go | 97 +++++-------------- .../ctags_to_prototypes_test.go | 9 +- ...tCTagsParserClassMembersAreFilteredOut.txt | 0 .../TestCTagsParserDefaultArguments.txt | 0 .../TestCTagsParserFunctionPointer.txt | 0 .../TestCTagsParserFunctionPointers.txt | 0 .../test_data}/TestCTagsParserNamespace.txt | 0 ...uldDealFunctionWithDifferentSignatures.txt | 0 .../TestCTagsParserShouldDealWithClasses.txt | 0 .../TestCTagsParserShouldDealWithMacros.txt | 0 .../TestCTagsParserShouldDealWithStructs.txt | 0 .../TestCTagsParserShouldListPrototypes.txt | 0 .../TestCTagsParserShouldListTemplates.txt | 0 .../TestCTagsParserShouldListTemplates2.txt | 0 .../test_data}/TestCTagsParserStatic.txt | 0 .../TestCTagsParserStructWithFunctions.txt | 0 ...TestCTagsRunnerSketchWithClassFunction.txt | 0 17 files changed, 29 insertions(+), 77 deletions(-) rename src/arduino.cc/builder/{test => ctags}/ctags_parser_test.go (79%) rename src/arduino.cc/builder/{test => ctags}/ctags_to_prototypes_test.go (98%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserClassMembersAreFilteredOut.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserDefaultArguments.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserFunctionPointer.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserFunctionPointers.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserNamespace.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserShouldDealFunctionWithDifferentSignatures.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserShouldDealWithClasses.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserShouldDealWithMacros.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserShouldDealWithStructs.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserShouldListPrototypes.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserShouldListTemplates.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserShouldListTemplates2.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserStatic.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsParserStructWithFunctions.txt (100%) rename src/arduino.cc/builder/{test/ctags_output => ctags/test_data}/TestCTagsRunnerSketchWithClassFunction.txt (100%) diff --git a/src/arduino.cc/builder/test/ctags_parser_test.go b/src/arduino.cc/builder/ctags/ctags_parser_test.go similarity index 79% rename from src/arduino.cc/builder/test/ctags_parser_test.go rename to src/arduino.cc/builder/ctags/ctags_parser_test.go index 6cb7232a..d6390562 100644 --- a/src/arduino.cc/builder/test/ctags_parser_test.go +++ b/src/arduino.cc/builder/ctags/ctags_parser_test.go @@ -27,23 +27,28 @@ * Copyright 2015 Arduino LLC (http://www.arduino.cc/) */ -package test +package ctags import ( "io/ioutil" "path/filepath" "testing" - "arduino.cc/builder/ctags" + "arduino.cc/builder/types" + "github.com/stretchr/testify/require" ) -func TestCTagsParserShouldListPrototypes(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldListPrototypes.txt")) - NoError(t, err) +func produceTags(t *testing.T, filename string) []*types.CTag { + bytes, err := ioutil.ReadFile(filepath.Join("test_data", filename)) + require.NoError(t, err) - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + parser := CTagsParser{} + return parser.Parse(string(bytes)) +} + +func TestCTagsParserShouldListPrototypes(t *testing.T) { + tags := produceTags(t, "TestCTagsParserShouldListPrototypes.txt") require.Equal(t, 8, len(tags)) idx := 0 @@ -81,11 +86,7 @@ func TestCTagsParserShouldListPrototypes(t *testing.T) { } func TestCTagsParserShouldListTemplates(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldListTemplates.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserShouldListTemplates.txt") require.Equal(t, 3, len(tags)) idx := 0 @@ -103,11 +104,7 @@ func TestCTagsParserShouldListTemplates(t *testing.T) { } func TestCTagsParserShouldListTemplates2(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldListTemplates2.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserShouldListTemplates2.txt") require.Equal(t, 4, len(tags)) idx := 0 @@ -127,11 +124,7 @@ func TestCTagsParserShouldListTemplates2(t *testing.T) { } func TestCTagsParserShouldDealWithClasses(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealWithClasses.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserShouldDealWithClasses.txt") require.Equal(t, 2, len(tags)) idx := 0 @@ -143,11 +136,7 @@ func TestCTagsParserShouldDealWithClasses(t *testing.T) { } func TestCTagsParserShouldDealWithStructs(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealWithStructs.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserShouldDealWithStructs.txt") require.Equal(t, 5, len(tags)) idx := 0 @@ -169,11 +158,7 @@ func TestCTagsParserShouldDealWithStructs(t *testing.T) { } func TestCTagsParserShouldDealWithMacros(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealWithMacros.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserShouldDealWithMacros.txt") require.Equal(t, 8, len(tags)) idx := 0 @@ -203,11 +188,7 @@ func TestCTagsParserShouldDealWithMacros(t *testing.T) { } func TestCTagsParserShouldDealFunctionWithDifferentSignatures(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserShouldDealFunctionWithDifferentSignatures.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserShouldDealFunctionWithDifferentSignatures.txt") require.Equal(t, 3, len(tags)) idx := 0 @@ -222,11 +203,7 @@ func TestCTagsParserShouldDealFunctionWithDifferentSignatures(t *testing.T) { } func TestCTagsParserClassMembersAreFilteredOut(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserClassMembersAreFilteredOut.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserClassMembersAreFilteredOut.txt") require.Equal(t, 5, len(tags)) idx := 0 @@ -250,11 +227,7 @@ func TestCTagsParserClassMembersAreFilteredOut(t *testing.T) { } func TestCTagsParserStructWithFunctions(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserStructWithFunctions.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserStructWithFunctions.txt") require.Equal(t, 8, len(tags)) idx := 0 @@ -286,11 +259,7 @@ func TestCTagsParserStructWithFunctions(t *testing.T) { } func TestCTagsParserDefaultArguments(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserDefaultArguments.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserDefaultArguments.txt") require.Equal(t, 3, len(tags)) idx := 0 @@ -306,11 +275,7 @@ func TestCTagsParserDefaultArguments(t *testing.T) { } func TestCTagsParserNamespace(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserNamespace.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserNamespace.txt") require.Equal(t, 3, len(tags)) idx := 0 @@ -326,11 +291,7 @@ func TestCTagsParserNamespace(t *testing.T) { } func TestCTagsParserStatic(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserStatic.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserStatic.txt") require.Equal(t, 3, len(tags)) idx := 0 @@ -345,11 +306,7 @@ func TestCTagsParserStatic(t *testing.T) { } func TestCTagsParserFunctionPointer(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserFunctionPointer.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserFunctionPointer.txt") require.Equal(t, 4, len(tags)) idx := 0 @@ -367,11 +324,7 @@ func TestCTagsParserFunctionPointer(t *testing.T) { } func TestCTagsParserFunctionPointers(t *testing.T) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", "TestCTagsParserFunctionPointers.txt")) - NoError(t, err) - - ctagsParser := ctags.CTagsParser{} - tags := ctagsParser.Parse(string(bytes)) + tags := produceTags(t, "TestCTagsParserFunctionPointers.txt") require.Equal(t, 5, len(tags)) idx := 0 diff --git a/src/arduino.cc/builder/test/ctags_to_prototypes_test.go b/src/arduino.cc/builder/ctags/ctags_to_prototypes_test.go similarity index 98% rename from src/arduino.cc/builder/test/ctags_to_prototypes_test.go rename to src/arduino.cc/builder/ctags/ctags_to_prototypes_test.go index 2f0a5878..27db5820 100644 --- a/src/arduino.cc/builder/test/ctags_to_prototypes_test.go +++ b/src/arduino.cc/builder/ctags/ctags_to_prototypes_test.go @@ -27,23 +27,22 @@ * Copyright 2015 Arduino LLC (http://www.arduino.cc/) */ -package test +package ctags import ( "io/ioutil" "path/filepath" "testing" - "arduino.cc/builder/ctags" "arduino.cc/builder/types" "github.com/stretchr/testify/require" ) func producePrototypes(t *testing.T, filename string) ([]*types.Prototype, int) { - bytes, err := ioutil.ReadFile(filepath.Join("ctags_output", filename)) - NoError(t, err) + bytes, err := ioutil.ReadFile(filepath.Join("test_data", filename)) + require.NoError(t, err) - parser := &ctags.CTagsParser{} + parser := &CTagsParser{} parser.Parse(string(bytes)) return parser.GeneratePrototypes() } diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserClassMembersAreFilteredOut.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserClassMembersAreFilteredOut.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserClassMembersAreFilteredOut.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserClassMembersAreFilteredOut.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserDefaultArguments.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserDefaultArguments.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserDefaultArguments.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserDefaultArguments.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserFunctionPointer.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserFunctionPointer.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserFunctionPointer.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserFunctionPointer.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserFunctionPointers.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserFunctionPointers.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserFunctionPointers.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserFunctionPointers.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserNamespace.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserNamespace.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserNamespace.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserNamespace.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldDealFunctionWithDifferentSignatures.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldDealFunctionWithDifferentSignatures.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldDealFunctionWithDifferentSignatures.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldDealFunctionWithDifferentSignatures.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldDealWithClasses.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldDealWithClasses.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldDealWithClasses.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldDealWithClasses.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldDealWithMacros.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldDealWithMacros.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldDealWithMacros.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldDealWithMacros.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldDealWithStructs.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldDealWithStructs.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldDealWithStructs.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldDealWithStructs.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldListPrototypes.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldListPrototypes.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldListPrototypes.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldListPrototypes.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldListTemplates.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldListTemplates.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldListTemplates.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldListTemplates.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldListTemplates2.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldListTemplates2.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserShouldListTemplates2.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserShouldListTemplates2.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserStatic.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserStatic.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserStatic.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserStatic.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsParserStructWithFunctions.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsParserStructWithFunctions.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsParserStructWithFunctions.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsParserStructWithFunctions.txt diff --git a/src/arduino.cc/builder/test/ctags_output/TestCTagsRunnerSketchWithClassFunction.txt b/src/arduino.cc/builder/ctags/test_data/TestCTagsRunnerSketchWithClassFunction.txt similarity index 100% rename from src/arduino.cc/builder/test/ctags_output/TestCTagsRunnerSketchWithClassFunction.txt rename to src/arduino.cc/builder/ctags/test_data/TestCTagsRunnerSketchWithClassFunction.txt From f1fe3ba01956ae84748925cf3c2b3e5596573aaf Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 17 Nov 2016 12:58:26 +0100 Subject: [PATCH 5/6] Removed temporary CTags task Signed-off-by: Cristian Maglie --- .../builder/container_add_prototypes.go | 1 - src/arduino.cc/builder/ctags/command.go | 16 ---------------- src/arduino.cc/builder/ctags/ctags_runner.go | 11 ++++++++++- 3 files changed, 10 insertions(+), 18 deletions(-) delete mode 100644 src/arduino.cc/builder/ctags/command.go diff --git a/src/arduino.cc/builder/container_add_prototypes.go b/src/arduino.cc/builder/container_add_prototypes.go index 77f770e5..29dccc7d 100644 --- a/src/arduino.cc/builder/container_add_prototypes.go +++ b/src/arduino.cc/builder/container_add_prototypes.go @@ -48,7 +48,6 @@ func (s *ContainerAddPrototypes) Run(ctx *types.Context) error { &FilterSketchSource{Source: &ctx.SourceGccMinusE}, &CTagsTargetFileSaver{Source: &ctx.SourceGccMinusE, TargetFileName: constants.FILE_CTAGS_TARGET_FOR_GCC_MINUS_E}, &ctags.CTagsRunner{}, - &ctags.CTags{}, &PrototypesAdder{}, &SketchSaver{}, } diff --git a/src/arduino.cc/builder/ctags/command.go b/src/arduino.cc/builder/ctags/command.go deleted file mode 100644 index 2aeaddbd..00000000 --- a/src/arduino.cc/builder/ctags/command.go +++ /dev/null @@ -1,16 +0,0 @@ -package ctags - -import "arduino.cc/builder/types" - -type CTags struct{} - -func (c *CTags) Run(ctx *types.Context) error { - parser := &CTagsParser{} - ctx.CTagsOfPreprocessedSource = parser.Parse(ctx.CTagsOutput) - protos, line := parser.GeneratePrototypes() - if line != -1 { - ctx.PrototypesLineWhereToInsert = line - } - ctx.Prototypes = protos - return nil -} diff --git a/src/arduino.cc/builder/ctags/ctags_runner.go b/src/arduino.cc/builder/ctags/ctags_runner.go index b58242d7..43342942 100644 --- a/src/arduino.cc/builder/ctags/ctags_runner.go +++ b/src/arduino.cc/builder/ctags/ctags_runner.go @@ -30,11 +30,12 @@ package ctags import ( + "fmt" + "arduino.cc/builder/constants" "arduino.cc/builder/i18n" "arduino.cc/builder/types" "arduino.cc/builder/utils" - "fmt" ) type CTagsRunner struct{} @@ -71,5 +72,13 @@ func (s *CTagsRunner) Run(ctx *types.Context) error { ctx.CTagsOutput = string(sourceBytes) + parser := &CTagsParser{} + ctx.CTagsOfPreprocessedSource = parser.Parse(ctx.CTagsOutput) + protos, line := parser.GeneratePrototypes() + if line != -1 { + ctx.PrototypesLineWhereToInsert = line + } + ctx.Prototypes = protos + return nil } From a4ede088e7f5fa67fd7c2f12b94e3124126bae00 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 17 Nov 2016 13:11:53 +0100 Subject: [PATCH 6/6] Moved CTagsRunner command into builder package Signed-off-by: Cristian Maglie --- .../builder/container_add_prototypes.go | 3 +-- .../builder/{ctags => }/ctags_runner.go | 5 +++-- .../builder/test/ctags_runner_test.go | 20 +++++++++---------- 3 files changed, 14 insertions(+), 14 deletions(-) rename src/arduino.cc/builder/{ctags => }/ctags_runner.go (97%) diff --git a/src/arduino.cc/builder/container_add_prototypes.go b/src/arduino.cc/builder/container_add_prototypes.go index 29dccc7d..b69da297 100644 --- a/src/arduino.cc/builder/container_add_prototypes.go +++ b/src/arduino.cc/builder/container_add_prototypes.go @@ -33,7 +33,6 @@ import ( "path/filepath" "arduino.cc/builder/constants" - "arduino.cc/builder/ctags" "arduino.cc/builder/i18n" "arduino.cc/builder/types" ) @@ -47,7 +46,7 @@ func (s *ContainerAddPrototypes) Run(ctx *types.Context) error { &ReadFileAndStoreInContext{Target: &ctx.SourceGccMinusE}, &FilterSketchSource{Source: &ctx.SourceGccMinusE}, &CTagsTargetFileSaver{Source: &ctx.SourceGccMinusE, TargetFileName: constants.FILE_CTAGS_TARGET_FOR_GCC_MINUS_E}, - &ctags.CTagsRunner{}, + &CTagsRunner{}, &PrototypesAdder{}, &SketchSaver{}, } diff --git a/src/arduino.cc/builder/ctags/ctags_runner.go b/src/arduino.cc/builder/ctags_runner.go similarity index 97% rename from src/arduino.cc/builder/ctags/ctags_runner.go rename to src/arduino.cc/builder/ctags_runner.go index 43342942..b869d6f3 100644 --- a/src/arduino.cc/builder/ctags/ctags_runner.go +++ b/src/arduino.cc/builder/ctags_runner.go @@ -27,12 +27,13 @@ * Copyright 2015 Arduino LLC (http://www.arduino.cc/) */ -package ctags +package builder import ( "fmt" "arduino.cc/builder/constants" + "arduino.cc/builder/ctags" "arduino.cc/builder/i18n" "arduino.cc/builder/types" "arduino.cc/builder/utils" @@ -72,7 +73,7 @@ func (s *CTagsRunner) Run(ctx *types.Context) error { ctx.CTagsOutput = string(sourceBytes) - parser := &CTagsParser{} + parser := &ctags.CTagsParser{} ctx.CTagsOfPreprocessedSource = parser.Parse(ctx.CTagsOutput) protos, line := parser.GeneratePrototypes() if line != -1 { diff --git a/src/arduino.cc/builder/test/ctags_runner_test.go b/src/arduino.cc/builder/test/ctags_runner_test.go index d7d96ef4..b090df0a 100644 --- a/src/arduino.cc/builder/test/ctags_runner_test.go +++ b/src/arduino.cc/builder/test/ctags_runner_test.go @@ -30,15 +30,15 @@ package test import ( - "arduino.cc/builder" - "arduino.cc/builder/constants" - "arduino.cc/builder/ctags" - "arduino.cc/builder/types" - "github.com/stretchr/testify/require" "os" "path/filepath" "strings" "testing" + + "arduino.cc/builder" + "arduino.cc/builder/constants" + "arduino.cc/builder/types" + "github.com/stretchr/testify/require" ) func TestCTagsRunner(t *testing.T) { @@ -71,7 +71,7 @@ func TestCTagsRunner(t *testing.T) { &builder.PrintUsedLibrariesIfVerbose{}, &builder.WarnAboutArchIncompatibleLibraries{}, &builder.CTagsTargetFileSaver{Source: &ctx.Source, TargetFileName: constants.FILE_CTAGS_TARGET}, - &ctags.CTagsRunner{}, + &builder.CTagsRunner{}, } for _, command := range commands { @@ -121,7 +121,7 @@ func TestCTagsRunnerSketchWithClass(t *testing.T) { &builder.PrintUsedLibrariesIfVerbose{}, &builder.WarnAboutArchIncompatibleLibraries{}, &builder.CTagsTargetFileSaver{Source: &ctx.Source, TargetFileName: constants.FILE_CTAGS_TARGET}, - &ctags.CTagsRunner{}, + &builder.CTagsRunner{}, } for _, command := range commands { @@ -169,7 +169,7 @@ func TestCTagsRunnerSketchWithTypename(t *testing.T) { &builder.PrintUsedLibrariesIfVerbose{}, &builder.WarnAboutArchIncompatibleLibraries{}, &builder.CTagsTargetFileSaver{Source: &ctx.Source, TargetFileName: constants.FILE_CTAGS_TARGET}, - &ctags.CTagsRunner{}, + &builder.CTagsRunner{}, } for _, command := range commands { @@ -216,7 +216,7 @@ func TestCTagsRunnerSketchWithNamespace(t *testing.T) { &builder.PrintUsedLibrariesIfVerbose{}, &builder.WarnAboutArchIncompatibleLibraries{}, &builder.CTagsTargetFileSaver{Source: &ctx.Source, TargetFileName: constants.FILE_CTAGS_TARGET}, - &ctags.CTagsRunner{}, + &builder.CTagsRunner{}, } for _, command := range commands { @@ -262,7 +262,7 @@ func TestCTagsRunnerSketchWithTemplates(t *testing.T) { &builder.PrintUsedLibrariesIfVerbose{}, &builder.WarnAboutArchIncompatibleLibraries{}, &builder.CTagsTargetFileSaver{Source: &ctx.Source, TargetFileName: constants.FILE_CTAGS_TARGET}, - &ctags.CTagsRunner{}, + &builder.CTagsRunner{}, } for _, command := range commands {