| # This is a test that -trimpath trims the paths of every directory |
| # of Cgo dependencies in the module, and trims file paths included |
| # through the __FILE__ macro using --file-prefix-map. |
| |
| [!cgo] skip |
| [short] skip 'links and runs binaries' |
| |
| # Test in main module. |
| go run -trimpath -mod=vendor ./main |
| stdout '(\\_\\_|/_)[\\/]m[\\/]c[\\/]bar.h' |
| |
| # Test in vendored module. |
| go run -trimpath -mod=vendor v.com/main |
| stdout '(\\_\\_|/_)[\\/]vendor[\\/]v.com[\\/]c[\\/]bar.h' |
| |
| # Test in GOPATH mode. |
| env GO111MODULE=off |
| go run -trimpath ./main |
| stdout '(\\_\\_|/_)[\\/]GOPATH[\\/]src[\\/]c[\\/]bar.h' |
| |
| -- go.mod -- |
| module m |
| |
| require v.com v1.0.0 |
| -- go.sum -- |
| v.com v1.0.0 h1:xxx |
| v.com v1.0.0/go.mod h1:xxx |
| -- vendor/modules.txt -- |
| # v.com v1.0.0 |
| ## explicit; go 1.20 |
| v.com/main |
| -- vendor/v.com/main/main.go -- |
| package main |
| |
| // #cgo CFLAGS: -I../c |
| // #include "stdio.h" |
| // void printfile(); |
| import "C" |
| |
| func main() { |
| C.printfile() |
| C.fflush(C.stdout) |
| } |
| -- vendor/v.com/main/foo.c -- |
| #include "bar.h" |
| -- vendor/v.com/c/bar.h -- |
| #include "stdio.h" |
| |
| void printfile() { |
| printf("%s\n", __FILE__); |
| } |
| -- main/main.go -- |
| package main |
| |
| // #cgo CFLAGS: -I../c |
| // #include "stdio.h" |
| // void printfile(); |
| import "C" |
| |
| func main() { |
| C.printfile() |
| C.fflush(C.stdout) |
| } |
| -- main/foo.c -- |
| #include "bar.h" |
| -- c/bar.h -- |
| #include "stdio.h" |
| |
| void printfile() { |
| printf("%s\n", __FILE__); |
| } |