guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/04: gnu: tree-sitter-cli: Enable some tests and add node and dot.


From: guix-commits
Subject: 03/04: gnu: tree-sitter-cli: Enable some tests and add node and dot.
Date: Sun, 12 Feb 2023 02:43:28 -0500 (EST)

abcdw pushed a commit to branch master
in repository guix.

commit 5401b5822a91d407d7041aef6625e0fe6a57bbae
Author: Pierre Langlois <pierre.langlois@gmx.com>
AuthorDate: Tue Mar 29 20:13:11 2022 +0100

    gnu: tree-sitter-cli: Enable some tests and add node and dot.
    
    * gnu/packages/tree-sitter.scm (tree-sitter-cli)[inputs]: Add graphviz and
    node-lts.
    [arguments]<#:cargo-test-flags>: Skip tests that require downloading 
grammars.
    <#:phases>: Add 'patch-node and 'patch-dot phases.  Tweak install phase.
    
    Signed-off-by: Andrew Tropin <andrew@trop.in>
---
 gnu/packages/tree-sitter.scm | 52 +++++++++++++++++++++++++++++++++++---------
 1 file changed, 42 insertions(+), 10 deletions(-)

diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm
index 2e44339ca2..d70d579762 100644
--- a/gnu/packages/tree-sitter.scm
+++ b/gnu/packages/tree-sitter.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2022 Luis Henrique Gomes Higino <luishenriquegh2701@gmail.com>
-;;; Copyright © 2022 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2022, 2023 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2022 muradm <mail@muradm.net>
 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
 ;;; Copyright © 2023 Andrew Tropin <andrew@trop.in>
@@ -24,7 +24,9 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages crates-graphics)
   #:use-module (gnu packages crates-io)
+  #:use-module (gnu packages graphviz)
   #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages node)
   #:use-module (guix build-system cargo)
   #:use-module (guix build-system gnu)
   #:use-module (guix gexp)
@@ -63,8 +65,8 @@
     (synopsis "Incremental parsing system for programming tools")
     (description
      "Tree-sitter is a parser generator tool and an incremental parsing
-library.  It can build a concrete syntax tree for a source file and efficiently
-update the syntax tree as the source file is edited.
+library.  It can build a concrete syntax tree for a source file and
+efficiently update the syntax tree as the source file is edited.
 
 Tree-sitter aims to be:
 
@@ -80,7 +82,8 @@ This package includes the @code{libtree-sitter} runtime 
library.")
     (license license:expat)))
 
 (define-public tree-sitter-cli
-  (package (inherit tree-sitter)
+  (package
+    (inherit tree-sitter)
     (name "tree-sitter-cli")
     (source (origin
               (inherit (package-source tree-sitter))
@@ -96,13 +99,30 @@ This package includes the @code{libtree-sitter} runtime 
library.")
                               println!(\"cargo:rustc-link-lib=tree-sitter\");~@
                               }~%")))))))
     (build-system cargo-build-system)
-    (inputs (list tree-sitter))
+    (inputs
+     (list tree-sitter graphviz node-lts))
     (arguments
      (list
-      ;; Running test requires downloading fixtures, see the
-      ;; script/fetch-fixtures script, which fetches grammars.  Maybe it make
-      ;; sence to run tests in the grammar's packages?
-      #:tests? #f
+      #:cargo-test-flags
+      ''("--release" "--"
+         ;; Skip tests which rely on downloading grammar fixtures.  It is
+         ;; difficult to support such tests given upstream does not encode
+         ;; which version of the grammars are expected.
+         ;; Instead, we do run some tests for each grammar in the tree-sitter
+         ;; build-system, by running `tree-sitter test'.  This isn't as
+         ;; complete as running all tests from tree-sitter-cli, but it's a
+         ;; good compromise compared to maintaining two different sets of
+         ;; grammars (Guix packages vs test fixtures).
+         "--skip=tests::corpus_test"
+         "--skip=tests::highlight_test"
+         "--skip=tests::node_test"
+         "--skip=tests::parser_test"
+         "--skip=tests::pathological_test"
+         "--skip=tests::query_test"
+         "--skip=tests::tags_test"
+         "--skip=tests::test_highlight_test"
+         "--skip=tests::test_tags_test"
+         "--skip=tests::tree_test")
       ;; We're only packaging the CLI program so we do not need to install
       ;; sources.
       #:install-source? #f
@@ -132,8 +152,20 @@ This package includes the @code{libtree-sitter} runtime 
library.")
           (add-after 'unpack 'delete-cargo-lock
             (lambda _
               (delete-file "Cargo.lock")))
+          (add-after 'unpack 'patch-node
+            (lambda _
+              (substitute* "cli/src/generate/mod.rs"
+                (("Command::new\\(\"node\"\\)")
+                 (string-append
+                  "Command::new(\"" #$node-lts "/bin/node\")")))))
+          (add-after 'unpack 'patch-dot
+            (lambda _
+              (substitute* "cli/src/util.rs"
+                (("Command::new\\(\"dot\"\\)")
+                 (string-append
+                  "Command::new(\"" #$graphviz "/bin/dot\")")))))
           (replace 'install
-            (lambda* (#:key outputs #:allow-other-keys)
+            (lambda _
               (let ((bin (string-append #$output "/bin")))
                 (mkdir-p bin)
                 (install-file "target/release/tree-sitter" bin)))))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]