elastic / apm-agent-go

https://www.elastic.co/guide/en/apm/agent/go/current/index.html
Apache License 2.0
420 stars 193 forks source link

utilizing apm agent in a project that utilizes godog directly causes import errors #922

Closed adam-stokes closed 3 years ago

adam-stokes commented 3 years ago

Describe the bug We are utilizing godog and the go apm agent code directly in our project https://github.com/elastic/e2e-testing. When attempting to get our modules in sync we get an import error:

[adam:~/Projects/e2e-testing] master(+23/-1058)* 1 ± go mod tidy
go: finding module for package github.com/cucumber/godog/gherkin
github.com/elasticsearch/e2e-testing/cli/services imports
        go.elastic.co/apm tested by
        go.elastic.co/apm.test imports
        go.elastic.co/apm/internal/apmgodog imports
        github.com/cucumber/godog/gherkin: module github.com/cucumber/godog@latest found (v0.11.0), but does not contain package github.com/cucumber/godog/gherkin

I believe it is due to the fact that the dependencies defined here are pinned to v0.8.1 where the gherkin package was part of the godog module but has since been extracted out (see https://github.com/cucumber/godog/blob/master/release-notes/v0.9.0.md)

Pinning our module dependency to 0.8.1 does get around this issue but we have some requirements related to junit that are avaialable in a newer version of godog.

To Reproduce Steps to reproduce the behavior:

  1. git clone https://github.com/elastic/e2e-testing
  2. git checkout gh-fix-557
  3. go mod tidy
    [adam:~/Projects/e2e-testing] master(+23/-1058)* 1 ± go mod tidy
    go: finding module for package github.com/cucumber/godog/gherkin
    github.com/elasticsearch/e2e-testing/cli/services imports
        go.elastic.co/apm tested by
        go.elastic.co/apm.test imports
        go.elastic.co/apm/internal/apmgodog imports
        github.com/cucumber/godog/gherkin: module github.com/cucumber/godog@latest found (v0.11.0), but does not contain package github.com/cucumber/godog/gherkin

I did attempt to use the exclude parameter in go.mod but didn't have any success. Was curious if anything could be done or if you know of any potential workarounds to allowing us to use this module and godog directly?

axw commented 3 years ago

In https://github.com/elastic/apm-agent-go/pull/899 I moved the godog dependency to an internal module, so this shouldn't happen from the next release. In the mean time, you could use the most recent commit in your go.mod.

adam-stokes commented 3 years ago

Thanks for the help @axw I was able to address this in https://github.com/elastic/e2e-testing/pull/954/commits/db79d42ab298424254ce7ad9312920dfc083bf20, will keep an eye out for the next go apm release

adam-stokes commented 3 years ago

Closing as this will be addressed in the next release