| package mod | |
| import ( | |
| "runtime/debug" | |
| "testing" | |
| ) | |
| func TestModuleVersion(t *testing.T) { | |
| tests := []struct { | |
| name string | |
| module string | |
| biContent string | |
| wantVersion string | |
| }{ | |
| { | |
| name: "returns empty string if build information not available", | |
| biContent: ` | |
| go go1.20.3 | |
| path github.com/docker/docker/builder/builder-next/worker | |
| mod github.com/docker/docker (devel) | |
| `, | |
| module: "github.com/moby/buildkit", | |
| wantVersion: "", | |
| }, | |
| { | |
| name: "returns the version of buildkit dependency", | |
| biContent: ` | |
| go go1.20.3 | |
| path github.com/docker/docker/builder/builder-next/worker | |
| mod github.com/docker/docker (devel) | |
| dep github.com/moby/buildkit v0.11.5 h1:JZvvWzulcnA2G4c/gJiSIqKDUoBjctYw2WMuS+XJexU= | |
| `, | |
| module: "github.com/moby/buildkit", | |
| wantVersion: "v0.11.5", | |
| }, | |
| { | |
| name: "returns the replaced version of buildkit dependency", | |
| biContent: ` | |
| go go1.20.3 | |
| path github.com/docker/docker/builder/builder-next/worker | |
| mod github.com/docker/docker (devel) | |
| dep github.com/moby/buildkit v0.11.5 h1:JZvvWzulcnA2G4c/gJiSIqKDUoBjctYw2WMuS+XJexU= | |
| => github.com/moby/buildkit v0.12.0 h1:3YO8J4RtmG7elEgaWMb4HgmpS2CfY1QlaOz9nwB+ZSs= | |
| `, | |
| module: "github.com/moby/buildkit", | |
| wantVersion: "v0.12.0", | |
| }, | |
| { | |
| name: "returns the base version of pseudo version", | |
| biContent: ` | |
| go go1.20.3 | |
| path github.com/docker/docker/builder/builder-next/worker | |
| mod github.com/docker/docker (devel) | |
| dep github.com/moby/buildkit v0.10.7-0.20230306143919-70f2ad56d3e5 h1:JZvvWzulcnA2G4c/gJiSIqKDUoBjctYw2WMuS+XJexU= | |
| `, | |
| module: "github.com/moby/buildkit", | |
| wantVersion: "v0.10.6+70f2ad56d3e5", | |
| }, | |
| } | |
| for _, tt := range tests { | |
| tt := tt | |
| t.Run(tt.name, func(t *testing.T) { | |
| bi, err := debug.ParseBuildInfo(tt.biContent) | |
| if err != nil { | |
| t.Fatalf("failed to parse build info: %v", err) | |
| } | |
| if gotVersion := moduleVersion(tt.module, bi); gotVersion != tt.wantVersion { | |
| t.Errorf("moduleVersion() = %v, want %v", gotVersion, tt.wantVersion) | |
| } | |
| }) | |
| } | |
| } |