;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2021 François Joulaud ;;; ;;; 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 (test-import-go) #:use-module (guix import go) #:use-module (guix base32) ;#:use-module (guix tests) #:use-module (ice-9 iconv) #:use-module (ice-9 match) #:use-module (srfi srfi-64)) (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 ) 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 ) ") (test-begin "import go") (test-equal "go-path-escape" "github.com/!azure/!avere" ((@@ (guix import go) go-path-escape) "github.com/Azure/Avere")) ;; We define a function for all similar tests with different go.mod files (define (testing-parse-mod name expected input) (define (inf? p1 p2) (string