;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2021 François Joulaud ;;; Copyright © 2021 Sarah Morgensen ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . ;;; Summary ;; Tests for guix/import/go.scm (define-module (tests-import-go) #:use-module (guix base32) #:use-module (guix build-system go) #:use-module (guix import go) #:use-module (guix base32) #:use-module ((guix utils) #:select (call-with-temporary-directory)) #:use-module (guix tests) #:use-module (ice-9 match) #:use-module (srfi srfi-19) #:use-module (srfi srfi-64) #:use-module (web response)) (define go.mod-requirements (@@ (guix import go) go.mod-requirements)) (define parse-go.mod (@@ (guix import go) parse-go.mod)) (define fixture-go-mod-simple "module my/thing go 1.12 require other/thing v1.0.2 require new/thing/v2 v2.3.4 exclude old/thing v1.2.3 replace bad/thing v1.4.5 => good/thing v1.4.5 ") (define fixture-go-mod-with-block "module M require ( A v1 B v1.0.0 C v1.0.0 D v1.2.3 E dev ) exclude D v1.2.3 ") (define fixture-go-mod-complete "module M go 1.13 replace github.com/myname/myproject/myapi => ./api replace github.com/mymname/myproject/thissdk => ../sdk replace launchpad.net/gocheck => github.com/go-check/check v0.0.0-20140225173054-eb6ee6f84d0a require ( github.com/user/project v1.1.11 github.com/user/project/sub/directory v1.1.12 bitbucket.org/user/project v1.11.20 bitbucket.org/user/project/sub/directory v1.11.21 launchpad.net/project v1.1.13 launchpad.net/project/series v1.1.14 launchpad.net/project/series/sub/directory v1.1.15 launchpad.net/~user/project/branch v1.1.16 launchpad.net/~user/project/branch/sub/directory v1.1.17 hub.jazz.net/git/user/project v1.1.18 hub.jazz.net/git/user/project/sub/directory v1.1.19 k8s.io/kubernetes/subproject v1.1.101 one.example.com/abitrary/repo v1.1.111 two.example.com/abitrary/repo v0.0.2 \"quoted.example.com/abitrary/repo\" v0.0.2 ) replace two.example.com/abitrary/repo => github.com/corp/arbitrary-repo v0.0.2 replace ( golang.org/x/sys => golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // pinned to release-branch.go1.13 golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13 ) ") (define fixture-go-mod-unparsable "module my/thing go 1.12 // avoid feature X require other/thing v1.0.2 // Security issue: CVE-XXXXX exclude old/thing v1.2.3 new-directive another/thing yet-another/thing replace ( bad/thing v1.4.5 => good/thing v1.4.5 // Unparseable bad/thing [v1.4.5, v1.9.7] => good/thing v2.0.0 ) ") (define fixture-go-mod-retract "retract v0.9.1 retract ( v1.9.2 [v1.0.0, v1.7.9] ) ") (define fixture-go-mod-strings "require `example.com/\"some-repo\"` v1.9.3 require ( `example.com/\"another.repo\"` v1.0.0 \"example.com/special!repo\" v9.3.1 ) replace \"example.com/\\\"some-repo\\\"\" => `launchpad.net/some-repo` v1.9.3 replace ( \"example.com/\\\"another.repo\\\"\" => launchpad.net/another-repo v1.0.0 ) ") (define fixtures-go-check-test (let ((version "{\"Version\":\"v0.0.0-20201130134442-10cb98267c6c\",\"Time\":\"2020-11-30T13:44:42Z\"}") (go.info "{\"Version\":\"v0.0.0-20201130134442-10cb98267c6c\",\"Time\":\"2020-11-30T13:44:42Z\"}") (go.mod "module gopkg.in/check.v1 go 1.11 require github.com/kr/pretty v0.2.1 ") (go-get " GitHub - go-check/check: Rich testing for the Go language