summary refs log tree commit diff
path: root/tests/hackage.scm
diff options
context:
space:
mode:
authorRobert Vollmert <rob@vllmrt.net>2019-06-02 00:27:50 +0200
committerLudovic Courtès <ludo@gnu.org>2019-06-02 22:16:05 +0200
commit959c9d159da2c53b87ae0af1421aecac98b20f46 (patch)
tree1144e306fac77111b4607f757cd3fa24f182144e /tests/hackage.scm
parent64d31813577b7471f819652e3ec81abb285bb77c (diff)
downloadguix-959c9d159da2c53b87ae0af1421aecac98b20f46.tar.gz
import: hackage: Parse braced properties.
This adds partial support for Cabal properties that use curly
braces instead of the layout rule.  See for example
https://hackage.haskell.org/package/cassava/

* guix/import/cabal.scm (read-braced-value): New procedure.
(is-property): Remove.
(is-layout-property, is-braced-property): New variables.
(lex-property): Rename to...
(lex-layout-property): ... this.
(lex-braced-property, lex-property): New procedures.
(lex-token): Add call to 'lex-property'.
* guix/tests/hackage.scm: Test braced description import.
* tests/hackage.scm (test-cabal-multiline-desc): Rename to...
(test-cabal-multiline-layout): ... this.
("hackage->guix-package test multiline desc"): Rename to...
("hackage->guix-package test multiline desc (layout)"): ... this.
(test-cabal-multiline-braced): New variable.
("hackage->guix-package test multiline desc (braced)"): New test.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'tests/hackage.scm')
-rw-r--r--tests/hackage.scm25
1 files changed, 22 insertions, 3 deletions
diff --git a/tests/hackage.scm b/tests/hackage.scm
index 2f45194fab..38a5825af7 100644
--- a/tests/hackage.scm
+++ b/tests/hackage.scm
@@ -237,7 +237,7 @@ library
   (eval-test-with-cabal test-cabal-6 match-ghc-foo-6))
 
 ;; Check multi-line layouted description
-(define test-cabal-multiline-desc
+(define test-cabal-multiline-layout
   "name: foo
 version: 1.0.0
 homepage: http://test.org
@@ -251,9 +251,28 @@ executable cabal
     mtl        >= 2.0      && < 3
 ")
 
-(test-assert "hackage->guix-package test multiline desc"
-  (eval-test-with-cabal test-cabal-multiline-desc match-ghc-foo))
+(test-assert "hackage->guix-package test multiline desc (layout)"
+  (eval-test-with-cabal test-cabal-multiline-layout match-ghc-foo))
 
+;; Check multi-line braced description
+(define test-cabal-multiline-braced
+  "name: foo
+version: 1.0.0
+homepage: http://test.org
+synopsis: synopsis
+description: {
+first line
+second line
+}
+license: BSD3
+executable cabal
+  build-depends:
+    HTTP       >= 4000.2.5 && < 4000.3,
+    mtl        >= 2.0      && < 3
+")
+
+(test-assert "hackage->guix-package test multiline desc (braced)"
+  (eval-test-with-cabal test-cabal-multiline-braced match-ghc-foo))
 
 (test-assert "read-cabal test 1"
   (match (call-with-input-string test-read-cabal-1 read-cabal)