import: cabal: Allow curly brackets in more positions.

* guix/import/cabal.scm (is-layout-property): Do not expect end of line.
(lex-layout-property): Check for newline.
(lex-property): Stop reading on closing curly bracket.
* tests/hackage.scm (test-read-cabal-2): New variable.
("read-cabal test: if brackets on the same line"): New test.
This commit is contained in:
Lars-Dominik Braun 2022-04-30 15:39:34 +02:00
parent 2c5d18e421
commit 0972feaff1
No known key found for this signature in database
GPG key ID: F663943E08D8092A
2 changed files with 24 additions and 3 deletions

View file

@ -156,6 +156,12 @@ library
Exposed-Modules:
Test.QuickCheck.Exception")
(define test-read-cabal-2
"name: test-me
common defaults
if os(foobar) { cc-options: -DBARBAZ }
") ; Intentional newline.
(test-begin "hackage")
(define-syntax-rule (define-package-matcher name pattern)
@ -471,6 +477,16 @@ executable cabal
#t)
(x (pk 'fail x #f))))
(test-assert "read-cabal test: if brackets on the same line"
(match (call-with-input-string test-read-cabal-2 read-cabal)
((("name" ("test-me"))
('section 'common "defaults"
(('if ('os "foobar")
(("cc-options" ("-DBARBAZ ")))
()))))
#t)
(x (pk 'fail x #f))))
(define test-cabal-import
"name: foo
version: 1.0.0