aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/golang-check.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/golang-check.scm')
-rw-r--r--gnu/packages/golang-check.scm287
1 files changed, 280 insertions, 7 deletions
diff --git a/gnu/packages/golang-check.scm b/gnu/packages/golang-check.scm
index 1558536182..3e26f5f374 100644
--- a/gnu/packages/golang-check.scm
+++ b/gnu/packages/golang-check.scm
@@ -16,8 +16,10 @@
;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2023 Benjamin <benjamin@uvy.fr>
;;; Copyright © 2023 Felix Lechner <felix.lechner@lease-up.com>
+;;; Copyright © 2023 Fries <fries1234@protonmail.com>
;;; Copyright © 2023 Hilton Chain <hako@ultrarare.space>
;;; Copyright © 2023 Katherine Cox-Buday <cox.katherine.e@gmail.com>
+;;; Copyright © 2024 Greg Hogan <code@greghogan.com>
;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com>
;;;
;;; This file is part of GNU Guix.
@@ -122,6 +124,36 @@
@end itemize\n")
(license license:expat))))
+(define-public go-github-com-chzyer-test
+ (package
+ (name "go-github-com-chzyer-test")
+ (version "1.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/chzyer/test")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1axdlcnx2qjsn5wsr2pr1m0w0a8k4nk5kkrngh742fgh81vzzy8s"))))
+ (build-system go-build-system)
+ (arguments
+ (list
+ ;; Tests relating to a in-memory disk fail due to a Segfault see
+ ;; <https://github.com/chzyer/test/issues/4>.
+ #:tests? #f
+ #:import-path "github.com/chzyer/test"))
+ (propagated-inputs
+ (list go-github-com-chzyer-logex))
+ (home-page "https://github.com/chzyer/test")
+ (synopsis "Testing library for Go")
+ ;; Description is not provided, see
+ ;; <https://github.com/chzyer/test/issues/3>.
+ (description
+ "A testing library for Go programs.")
+ (license license:expat)))
+
(define-public go-github-com-davecgh-go-spew
(package
(name "go-github-com-davecgh-go-spew")
@@ -160,6 +192,42 @@ style).
@end itemize")
(license license:isc)))
+(define-public go-github-com-felixge-fgprof
+ (package
+ (name "go-github-com-felixge-fgprof")
+ (version "0.9.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/felixge/fgprof")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "00h4kphvmbcdgad0wmqbaclc4a1pipdb55ay41mwh6cnkdjjvhp0"))))
+ (build-system go-build-system)
+ (arguments
+ (list
+ #:import-path "github.com/felixge/fgprof"))
+ (native-inputs
+ (list go-github-com-stretchr-testify))
+ (propagated-inputs
+ (list go-github-com-google-pprof))
+ (home-page "https://github.com/felixge/fgprof")
+ (synopsis "Sampling profiler for Golang")
+ (description
+ "@code{fgprof} is a sampling Go profiler providing analyze On-CPU as well
+as @url{http://www.brendangregg.com/offcpuanalysis.html, Off-CPU} (e.g. I/O)
+time together.
+
+Go's builtin sampling CPU profiler can only show On-CPU time, but it's better
+than fgprof at that. Go also includes tracing profilers that can analyze I/O,
+but they can't be combined with the CPU profiler.
+
+fgprof is designed for analyzing applications with mixed I/O and CPU
+workloads. This kind of profiling is also known as wall-clock profiling.")
+ (license license:expat)))
+
(define-public go-github-com-frankban-quicktest
(package
(name "go-github-com-frankban-quicktest")
@@ -288,6 +356,57 @@ also update a file with new \"golden\" output that is deemed correct.")
values for the purpose of fuzz testing.")
(license license:asl2.0))))
+;; XXX: Placing to (gnu package profiling) creates some failing cycles.
+(define-public go-github-com-google-pprof
+ (package
+ (name "go-github-com-google-pprof")
+ (version "0.0.0-20240402174815-29b9bb013b0f")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/google/pprof")
+ (commit (go-version->git-ref version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "09l37q5dql0q0zj8amlnrynajfvp1vrp846q5vgiwsbwz9b78f18"))))
+ (build-system go-build-system)
+ (arguments
+ (list
+ #:import-path "github.com/google/pprof"
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; To make this package smaller to use as a library where just
+ ;; source is required.
+ (delete 'build))))
+ (propagated-inputs
+ (list go-github-com-chzyer-readline
+ go-github-com-ianlancetaylor-demangle
+ go-golang-org-x-sys))
+ (home-page "https://github.com/google/pprof")
+ (synopsis "Visualization and analysis of profiling data")
+ (description
+ "@code{pprof} is a tool for visualization and analysis of profiling data.
+
+It reads a collection of profiling samples in profile.proto format and
+generates reports to visualize and help analyze the data. It can generate
+both text and graphical reports (through the use of the dot visualization
+package).")
+ (license (list
+ ;; For go code: LICENSE
+ license:asl2.0
+ ;; For svgpan: third_party/svgpan/LICENSE
+ ;; original source <https://code.google.com/archive/p/svgpan/>.
+ license:bsd-3
+ ;; For d3flamegraph: third_party/d3flamegraph/D3_LICENSE
+ ;;
+ ;; Bundle of d3-flame-graph and d3-selection JavaScript library
+ ;; (NPM) <https://www.npmjs.com/package/d3-flame-graph> and
+ ;; <https://www.npmjs.com/package/d3-selection>.
+ license:asl2.0 ; for bundle and d3-flame-graph
+ license:isc ; for d3-selection
+ ))))
+
(define-public go-github-com-hexops-gotextdiff
(package
(name "go-github-com-hexops-gotextdiff")
@@ -441,17 +560,17 @@ differently.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32
- "1hh6n7q92y0ai8k6rj2yzw6wwxikhyiyk4j92zgvf1zad0gmqqmz"))))
+ (base32 "1hh6n7q92y0ai8k6rj2yzw6wwxikhyiyk4j92zgvf1zad0gmqqmz"))))
(build-system go-build-system)
(arguments
- (list #:import-path "github.com/onsi/ginkgo"))
+ (list
+ #:import-path "github.com/onsi/ginkgo"))
(propagated-inputs
- (list go-golang-org-x-sys
- go-golang-org-x-tools
- go-github-com-go-task-slim-sprig
+ (list go-github-com-go-task-slim-sprig
go-github-com-nxadm-tail
- go-github-com-onsi-gomega))
+ go-github-com-onsi-gomega
+ go-golang-org-x-sys
+ go-golang-org-x-tools))
(home-page "https://github.com/onsi/ginkgo")
(synopsis "BDD-style testing framework for Go")
(description
@@ -460,6 +579,104 @@ builds on top of Go's builtin @code{testing} library and is complemented by the
Gomega matcher library.")
(license license:expat)))
+(define-public go-github-com-onsi-ginkgo-v2
+ (package
+ (inherit go-github-com-onsi-ginkgo)
+ (name "go-github-com-onsi-ginkgo-v2")
+ (version "2.17.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/onsi/ginkgo")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "089x6pz5563ldbxiwaqvd2g4dqfzlr25dflmas3gfq51ibwzh4vz"))))
+ (arguments
+ (list
+ #:go go-1.20
+ #:import-path "github.com/onsi/ginkgo/v2"))
+ (propagated-inputs
+ (list go-github-com-go-logr-logr
+ ;; go-github-com-google-pprof ; not packed yet in Guix, for profiling
+ go-github-com-onsi-gomega
+ go-github-com-go-task-slim-sprig
+ go-golang-org-x-net
+ go-golang-org-x-sys
+ go-golang-org-x-tools))))
+
+(define-public go-github-com-onsi-gomega
+ (package
+ (name "go-github-com-onsi-gomega")
+ (version "1.19.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/onsi/gomega")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "092phwk97sk4sv0nbx5pfhqs6x3x1lnrjwyda1m6b6zwrfmq5c6i"))))
+ (build-system go-build-system)
+ (arguments
+ (list #:import-path "github.com/onsi/gomega"
+ ;; Unless we disable the tests, we have a circular dependency on
+ ;; ginkgo/v2.
+ #:tests? #f))
+ (propagated-inputs
+ (list go-github-com-golang-protobuf-proto
+ go-golang-org-x-net
+ go-golang-org-x-sys
+ go-golang-org-x-text
+ go-google-golang-org-protobuf
+ go-gopkg-in-yaml-v2))
+ (home-page "https://github.com/onsi/gomega")
+ (synopsis "Matcher library for Ginkgo")
+ (description
+ "Gomega is the preferred matcher/assertion library for the Ginkgo test
+framework.")
+ (license license:expat)))
+
+(define-public go-github-com-pkg-profile
+ (package
+ (name "go-github-com-pkg-profile")
+ (version "1.7.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pkg/profile")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0ifr9gnycjwh7dbvsb5vgs9kzlr548cb4m45zvl8i8lgd3qhppy1"))))
+ (build-system go-build-system)
+ (arguments
+ (list
+ ;; XXX: Unit tests failing, see
+ ;; <https://github.com/pkg/profile/issues/68>.
+ #:tests? #f
+ #:import-path "github.com/pkg/profile"
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; profile drops a cpu.pprof file inside its source directory
+ ;; after tests which makes it unreproducible so we remove it.
+ (add-after 'check 'delete-test-file
+ (lambda* (#:key import-path tests? #:allow-other-keys)
+ (when tests?
+ (delete-file (string-append "src/" import-path
+ "/cpu.pprof"))))))))
+ (propagated-inputs
+ (list go-github-com-felixge-fgprof))
+ (home-page "https://github.com/pkg/profile")
+ (synopsis "Simple profiling for Go")
+ (description
+ "Profile provides a simple way to manage runtime/pprof profiling of your
+Go application.")
+ (license license:bsd-2)))
+
(define-public go-github-com-prashantv-gostub
(package
(name "go-github-com-prashantv-gostub")
@@ -532,6 +749,21 @@ Features include:
(propagated-inputs
(list go-gopkg-in-yaml-v3)))))
+(define-public go-github-com-stretchr-testify-next
+ (package
+ (inherit go-github-com-stretchr-testify)
+ (name "go-github-com-stretchr-testify")
+ (version "1.9.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/stretchr/testify")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "12cnhk96h8b3ddlb7jfvwwavzc0j1c2iva92pszl9rv6r571ckzg"))))))
+
(define-public go-github-com-tdewolff-test
(package
(name "go-github-com-tdewolff-test")
@@ -771,6 +1003,33 @@ custom assertions to be used alongside native Go testing.")
(arguments
(list #:import-path "github.com/go-playground/assert/v2"))))
+(define-public go-go-uber-org-goleak
+ (package
+ (name "go-go-uber-org-goleak")
+ (version "1.2.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/uber-go/goleak")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1lpqw7ygffak8qki9i4vw8b99l25l8jrw8iwcplqsclk6fzkl24p"))))
+ (build-system go-build-system)
+ (arguments
+ (list
+ #:import-path "go.uber.org/goleak"))
+ (native-inputs
+ (list go-github-com-stretchr-testify-next))
+ (home-page "https://pkg.go.dev/go.uber.org/goleak")
+ (synopsis "Goroutine leak detector")
+ (description
+ "Go package to verify that there are no unexpected goroutines running at
+the end of a test.")
+ (license license:expat)))
+
(define-public go-honnef-co-go-tools
(package
(name "go-honnef-co-go-tools")
@@ -860,6 +1119,20 @@ thoroughly
(description "This package turns unkeyed struct literals (@code{T{1, 2,
3}}) into keyed ones (@code{T{A: 1, B: 2, C: 3}}) in Go.")))
+(define-public go-pprof
+ (package
+ (inherit go-github-com-google-pprof)
+ (name "go-pprof")
+ (arguments
+ (list
+ #:install-source? #f
+ #:go go-1.19
+ #:import-path "github.com/google/pprof"))
+ (description
+ (string-append (package-description go-github-com-google-pprof)
+ " This package provides an command line interface (CLI)
+tool."))))
+
(define-public go-staticcheck
(package
(inherit go-honnef-co-go-tools)