diff --git a/provider/internal/builtin/service_client.go b/provider/internal/builtin/service_client.go index d269fbf6..91ad554c 100644 --- a/provider/internal/builtin/service_client.go +++ b/provider/internal/builtin/service_client.go @@ -358,7 +358,7 @@ func (b *builtinServiceClient) getLocation(ctx context.Context, path, content st }() location.StartPosition.Line = -1 - lineNumber, err := provider.MultilineGrep(ctx, len(lines), path, pattern) + lineNumber, err := provider.MultilineGrep(ctx, len(parts), path, pattern) if err != nil || lineNumber == -1 { return location, fmt.Errorf("unable to get location in file %s - %w", path, err) } diff --git a/provider/lib_test.go b/provider/lib_test.go index 82d753a2..5b0af97b 100644 --- a/provider/lib_test.go +++ b/provider/lib_test.go @@ -47,6 +47,14 @@ func TestMultilineGrep(t *testing.T) { window: 2, wantErr: false, }, + { + name: "multi-line complex pattern", + filePath: "./testdata/test.xml", + pattern: ".*?4\\.0\\.0.*?com\\.telran.*?BookServer", + window: 4, + want: 5, + wantErr: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/provider/testdata/test.xml b/provider/testdata/test.xml new file mode 100644 index 00000000..a55d0ba1 --- /dev/null +++ b/provider/testdata/test.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + com.telran + BookServer + 1.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-maven-plugin + 2.1.0.RELEASE + + + + + + + + org.springframework.boot + spring-boot-starter-web + 2.1.0.RELEASE + + + + + org.projectlombok + lombok + 1.18.2 + + + + + com.fasterxml.jackson.core + jackson-databind + 2.9.5 + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.9.5 + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + 2.9.5 + + + + + + + + + + + + + \ No newline at end of file