Message ID | 87a5noaot3.fsf@troyfigiel.com |
---|---|
State | New |
Headers | show |
Series | [bug#69376,go-team] build-system/go: Allow providing additional test flags. | expand |
As usual, I forgot to add my copyright. Could a committer be so kind to add it or let me know if they prefer it in a patch v2?
Hi Troy, Thank you for the work! The patch looks reasonable. Does it allow us to run all available tests as we discussed in <https://lists.gnu.org/archive/html/guix-devel/2024-01/msg00128.html>? One nitpick about this section: --8<---------------cut here---------------start------------->8--- +;; go test builds a test binary (or multiple binaries), vets the code and then +;; runs the test binary. Build, test and test binary flags can be provided as +;; test-flags. See "go help test" and "go help testflag" for more details. --8<---------------cut here---------------end--------------->8--- It is a good material for documentation section, how about to move it from this comment and compile a proper documentation note describing #:test-flags for go-build-system? Something like this: --8<---------------cut here---------------start------------->8--- #:test-flags is added. The default is '(). These flags are passed as arguments to the test command. Note that flags for verbose output is always enabled on supported backends. --8<---------------cut here---------------end--------------->8--- Sourced from <https://guix.gnu.org/manual/en/html_node/Build-Systems.html> WDYT? -- Oleg
Hi Oleg, On 2024-03-07 23:59, Sharlatan Hellseher wrote: > The patch looks reasonable. Does it allow us to run all available tests > as we discussed in > <https://lists.gnu.org/archive/html/guix-devel/2024-01/msg00128.html>? No, not yet. This only allows providing extra test-flags such as "-vet=off" or "-skip ..." for Go 1.20+. An example where this is useful, is go-github-com-wtolson-go-taglib, but I had a couple in my backlog as well. > One nitpick about this section: > --8<---------------cut here---------------start------------->8--- > +;; go test builds a test binary (or multiple binaries), vets the code and then > +;; runs the test binary. Build, test and test binary flags can be provided as > +;; test-flags. See "go help test" and "go help testflag" for more details. > --8<---------------cut here---------------end--------------->8--- > It is a good material for documentation section, how about to move it > from this comment and compile a proper documentation note describing > #:test-flags for go-build-system? > > Something like this: > --8<---------------cut here---------------start------------->8--- > #:test-flags is added. The default is '(). These flags are passed as > arguments to the test command. Note that flags for verbose output is > always enabled on supported backends. > --8<---------------cut here---------------end--------------->8--- > Sourced from <https://guix.gnu.org/manual/en/html_node/Build-Systems.html> > > WDYT? I think that's a great idea. Where would that go exactly? I have only found "guix.texi" and can add a short section there. Is this the correct location? Best wishes, Troy
Hi Troy, It looks like a right place to add https://git.savannah.gnu.org/cgit/guix.git/tree/doc/guix.texi#n9718 May you send v2 with comments formed as documentation entries please? Thanks, Oleg
diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm index 0934fded07..eb78a289f2 100644 --- a/guix/build-system/go.scm +++ b/guix/build-system/go.scm @@ -184,6 +184,7 @@ (define* (go-build name inputs (unpack-path "") (build-flags ''()) (tests? #t) + (test-flags ''()) (allow-go-reference? #f) (system (%current-system)) (goarch #f) @@ -214,6 +215,7 @@ (define builder #:unpack-path #$unpack-path #:build-flags #$build-flags #:tests? #$tests? + #:test-flags #$test-flags #:allow-go-reference? #$allow-go-reference? #:inputs #$(input-tuples->gexp inputs))))) @@ -236,6 +238,7 @@ (define* (go-cross-build name (unpack-path "") (build-flags ''()) (tests? #f) ; nothing can be done + (test-flags ''()) (allow-go-reference? #f) (system (%current-system)) (goarch (first (go-target target))) @@ -285,6 +288,7 @@ (define %outputs #:unpack-path #$unpack-path #:build-flags #$build-flags #:tests? #$tests? + #:test-flags #$test-flags #:make-dynamic-linker-cache? #f ;cross-compiling #:allow-go-reference? #$allow-go-reference? #:inputs %build-inputs)))) diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm index 7f25e05d0d..24b5ec1f05 100644 --- a/guix/build/go-build-system.scm +++ b/guix/build/go-build-system.scm @@ -271,11 +271,13 @@ (define* (build #:key import-path build-flags #:allow-other-keys) "Here are the results of `go env`:\n")) (invoke "go" "env")))) -;; Can this also install commands??? -(define* (check #:key tests? import-path #:allow-other-keys) +;; go test builds a test binary (or multiple binaries), vets the code and then +;; runs the test binary. Build, test and test binary flags can be provided as +;; test-flags. See "go help test" and "go help testflag" for more details. +(define* (check #:key tests? import-path test-flags #:allow-other-keys) "Run the tests for the package named by IMPORT-PATH." (when tests? - (invoke "go" "test" import-path)) + (apply invoke "go" "test" `(,import-path ,@test-flags))) #t) (define* (install #:key install-source? outputs import-path unpack-path #:allow-other-keys)