aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; 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 <http://www.gnu.org/licenses/>.

(define-module (test-composer)
  #:use-module (guix import composer)
  #:use-module (guix base32)
  #:use-module (gcrypt hash)
  #:use-module (guix tests http)
  #:use-module (guix grafts)
  #:use-module (srfi srfi-64)
  #:use-module (web client)
  #:use-module (ice-9 match))

;; Globally disable grafts because they can trigger early builds.
(%graft? #f)

(define test-json
  "{
  \"packages\": {
    \"foo/bar\": {
      \"0.1\": {
        \"name\": \"foo/bar\",
        \"description\": \"description\",
        \"keywords\": [\"testing\"],
        \"homepage\": \"http://example.com\",
        \"version\": \"0.1\",
        \"license\": [\"BSD-3-Clause\"],
        \"source\": {
          \"type\": \"url\",
          \"url\": \"http://example.com/Bar-0.1.tar.gz\"
        },
        \"require\": {},
        \"require-dev\": {\"phpunit/phpunit\": \"1.0.0\"}
      }
    }
  }
}")

(define test-source
  "foobar")

(test-begin "composer")

(test-assert "composer->guix-package"
  ;; Replace network resources with sample data.
  (with-http-server `((200 ,test-json)
                      (200 ,test-source))
    (parameterize ((%composer-base-url (%local-url))
                   (current-http-proxy (%local-url)))
      (match (composer->guix-package "foo/bar")
        (`(package
            (name "php-foo-bar")
            (version "0.1")
            (source (origin
                      (method url-fetch)
                      (uri "http://example.com/Bar-0.1.tar.gz")
                      (sha256
                       (base32
                        ,(? string? hash)))))
            (build-system composer-build-system)
            (native-inputs (list php-phpunit-phpunit))
            (synopsis "")
            (description "description")
            (home-page "http://example.com")
            (license license:bsd-3))
         (string=? (bytevector->nix-base32-string
                    (call-with-input-string test-source port-sha256))
                   hash))
        (x
         (pk 'fail x #f))))))

(test-end "composer")
ooltip'>Suggested by Maxim Cournoyer <maxim.cournoyer@gmail.com> and Simon Tournier <zimon.toutoune@gmail.com>. * guix/lint.scm (check-archival): Add 'local-file?' clause. Clarify message in case (package-source package) is not an origin. * tests/lint.scm ("archival: not an origin"): New test. Ludovic Courtès 2022-10-27gnu: python-setuptools: Move to python-build....* gnu/packages/python-xyz.scm (python-setuptools): Move… * gnu/packages/python-build.scm: …here. * gnu/packages/chemistry.scm, gnu/packages/messaging.scm, gnu/packages/sequoia.scm, tests/lint.scm: Adjust module imports accordingly. Co-authored-by: Marius Bakke <marius@gnu.org> Lars-Dominik Braun 2022-10-17lint: source: Add check for <svn-reference> over HTTP(S)....* guix/lint.scm (svn-reference-uri-with-userinfo): New procedure. (check-source): Add 'svn-reference?' clause. * tests/lint.scm ("source: svn-reference, HTTP 200") ("source: svn-reference, HTTP 404"): New tests. Ludovic Courtès 2022-03-29download: Use https for main KDE source....* guix/download.scm (%mirrors)[kde]: Use https URIs for main KDE mirrors. * tests/lint.scm ("mirror-url: kde suggestion"): New test. Efraim Flashner 2022-03-11lint: check-tests-true: Allow #:tests? #t for some build systems....emacs-build-system sets #:tests? #f by default, so the linter shouldn't warn if #:tests? #t is set for packages using emacs-build-system. Likewise for texlive-build-system. * guix/lint.scm (check-tests-true): Do not warn if the build system is emacs-build-system or texlive-build-system. * tests/lint.scm ("tests-true: #:tests? #t acceptable for emacs packages") ("tests-true: #:tests? #t acceptable for texlive packages"): New tests. Fixes: <https://issues.guix.gnu.org/50299> Reported-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Maxime Devos 2021-12-17lint: Adjust patch file length check....With the switch to "ustar" format in commit bdf5c16ac052af2ca9d5c3acc4acbc08fd9fdbea, the maximum file length has increased. * guix/lint.scm (check-patch-file-names): Adjust margin used to check for patch file lengths. Increase allowable patch file length appropriate to new tar format. Extend warning to explain that long files may break 'make dist'. * tests/lint.scm: Update tests accordingly. Vagrant Cascadian 2021-11-08Merge remote-tracking branch 'origin/master' into core-updates-frozenEfraim Flashner 2021-11-06tests: Avoid literal strings for invalid Texinfo markup....This is a followup to e171182a20962c4119e12439b92bbbfd59b1495e. * tests/lint.scm ("description: invalid Texinfo markup") ("synopsis: valid Texinfo markup"): Add call to 'identity' to avoid triggering a syntax error. Ludovic Courtès 2021-10-31Merge remote-tracking branch 'origin/master' into core-updates-frozenEfraim Flashner 2021-10-24lint: Add description check for common typos....Fixes: https://issues.guix.gnu.org/44675 * guix/lint.scm (check-description-typo): Add check for occurences of "This packages", "This modules", "allows to" and "permits to" in package descriptions. * tests/lint.scm: Add tests for "This packages" and "allows to". Vagrant Cascadian 2021-10-12Merge remote-tracking branch 'origin/master' into core-updates-frozen.Mathieu Othacehe 2021-10-02import: stackage: Use 'define-json-mapping'....* guix/import/stackage.scm (<stackage-lts>, <snapshot>) (<stackage-package>): New record types and JSON mappings. (lts-info-packages, stackage-package-name) (stackage-package-version): Remove. (lts-package-version): Rename 'pkgs-info' to 'packages'; assume 'packages' is a list of <stackage-package>. (stackage->guix-package): Use 'stackage-lts-packages' instead of 'lts-info-packages'. Rename 'packages-info' to 'packages'. (latest-lts-release): Likewise. (stackage-package?): Rename to... (stackage-lts-package?): ... this. Adjust to new API. (%stackage-updater)[pred]: Update accordingly. * tests/lint.scm ("haskell-stackage"): Add "snapshot" entry in JSON snippet. Ludovic Courtès