guibou / PyF

Haskell QuasiQuoter for String Formatting

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[MacOS] test failures

coderfromhere opened this issue · comments

Hi, I'm getting the following test suite error on my MacOS, Nix build from this checkout, GHC 9.2.2

building '/nix/store/ld2v9hqbg1s7q879ghzw9gbl5xgr9il9-PyF-0.10.2.0.drv'...
setupCompilerEnvironmentPhase
Build with /nix/store/48pqkyk38pnhh59r3i5kpf6zbr3alyxg-ghc-9.2.2.
unpacking sources
unpacking source archive /nix/store/ga1lvaas3yrp961yyvfs0535rv6ddp7p-pyF-922-fix
source root is pyF-922-fix
patching sources
compileBuildDriverPhase
setupCompileFlags: -package-db=/private/tmp/nix-build-PyF-0.10.2.0.drv-0/setup-package.conf.d -j8 -threaded -rtsopts
[1 of 1] Compiling Main             ( Setup.hs, /private/tmp/nix-build-PyF-0.10.2.0.drv-0/Main.o )
Linking Setup ...
configuring
configureFlags: --verbose --prefix=/nix/store/xa3c2sxplpc97zv963xzayxzwka9cnaz-PyF-0.10.2.0 --libdir=$prefix/lib/$compiler --libsubdir=$abi/$libname --docdir=/nix/store/zyb4yv5x68ywxhxvb4nyw3qizh9x4bv0-PyF-0.10.2.0-doc/share/doc/PyF-0.10.2.0 --with-gcc=clang --package-db=/private/tmp/nix-build-PyF-0.10.2.0.drv-0/package.conf.d --ghc-options=-j8 --disable-split-objs --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --ghc-options=-haddock --extra-lib-dirs=/nix/store/qy1a2f9m58nnzvamp5ccgs2nac93ls8c-ncurses-6.3/lib --extra-lib-dirs=/nix/store/ifmi19kb21m5d9xd20mvs9ijn5h4ddm8-libffi-3.4.2/lib --extra-lib-dirs=/nix/store/4z9qpfjx3cjh9fz2vn7257g0viy16p90-gmp-with-cxx-6.2.1/lib --extra-include-dirs=/nix/store/fr99y7zjmmgixn3nylwzqcxnlglvfpcp-libiconv-50/include --extra-lib-dirs=/nix/store/fr99y7zjmmgixn3nylwzqcxnlglvfpcp-libiconv-50/lib --extra-include-dirs=/nix/store/6j8qja90dlvylirrcy0zidl0272zwp1y-libcxx-11.1.0-dev/include --extra-lib-dirs=/nix/store/2588d9hkbvqids8vbmcbq7xngpj26r2b-libcxx-11.1.0/lib --extra-include-dirs=/nix/store/0wqmicjzi3jbhapw39xwxbj9fgyl9mqx-libcxxabi-11.1.0-dev/include --extra-lib-dirs=/nix/store/f5hl8liigwf0qji8jgdsid9chr4cjs5j-libcxxabi-11.1.0/lib --extra-include-dirs=/nix/store/p42c0gz6xjl72b8r6p9pn2l04aacbna2-compiler-rt-libc-11.1.0-dev/include --extra-lib-dirs=/nix/store/b7fl0wk0dd739imdb5wgb2rssx750pzi-compiler-rt-libc-11.1.0/lib --extra-lib-dirs=/nix/store/48pqkyk38pnhh59r3i5kpf6zbr3alyxg-ghc-9.2.2/lib --extra-framework-dirs=/nix/store/w0j1smy35j2il8grml3832lbaf6rksis-swift-corefoundation-unstable-2018-09-14/Library/Frameworks
Using Parsec parser
Configuring PyF-0.10.2.0...
Flags chosen: python_test=False
Dependency base >=4.12 && <4.17: using base-4.16.1.0
Dependency bytestring >=0.10.8 && <0.12: using bytestring-0.11.3.0
Dependency ghc >=8.6.1 && <9.4: using ghc-9.2.2
Dependency ghc-boot >=8.6.1 && <9.4: using ghc-boot-9.2.2
Dependency mtl >=2.2.2 && <2.3: using mtl-2.2.2
Dependency parsec >=3.1.13 && <3.2: using parsec-3.1.15.0
Dependency template-haskell >=2.14.0 && <2.19: using template-haskell-2.18.0.0
Dependency text >=1.2.3 && <1.3: using text-1.2.5.0
Dependency time >=1.8.0 && <1.12: using time-1.11.1.1
Dependency PyF: using PyF-0.10.2.0
Dependency base: using base-4.16.1.0
Dependency bytestring: using bytestring-0.11.3.0
Dependency hspec: using hspec-2.8.5
Dependency template-haskell: using template-haskell-2.18.0.0
Dependency text: using text-1.2.5.0
Dependency time: using time-1.11.1.1
Dependency PyF: using PyF-0.10.2.0
Dependency base: using base-4.16.1.0
Dependency bytestring: using bytestring-0.11.3.0
Dependency hspec: using hspec-2.8.5
Dependency text: using text-1.2.5.0
Dependency HUnit: using HUnit-1.6.2.0
Dependency base: using base-4.16.1.0
Dependency deepseq: using deepseq-1.4.6.1
Dependency filepath: using filepath-1.4.2.2
Dependency hspec: using hspec-2.8.5
Dependency process: using process-1.6.13.2
Dependency temporary: using temporary-1.3
Dependency text: using text-1.2.5.0
Source component graph:
    component test:pyf-failure
    component lib
    component test:pyf-overloaded dependency lib
    component test:pyf-test dependency lib
Configured component graph:
    component PyF-0.10.2.0-KLLn1XVNPq6F1t1z6tGDS4-pyf-failure
        include HUnit-1.6.2.0-DqTf3Y8NJwI5tE9sguGi21
        include base-4.16.1.0
        include deepseq-1.4.6.1
        include filepath-1.4.2.2
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include process-1.6.13.2
        include temporary-1.3-2ZZr6XnEZYU2PpueEFUo4Y
        include text-1.2.5.0
    component PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include ghc-9.2.2
        include ghc-boot-9.2.2
        include mtl-2.2.2
        include parsec-3.1.15.0
        include template-haskell-2.18.0.0
        include text-1.2.5.0
        include time-1.11.1.1
    component PyF-0.10.2.0-FihrxfdpdOXEX5m5U0fm2q-pyf-overloaded
        include PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include text-1.2.5.0
    component PyF-0.10.2.0-Aq2q3wODdlSElhGqLTmPL9-pyf-test
        include PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include template-haskell-2.18.0.0
        include text-1.2.5.0
        include time-1.11.1.1
Linked component graph:
    unit PyF-0.10.2.0-KLLn1XVNPq6F1t1z6tGDS4-pyf-failure
        include HUnit-1.6.2.0-DqTf3Y8NJwI5tE9sguGi21
        include base-4.16.1.0
        include deepseq-1.4.6.1
        include filepath-1.4.2.2
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include process-1.6.13.2
        include temporary-1.3-2ZZr6XnEZYU2PpueEFUo4Y
        include text-1.2.5.0
    unit PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include ghc-9.2.2
        include ghc-boot-9.2.2
        include mtl-2.2.2
        include parsec-3.1.15.0
        include template-haskell-2.18.0.0
        include text-1.2.5.0
        include time-1.11.1.1
        PyF=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF,PyF.Class=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Class,PyF.Formatters=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Formatters,PyF.Internal.Meta=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Internal.Meta,PyF.Internal.Parser=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Internal.Parser,PyF.Internal.ParserEx=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Internal.ParserEx,PyF.Internal.PythonSyntax=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Internal.PythonSyntax,PyF.Internal.QQ=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Internal.QQ
    unit PyF-0.10.2.0-FihrxfdpdOXEX5m5U0fm2q-pyf-overloaded
        include PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include text-1.2.5.0
    unit PyF-0.10.2.0-Aq2q3wODdlSElhGqLTmPL9-pyf-test
        include PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include template-haskell-2.18.0.0
        include text-1.2.5.0
        include time-1.11.1.1
Ready component graph:
    definite PyF-0.10.2.0-KLLn1XVNPq6F1t1z6tGDS4-pyf-failure
        depends HUnit-1.6.2.0-DqTf3Y8NJwI5tE9sguGi21
        depends base-4.16.1.0
        depends deepseq-1.4.6.1
        depends filepath-1.4.2.2
        depends hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        depends process-1.6.13.2
        depends temporary-1.3-2ZZr6XnEZYU2PpueEFUo4Y
        depends text-1.2.5.0
    definite PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        depends base-4.16.1.0
        depends bytestring-0.11.3.0
        depends ghc-9.2.2
        depends ghc-boot-9.2.2
        depends mtl-2.2.2
        depends parsec-3.1.15.0
        depends template-haskell-2.18.0.0
        depends text-1.2.5.0
        depends time-1.11.1.1
    definite PyF-0.10.2.0-FihrxfdpdOXEX5m5U0fm2q-pyf-overloaded
        depends PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        depends base-4.16.1.0
        depends bytestring-0.11.3.0
        depends hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        depends text-1.2.5.0
    definite PyF-0.10.2.0-Aq2q3wODdlSElhGqLTmPL9-pyf-test
        depends PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        depends base-4.16.1.0
        depends bytestring-0.11.3.0
        depends hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        depends template-haskell-2.18.0.0
        depends text-1.2.5.0
        depends time-1.11.1.1
Using Cabal-3.6.3.0 compiled by ghc-9.2
Using compiler: ghc-9.2.2
Using install prefix: /nix/store/xa3c2sxplpc97zv963xzayxzwka9cnaz-PyF-0.10.2.0
Executables installed in:
/nix/store/xa3c2sxplpc97zv963xzayxzwka9cnaz-PyF-0.10.2.0/bin
Libraries installed in:
/nix/store/xa3c2sxplpc97zv963xzayxzwka9cnaz-PyF-0.10.2.0/lib/ghc-9.2.2/x86_64-osx-ghc-9.2.2/PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
Dynamic Libraries installed in:
/nix/store/xa3c2sxplpc97zv963xzayxzwka9cnaz-PyF-0.10.2.0/lib/ghc-9.2.2/x86_64-osx-ghc-9.2.2
Private executables installed in:
/nix/store/xa3c2sxplpc97zv963xzayxzwka9cnaz-PyF-0.10.2.0/libexec/x86_64-osx-ghc-9.2.2/PyF-0.10.2.0
Data files installed in:
/nix/store/xa3c2sxplpc97zv963xzayxzwka9cnaz-PyF-0.10.2.0/share/x86_64-osx-ghc-9.2.2/PyF-0.10.2.0
Documentation installed in:
/nix/store/zyb4yv5x68ywxhxvb4nyw3qizh9x4bv0-PyF-0.10.2.0-doc/share/doc/PyF-0.10.2.0
Configuration files installed in:
/nix/store/xa3c2sxplpc97zv963xzayxzwka9cnaz-PyF-0.10.2.0/etc
No alex found
Using ar found on system at:
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ar
No c2hs found
No cpphs found
No doctest found
Using gcc version 11.1.0 given by user at:
/nix/store/jnm93vsz7i25zby30d4z7wwrzqbsakdj-clang-wrapper-11.1.0/bin/clang
Using ghc version 9.2.2 found on system at:
/nix/store/48pqkyk38pnhh59r3i5kpf6zbr3alyxg-ghc-9.2.2/bin/ghc
Using ghc-pkg version 9.2.2 found on system at:
/nix/store/48pqkyk38pnhh59r3i5kpf6zbr3alyxg-ghc-9.2.2/bin/ghc-pkg-9.2.2
No ghcjs found
No ghcjs-pkg found
No greencard found
Using haddock version 2.26.0 found on system at:
/nix/store/48pqkyk38pnhh59r3i5kpf6zbr3alyxg-ghc-9.2.2/bin/haddock-ghc-9.2.2
No happy found
Using haskell-suite found on system at: haskell-suite-dummy-location
Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
No hmake found
Using hpc version 0.68 found on system at:
/nix/store/48pqkyk38pnhh59r3i5kpf6zbr3alyxg-ghc-9.2.2/bin/hpc
Using hsc2hs version 0.68.8 found on system at:
/nix/store/48pqkyk38pnhh59r3i5kpf6zbr3alyxg-ghc-9.2.2/bin/hsc2hs
Using hscolour version 1.24 found on system at:
/nix/store/li60s2yc4h3ny8snalwjk3pf0sgpfdnv-hscolour-1.24.4/bin/HsColour
No jhc found
Using ld found on system at:
/nix/store/5b9jn0wcnkbvjhkgmw5bmd4zgg97j6v8-cctools-binutils-darwin-wrapper-949.0.1/bin/ld
No pkg-config found
Using runghc version 9.2.2 found on system at:
/nix/store/48pqkyk38pnhh59r3i5kpf6zbr3alyxg-ghc-9.2.2/bin/runghc-9.2.2
Using strip found on system at:
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/strip
Using tar found on system at:
/nix/store/rdv54a5m4392psvpb4dmjl0bzvm5kagb-gnutar-1.34/bin/tar
No uhc found
building
Preprocessing test suite 'pyf-failure' for PyF-0.10.2.0..
Building test suite 'pyf-failure' for PyF-0.10.2.0..
[1 of 1] Compiling Main             ( test/SpecFail.hs, dist/build/pyf-failure/pyf-failure-tmp/Main.o )
Linking dist/build/pyf-failure/pyf-failure ...
Preprocessing library for PyF-0.10.2.0..
Building library for PyF-0.10.2.0..

<no location info>: warning: [-Wunused-packages]
    The following packages were specified via -package or -package-id flags,
    but were not needed for compilation:
      - ghc-boot-9.2.2
[1 of 8] Compiling PyF.Formatters   ( src/PyF/Formatters.hs, dist/build/PyF/Formatters.o, dist/build/PyF/Formatters.dyn_o )

src/PyF/Formatters.hs:174:9: warning: [-Wincomplete-uni-patterns]
    Pattern match(es) are non-exhaustive
    In a pattern binding:
        Patterns of type ‘Repr’ not matched:
            IntegralRepr _ _
            Infinite _ _
            NaN _
            FractionalRepr Negative [] [] []
            ...
    |
174 |     let (FractionalRepr Positive aa bb cc) = reprFractional fmt precision (abs f)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/PyF/Formatters.hs:188:22: warning: [-Wincomplete-uni-patterns]
    Pattern match(es) are non-exhaustive
    In a pattern binding:
        Patterns of type ‘(String, String, String)’ not matched:
            ([], [], (_:_))
            ([], (_:_), (_:_))
            ((_:_), [], (_:_))
            ((_:_), (_:_), (_:_))
    |
188 |       Percent -> let (a, b, "") = splitFractional (Numeric.showFFloatAlt precision (iAbs * 100) "") in (a, b, "%")
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[2 of 8] Compiling PyF.Class        ( src/PyF/Class.hs, dist/build/PyF/Class.o, dist/build/PyF/Class.dyn_o )
[3 of 8] Compiling PyF.Internal.ParserEx ( src/PyF/Internal/ParserEx.hs, dist/build/PyF/Internal/ParserEx.o, dist/build/PyF/Internal/ParserEx.dyn_o )
[4 of 8] Compiling PyF.Internal.Parser ( src/PyF/Internal/Parser.hs, dist/build/PyF/Internal/Parser.o, dist/build/PyF/Internal/Parser.dyn_o )
[5 of 8] Compiling PyF.Internal.Meta ( src/PyF/Internal/Meta.hs, dist/build/PyF/Internal/Meta.o, dist/build/PyF/Internal/Meta.dyn_o )

src/PyF/Internal/Meta.hs:67:1: warning: [-Wmissing-signatures]
    Top-level binding with no type signature:
      fl_value :: GHC.Types.SourceText.FractionalLit -> Rational
   |
67 | fl_value = rationalFromFractionalLit
   | ^^^^^^^^

src/PyF/Internal/Meta.hs:107:9: warning: [-Wunused-matches]
    Defined but not used: ‘m’
    |
107 |   (Orig m o) -> error "orig"
    |         ^

src/PyF/Internal/Meta.hs:107:11: warning: [-Wunused-matches]
    Defined but not used: ‘o’
    |
107 |   (Orig m o) -> error "orig"
    |           ^
[6 of 8] Compiling PyF.Internal.PythonSyntax ( src/PyF/Internal/PythonSyntax.hs, dist/build/PyF/Internal/PythonSyntax.o, dist/build/PyF/Internal/PythonSyntax.dyn_o )
[7 of 8] Compiling PyF.Internal.QQ  ( src/PyF/Internal/QQ.hs, dist/build/PyF/Internal/QQ.o, dist/build/PyF/Internal/QQ.dyn_o )
[8 of 8] Compiling PyF              ( src/PyF.hs, dist/build/PyF.o, dist/build/PyF.dyn_o )

<no location info>: warning: [-Wunused-packages]
    The following packages were specified via -package or -package-id flags,
    but were not needed for compilation:
      - ghc-boot-9.2.2
[1 of 8] Compiling PyF.Formatters   ( src/PyF/Formatters.hs, dist/build/PyF/Formatters.p_o )

src/PyF/Formatters.hs:174:9: warning: [-Wincomplete-uni-patterns]
    Pattern match(es) are non-exhaustive
    In a pattern binding:
        Patterns of type ‘Repr’ not matched:
            IntegralRepr _ _
            Infinite _ _
            NaN _
            FractionalRepr Negative [] [] []
            ...
    |
174 |     let (FractionalRepr Positive aa bb cc) = reprFractional fmt precision (abs f)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/PyF/Formatters.hs:188:22: warning: [-Wincomplete-uni-patterns]
    Pattern match(es) are non-exhaustive
    In a pattern binding:
        Patterns of type ‘(String, String, String)’ not matched:
            ([], [], (_:_))
            ([], (_:_), (_:_))
            ((_:_), [], (_:_))
            ((_:_), (_:_), (_:_))
    |
188 |       Percent -> let (a, b, "") = splitFractional (Numeric.showFFloatAlt precision (iAbs * 100) "") in (a, b, "%")
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ld: warning: /nix/store/fr99y7zjmmgixn3nylwzqcxnlglvfpcp-libiconv-50/lib/libiconv.dylib, ignoring unexpected dylib file
[2 of 8] Compiling PyF.Class        ( src/PyF/Class.hs, dist/build/PyF/Class.p_o )
ld: warning: /nix/store/fr99y7zjmmgixn3nylwzqcxnlglvfpcp-libiconv-50/lib/libiconv.dylib, ignoring unexpected dylib file
[3 of 8] Compiling PyF.Internal.ParserEx ( src/PyF/Internal/ParserEx.hs, dist/build/PyF/Internal/ParserEx.p_o )
ld: warning: /nix/store/fr99y7zjmmgixn3nylwzqcxnlglvfpcp-libiconv-50/lib/libiconv.dylib, ignoring unexpected dylib file
[4 of 8] Compiling PyF.Internal.Parser ( src/PyF/Internal/Parser.hs, dist/build/PyF/Internal/Parser.p_o )
ld: warning: /nix/store/fr99y7zjmmgixn3nylwzqcxnlglvfpcp-libiconv-50/lib/libiconv.dylib, ignoring unexpected dylib file
[5 of 8] Compiling PyF.Internal.Meta ( src/PyF/Internal/Meta.hs, dist/build/PyF/Internal/Meta.p_o )

src/PyF/Internal/Meta.hs:67:1: warning: [-Wmissing-signatures]
    Top-level binding with no type signature:
      fl_value :: GHC.Types.SourceText.FractionalLit -> Rational
   |
67 | fl_value = rationalFromFractionalLit
   | ^^^^^^^^

src/PyF/Internal/Meta.hs:107:9: warning: [-Wunused-matches]
    Defined but not used: ‘m’
    |
107 |   (Orig m o) -> error "orig"
    |         ^

src/PyF/Internal/Meta.hs:107:11: warning: [-Wunused-matches]
    Defined but not used: ‘o’
    |
107 |   (Orig m o) -> error "orig"
    |           ^
ld: warning: /nix/store/fr99y7zjmmgixn3nylwzqcxnlglvfpcp-libiconv-50/lib/libiconv.dylib, ignoring unexpected dylib file
[6 of 8] Compiling PyF.Internal.PythonSyntax ( src/PyF/Internal/PythonSyntax.hs, dist/build/PyF/Internal/PythonSyntax.p_o )
ld: warning: /nix/store/fr99y7zjmmgixn3nylwzqcxnlglvfpcp-libiconv-50/lib/libiconv.dylib, ignoring unexpected dylib file
[7 of 8] Compiling PyF.Internal.QQ  ( src/PyF/Internal/QQ.hs, dist/build/PyF/Internal/QQ.p_o )
ld: warning: /nix/store/fr99y7zjmmgixn3nylwzqcxnlglvfpcp-libiconv-50/lib/libiconv.dylib, ignoring unexpected dylib file
[8 of 8] Compiling PyF              ( src/PyF.hs, dist/build/PyF.p_o )
ld: warning: /nix/store/fr99y7zjmmgixn3nylwzqcxnlglvfpcp-libiconv-50/lib/libiconv.dylib, ignoring unexpected dylib file
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(longlong.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(Disassembler.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(LdvProfile.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(OldARMAtomic.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(ProfilerReport.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(ProfilerReportJson.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(Profiling.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(RetainerProfile.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(RetainerSet.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(RtsDllMain.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(SpinLock.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(Trace.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(TraverseHeap.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(TraverseHeapTest.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(Evac_thr.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(Sanity.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(Scav_thr.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(Elf.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(PEi386.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(elf_got.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(elf_plt.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(elf_plt_aarch64.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(elf_plt_arm.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(elf_reloc.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(elf_reloc_aarch64.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(elf_tlsgd.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(elf_util.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(plt.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(plt_aarch64.o) has no symbols
/nix/store/fjd0p8rk93db76l7wnk2jxh32x9yadfw-cctools-binutils-darwin-949.0.1/bin/ranlib: file: dist/build/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.a(StgCRunAsm.o) has no symbols
Preprocessing test suite 'pyf-overloaded' for PyF-0.10.2.0..
Building test suite 'pyf-overloaded' for PyF-0.10.2.0..
[1 of 1] Compiling Main             ( test/SpecOverloaded.hs, dist/build/pyf-overloaded/pyf-overloaded-tmp/Main.o, dist/build/pyf-overloaded/pyf-overloaded-tmp/Main.dyn_o )
Linking dist/build/pyf-overloaded/pyf-overloaded ...
Preprocessing test suite 'pyf-test' for PyF-0.10.2.0..
Building test suite 'pyf-test' for PyF-0.10.2.0..
[1 of 3] Compiling SpecCustomDelimiters ( test/SpecCustomDelimiters.hs, dist/build/pyf-test/pyf-test-tmp/SpecCustomDelimiters.o, dist/build/pyf-test/pyf-test-tmp/SpecCustomDelimiters.dyn_o )
[2 of 3] Compiling SpecUtils        ( test/SpecUtils.hs, dist/build/pyf-test/pyf-test-tmp/SpecUtils.o, dist/build/pyf-test/pyf-test-tmp/SpecUtils.dyn_o )
[3 of 3] Compiling Main             ( test/Spec.hs, dist/build/pyf-test/pyf-test-tmp/Main.o, dist/build/pyf-test/pyf-test-tmp/Main.dyn_o )
Linking dist/build/pyf-test/pyf-test ...
buildPhase completed in 32 seconds
running tests
Running 3 test suites...
Test suite pyf-failure: RUNNING...

error reporting
  string
    integral / fractional qualifiers
      "{hello:f}"
      "{hello:d}"
      "{hello:e}"
      "{hello:b}"
4,6c4,6
<     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
<       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
<       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
---
>     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
>       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
>       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
8c8
< 7 | main = putStrLn [fmt|{hello:e}|]
---
> 7 | main = putStrLn [fmt|{hello:E}|]

      "{hello:E}" FAILED [1]
4,6c4,6
<     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
<       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
<       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
---
>     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
>       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
>       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
8c8
< 7 | main = putStrLn [fmt|{hello:g}|]
---
> 7 | main = putStrLn [fmt|{hello:G}|]

      "{hello:G}" FAILED [2]
4,6c4,6
<     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
<       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
<       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
---
>     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
>       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
>       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
8c8
< 7 | main = putStrLn [fmt|{hello:G}|]
---
> 7 | main = putStrLn [fmt|{hello:g}|]

      "{hello:g}" FAILED [3]
      "{hello:%}"
      "{hello:x}"
4,6c4,6
<     • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)’
<       In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)
<       In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)
---
>     • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)’
>       In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)
>       In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)
8c8
< 7 | main = putStrLn [fmt|{hello:x}|]
---
> 7 | main = putStrLn [fmt|{hello:X}|]

      "{hello:X}" FAILED [4]
      "{hello:o}"
    padding center
      "{hello:=100s}"
      "{hello:=100}"
    grouping
      "{hello:_s}"
      "{hello:,s}"
    sign
      "{hello:+s}"
      "{hello: s}"
      "{hello:-s}"
  number with precision
    "{truncate number:.3d}"
    "{truncate number:.3o}"
    "{truncate number:.3b}"
    "{truncate number:.3x}"
  floats
    "{number:o}"
    "{number:b}"
    "{number:x}"
4,6c4,6
<     • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)’
<       In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)
<       In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)
---
>     • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)’
>       In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)
>       In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)
8c8
< 7 | main = putStrLn [fmt|{number:x}|]
---
> 7 | main = putStrLn [fmt|{number:X}|]

    "{number:X}" FAILED [5]
    "{number:d}"
  not specified
    "{truncate number:.3}"
      # PENDING: No reason given
    "{hello:#}"
      # PENDING: No reason given
    "{hello:+}"
      # PENDING: No reason given
    "{hello: }"
      # PENDING: No reason given
    "{hello:-}"
      # PENDING: No reason given
    "{hello:_}"
      # PENDING: No reason given
    "{hello:,}"
      # PENDING: No reason given
  multiples lines
    "hello\n\n\n{pi:l}"
  on haskell expression parsing
    single line
      "{1 + - / lalalal}"
    empty expression
      "{}"
    sub expression
      simple failure
        "{pi:.{/}}"
      empty failure
        "{pi:.{}}"
    multiples lines
      "hello\n    {\nlet a = 5\n    b = 10\nin 1 + - / lalalal}"
  non-doubled delimiters
    "hello } world"
    "hello { world"
  lexical errors
    single line
      "foo\\Pbar"
    multiple line
      "foo\nbli\\Pbar"
  Wrong type
    "{True}"
    "{True:f}"
    "{True:d}"

Failures:

  test/SpecFail.hs:135:9: 
  1) error reporting, string, integral / fractional qualifiers, "{hello:E}"
       4,6c4,6
       <     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
       <       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       <       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Exponent) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       ---
       >     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
       >       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       >       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Exponent)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       8c8
       < 7 | main = putStrLn [fmt|{hello:e}|]
       ---
       > 7 | main = putStrLn [fmt|{hello:E}|]

  To rerun use: --match "/error reporting/string/integral / fractional qualifiers/\"{hello:E}\"/"

  test/SpecFail.hs:136:9: 
  2) error reporting, string, integral / fractional qualifiers, "{hello:G}"
       4,6c4,6
       <     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
       <       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       <       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       ---
       >     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
       >       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       >       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       8c8
       < 7 | main = putStrLn [fmt|{hello:g}|]
       ---
       > 7 | main = putStrLn [fmt|{hello:G}|]

  To rerun use: --match "/error reporting/string/integral / fractional qualifiers/\"{hello:G}\"/"

  test/SpecFail.hs:137:9: 
  3) error reporting, string, integral / fractional qualifiers, "{hello:g}"
       4,6c4,6
       <     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
       <       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       <       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional (PyF.Formatters.Upper PyF.Formatters.Generic)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       ---
       >     • In the first argument of ‘putStrLn’, namely ‘((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)’
       >       In the expression: putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       >       In an equation for ‘main’: main = putStrLn ((((((PyF.Internal.QQ.formatAnyFractional PyF.Formatters.Generic) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) (Just 6 :: Maybe Int)) hello)
       8c8
       < 7 | main = putStrLn [fmt|{hello:G}|]
       ---
       > 7 | main = putStrLn [fmt|{hello:g}|]

  To rerun use: --match "/error reporting/string/integral / fractional qualifiers/\"{hello:g}\"/"

  test/SpecFail.hs:140:9: 
  4) error reporting, string, integral / fractional qualifiers, "{hello:X}"
       4,6c4,6
       <     • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)’
       <       In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)
       <       In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)
       ---
       >     • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)’
       >       In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)
       >       In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) hello)
       8c8
       < 7 | main = putStrLn [fmt|{hello:x}|]
       ---
       > 7 | main = putStrLn [fmt|{hello:X}|]

  To rerun use: --match "/error reporting/string/integral / fractional qualifiers/\"{hello:X}\"/"

  test/SpecFail.hs:161:7: 
  5) error reporting, floats, "{number:X}"
       4,6c4,6
       <     • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)’
       <       In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)
       <       In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral PyF.Formatters.Hexa) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)
       ---
       >     • In the first argument of ‘putStrLn’, namely ‘(((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)’
       >       In the expression: putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)
       >       In an equation for ‘main’: main = putStrLn (((((PyF.Internal.QQ.formatAnyIntegral (PyF.Formatters.Upper PyF.Formatters.Hexa)) PyF.Formatters.Minus) (Nothing :: Maybe (Int, PyF.Formatters.AnyAlign, Char))) Nothing) number)
       8c8
       < 7 | main = putStrLn [fmt|{number:x}|]
       ---
       > 7 | main = putStrLn [fmt|{number:X}|]

  To rerun use: --match "/error reporting/floats/\"{number:X}\"/"

Randomized with seed 2013011456

Finished in 50.0188 seconds
47 examples, 5 failures, 7 pending

Test suite pyf-failure: FAIL
Test suite logged to: dist/test/PyF-0.10.2.0-pyf-failure.log
Test suite pyf-overloaded: RUNNING...
Test suite pyf-overloaded: PASS
Test suite logged to: dist/test/PyF-0.10.2.0-pyf-overloaded.log
Test suite pyf-test: RUNNING...
Test suite pyf-test: PASS
Test suite logged to: dist/test/PyF-0.10.2.0-pyf-test.log
2 of 3 test suites (2 of 3 test cases) passed.
error: builder for '/nix/store/ld2v9hqbg1s7q879ghzw9gbl5xgr9il9-PyF-0.10.2.0.drv' failed with exit code 1

That's weird, Thank you for the report, I'll have a look.

I cannot reproduce here, some commit 49b4be0, I'm using nix build .#pyf_92.

You said you are using GHC 9.2.2, but the environment for .#pyf_92 provides GHC 9.2.1. Did you do some changes on the setup?

I'm super surprised, and a bit afraid, because all the error have the same pattern:

  3) error reporting, string, integral / fractional qualifiers, "{hello:g}"
       4,6c4,6
       <     An expression with PyF.Formatters.Upper

       >     Same expression without PyF.Formatters.Upper
       8c8
       < 7 | main = putStrLn [fmt|{hello:G}|]
       ---
       > 7 | main = putStrLn [fmt|{hello:g}|]

See how the G becames g. Note that however, the test which is currently in the repo contains hello:g, so I'm surprised by your hello:G.

I'm now wondering if that's not a false positive due to the way my golden test implementation works: it always "accept" new changes. In short, if you:

  • Do a change
  • Run the golden test, the change breaks many things, and it updates the golden tests automatically
  • Undo the change
  • Run the golden test again, it will shows a failure compared to the previous update, it will however regenerate the tests
  • Run the golden test again, no failure.

So could you check that your local golden test files are not updated in any way?

If note, there is something fishy with GHC 9.2.2, I'm super afraid. I'll try to update PyF environment with GHC 9.2.2 today.

Hi @guibou

I didn't make changes to the lib itself, I used the latest main branch checkout because the current hackage version didn't include a few top commits from the repo and it was failing similarly.

GHC 9.2.2 is coming from this checkout , PyF is compiled as part of a bigger project, and that project has a few dependency overrides but not specifically for PyF. I wonder if it has to do with one of the sub dependency versions, maybe bytestring or similar?

Bump to GHC 9.2.2 is happening in #98 and does not exhibits the regression you are describing (using the nixpkgs version you proposed).

I'll try to add a gitlab CI for macos and see what is happening. I'm super afraid.

Could you try the branch in #98 on your machine and tell me if the issue appears?

Good news, my Linux based CI didn't produce the error either, so we're on the same page here:

building '/nix/store/skix7c45szzdplxqn7hgkp8kmf1f538k-PyF-0.10.2.0.drv'...
setupCompilerEnvironmentPhase
Build with /nix/store/d9arr93fca23f8n4inxx1fvyi5sd391s-ghc-9.2.2.
unpacking sources
unpacking source archive /nix/store/ml9srqq4cry31j6mdb6z54hb333yikzr-PyF-0.10.2.0.tar.gz
source root is PyF-0.10.2.0
setting SOURCE_DATE_EPOCH to timestamp 1000000000 of file PyF-0.10.2.0/test/SpecUtils.hs
patching sources
compileBuildDriverPhase
setupCompileFlags: -package-db=/build/setup-package.conf.d -j16 +RTS -A64M -RTS -threaded -rtsopts
[1 of 1] Compiling Main             ( Setup.hs, /build/Main.o )
Linking Setup ...
configuring
configureFlags: --verbose --prefix=/nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0 --libdir=$prefix/lib/$compiler --libsubdir=$abi/$libname --docdir=/nix/store/zgfb6m0kqahr6zx5ivdb4lzxhdjva51x-PyF-0.10.2.0-doc/share/doc/PyF-0.10.2.0 --with-gcc=gcc --package-db=/build/package.conf.d --ghc-options=-j16 +RTS -A64M -RTS --disable-split-objs --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --ghc-option=-split-sections --ghc-options=-haddock --extra-lib-dirs=/nix/store/clkdigybx5w29rjxnwnsk76q49gb12k7-ncurses-6.3/lib --extra-lib-dirs=/nix/store/gm6q7jmajjmnwd29wgbq2jm3x37vsw3h-libffi-3.4.2/lib --extra-lib-dirs=/nix/store/qxrvrhlfaislinykki6qy6nqd4wv8mdp-gmp-with-cxx-6.2.1/lib --extra-lib-dirs=/nix/store/d9arr93fca23f8n4inxx1fvyi5sd391s-ghc-9.2.2/lib
Using Parsec parser
Configuring PyF-0.10.2.0...
Flags chosen: python_test=False
Dependency base >=4.9 && <5.0: using base-4.16.1.0
Dependency bytestring: using bytestring-0.11.3.0
Dependency ghc: using ghc-9.2.2
Dependency ghc-boot: using ghc-boot-9.2.2
Dependency mtl: using mtl-2.2.2
Dependency parsec: using parsec-3.1.15.0
Dependency template-haskell: using template-haskell-2.18.0.0
Dependency text: using text-1.2.5.0
Dependency time: using time-1.11.1.1
Dependency PyF: using PyF-0.10.2.0
Dependency base: using base-4.16.1.0
Dependency bytestring: using bytestring-0.11.3.0
Dependency hspec: using hspec-2.8.5
Dependency template-haskell: using template-haskell-2.18.0.0
Dependency text: using text-1.2.5.0
Dependency time: using time-1.11.1.1
Dependency PyF: using PyF-0.10.2.0
Dependency base: using base-4.16.1.0
Dependency bytestring: using bytestring-0.11.3.0
Dependency hspec: using hspec-2.8.5
Dependency text: using text-1.2.5.0
Dependency HUnit: using HUnit-1.6.2.0
Dependency base: using base-4.16.1.0
Dependency deepseq: using deepseq-1.4.6.1
Dependency filepath: using filepath-1.4.2.2
Dependency hspec: using hspec-2.8.5
Dependency process: using process-1.6.13.2
Dependency temporary: using temporary-1.3
Dependency text: using text-1.2.5.0
Source component graph:
    component test:pyf-failure
    component lib
    component test:pyf-overloaded dependency lib
    component test:pyf-test dependency lib
Configured component graph:
    component PyF-0.10.2.0-KLLn1XVNPq6F1t1z6tGDS4-pyf-failure
        include HUnit-1.6.2.0-DqTf3Y8NJwI5tE9sguGi21
        include base-4.16.1.0
        include deepseq-1.4.6.1
        include filepath-1.4.2.2
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include process-1.6.13.2
        include temporary-1.3-2ZZr6XnEZYU2PpueEFUo4Y
        include text-1.2.5.0
    component PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include ghc-9.2.2
        include ghc-boot-9.2.2
        include mtl-2.2.2
        include parsec-3.1.15.0
        include template-haskell-2.18.0.0
        include text-1.2.5.0
        include time-1.11.1.1
    component PyF-0.10.2.0-FihrxfdpdOXEX5m5U0fm2q-pyf-overloaded
        include PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include text-1.2.5.0
    component PyF-0.10.2.0-Aq2q3wODdlSElhGqLTmPL9-pyf-test
        include PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include template-haskell-2.18.0.0
        include text-1.2.5.0
        include time-1.11.1.1
Linked component graph:
    unit PyF-0.10.2.0-KLLn1XVNPq6F1t1z6tGDS4-pyf-failure
        include HUnit-1.6.2.0-DqTf3Y8NJwI5tE9sguGi21
        include base-4.16.1.0
        include deepseq-1.4.6.1
        include filepath-1.4.2.2
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include process-1.6.13.2
        include temporary-1.3-2ZZr6XnEZYU2PpueEFUo4Y
        include text-1.2.5.0
    unit PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include ghc-9.2.2
        include ghc-boot-9.2.2
        include mtl-2.2.2
        include parsec-3.1.15.0
        include template-haskell-2.18.0.0
        include text-1.2.5.0
        include time-1.11.1.1
        PyF=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF,PyF.Class=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Class,PyF.Formatters=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Formatters,PyF.Internal.Meta=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Internal.Meta,PyF.Internal.Parser=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Internal.Parser,PyF.Internal.ParserEx=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Internal.ParserEx,PyF.Internal.PythonSyntax=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Internal.PythonSyntax,PyF.Internal.QQ=PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT:PyF.Internal.QQ
    unit PyF-0.10.2.0-FihrxfdpdOXEX5m5U0fm2q-pyf-overloaded
        include PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include text-1.2.5.0
    unit PyF-0.10.2.0-Aq2q3wODdlSElhGqLTmPL9-pyf-test
        include PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        include base-4.16.1.0
        include bytestring-0.11.3.0
        include hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        include template-haskell-2.18.0.0
        include text-1.2.5.0
        include time-1.11.1.1
Ready component graph:
    definite PyF-0.10.2.0-KLLn1XVNPq6F1t1z6tGDS4-pyf-failure
        depends HUnit-1.6.2.0-DqTf3Y8NJwI5tE9sguGi21
        depends base-4.16.1.0
        depends deepseq-1.4.6.1
        depends filepath-1.4.2.2
        depends hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        depends process-1.6.13.2
        depends temporary-1.3-2ZZr6XnEZYU2PpueEFUo4Y
        depends text-1.2.5.0
    definite PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        depends base-4.16.1.0
        depends bytestring-0.11.3.0
        depends ghc-9.2.2
        depends ghc-boot-9.2.2
        depends mtl-2.2.2
        depends parsec-3.1.15.0
        depends template-haskell-2.18.0.0
        depends text-1.2.5.0
        depends time-1.11.1.1
    definite PyF-0.10.2.0-FihrxfdpdOXEX5m5U0fm2q-pyf-overloaded
        depends PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        depends base-4.16.1.0
        depends bytestring-0.11.3.0
        depends hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        depends text-1.2.5.0
    definite PyF-0.10.2.0-Aq2q3wODdlSElhGqLTmPL9-pyf-test
        depends PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
        depends base-4.16.1.0
        depends bytestring-0.11.3.0
        depends hspec-2.8.5-4Evc76wgsx4KOcOrTXHGbP
        depends template-haskell-2.18.0.0
        depends text-1.2.5.0
        depends time-1.11.1.1
Using Cabal-3.6.3.0 compiled by ghc-9.2
Using compiler: ghc-9.2.2
Using install prefix: /nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0
Executables installed in:
/nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0/bin
Libraries installed in:
/nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0/lib/ghc-9.2.2/x86_64-linux-ghc-9.2.2/PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
Dynamic Libraries installed in:
/nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0/lib/ghc-9.2.2/x86_64-linux-ghc-9.2.2
Private executables installed in:
/nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0/libexec/x86_64-linux-ghc-9.2.2/PyF-0.10.2.0
Data files installed in:
/nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0/share/x86_64-linux-ghc-9.2.2/PyF-0.10.2.0
Documentation installed in:
/nix/store/zgfb6m0kqahr6zx5ivdb4lzxhdjva51x-PyF-0.10.2.0-doc/share/doc/PyF-0.10.2.0
Configuration files installed in:
/nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0/etc
No alex found
Using ar found on system at:
/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38/bin/ar
No c2hs found
No cpphs found
No doctest found
Using gcc version 11.2.0 given by user at:
/nix/store/58pwclg9yr437h0pfgrnbd0jis8fqasd-gcc-wrapper-11.2.0/bin/gcc
Using ghc version 9.2.2 found on system at:
/nix/store/d9arr93fca23f8n4inxx1fvyi5sd391s-ghc-9.2.2/bin/ghc
Using ghc-pkg version 9.2.2 found on system at:
/nix/store/d9arr93fca23f8n4inxx1fvyi5sd391s-ghc-9.2.2/bin/ghc-pkg-9.2.2
No ghcjs found
No ghcjs-pkg found
No greencard found
Using haddock version 2.26.0 found on system at:
/nix/store/d9arr93fca23f8n4inxx1fvyi5sd391s-ghc-9.2.2/bin/haddock-ghc-9.2.2
No happy found
Using haskell-suite found on system at: haskell-suite-dummy-location
Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
No hmake found
Using hpc version 0.68 found on system at:
/nix/store/d9arr93fca23f8n4inxx1fvyi5sd391s-ghc-9.2.2/bin/hpc
Using hsc2hs version 0.68.8 found on system at:
/nix/store/d9arr93fca23f8n4inxx1fvyi5sd391s-ghc-9.2.2/bin/hsc2hs
Using hscolour version 1.24 found on system at:
/nix/store/2fxi9r1gj9k0m45b9nwzkazpassv3ci9-hscolour-1.24.4/bin/HsColour
No jhc found
Using ld found on system at:
/nix/store/dgic5ks4yixhh0havidjwd02rskmqlgp-binutils-wrapper-2.38/bin/ld.gold
No pkg-config found
Using runghc version 9.2.2 found on system at:
/nix/store/d9arr93fca23f8n4inxx1fvyi5sd391s-ghc-9.2.2/bin/runghc-9.2.2
Using strip version 2.38 found on system at:
/nix/store/58pwclg9yr437h0pfgrnbd0jis8fqasd-gcc-wrapper-11.2.0/bin/strip
Using tar found on system at:
/nix/store/4r26nvzfa1qfjaqgr2bpw2fz8c6qnk3s-gnutar-1.34/bin/tar
No uhc found
building
Preprocessing test suite 'pyf-failure' for PyF-0.10.2.0..
Building test suite 'pyf-failure' for PyF-0.10.2.0..
[1 of 1] Compiling Main             ( test/SpecFail.hs, dist/build/pyf-failure/pyf-failure-tmp/Main.o )
Linking dist/build/pyf-failure/pyf-failure ...
Preprocessing library for PyF-0.10.2.0..
Building library for PyF-0.10.2.0..

<no location info>: warning: [-Wunused-packages]
    The following packages were specified via -package or -package-id flags,
    but were not needed for compilation:
      - ghc-boot-9.2.2
[1 of 8] Compiling PyF.Formatters   ( src/PyF/Formatters.hs, dist/build/PyF/Formatters.o, dist/build/PyF/Formatters.dyn_o )

src/PyF/Formatters.hs:174:9: warning: [-Wincomplete-uni-patterns]
    Pattern match(es) are non-exhaustive
    In a pattern binding:
        Patterns of type ‘Repr’ not matched:
            IntegralRepr _ _
            Infinite _ _
            NaN _
            FractionalRepr Negative [] [] []
            ...
    |
174 |     let (FractionalRepr Positive aa bb cc) = reprFractional fmt precision (abs f)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/PyF/Formatters.hs:188:22: warning: [-Wincomplete-uni-patterns]
    Pattern match(es) are non-exhaustive
    In a pattern binding:
        Patterns of type ‘(String, String, String)’ not matched:
            ([], [], (_:_))
            ([], (_:_), (_:_))
            ((_:_), [], (_:_))
            ((_:_), (_:_), (_:_))
    |
188 |       Percent -> let (a, b, "") = splitFractional (Numeric.showFFloatAlt precision (iAbs * 100) "") in (a, b, "%")
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[2 of 8] Compiling PyF.Class        ( src/PyF/Class.hs, dist/build/PyF/Class.o, dist/build/PyF/Class.dyn_o )
[3 of 8] Compiling PyF.Internal.ParserEx ( src/PyF/Internal/ParserEx.hs, dist/build/PyF/Internal/ParserEx.o, dist/build/PyF/Internal/ParserEx.dyn_o )
[4 of 8] Compiling PyF.Internal.Parser ( src/PyF/Internal/Parser.hs, dist/build/PyF/Internal/Parser.o, dist/build/PyF/Internal/Parser.dyn_o )
[5 of 8] Compiling PyF.Internal.Meta ( src/PyF/Internal/Meta.hs, dist/build/PyF/Internal/Meta.o, dist/build/PyF/Internal/Meta.dyn_o )

src/PyF/Internal/Meta.hs:67:1: warning: [-Wmissing-signatures]
    Top-level binding with no type signature:
      fl_value :: GHC.Types.SourceText.FractionalLit -> Rational
   |
67 | fl_value = rationalFromFractionalLit
   | ^^^^^^^^

src/PyF/Internal/Meta.hs:107:9: warning: [-Wunused-matches]
    Defined but not used: ‘m’
    |
107 |   (Orig m o) -> error "orig"
    |         ^

src/PyF/Internal/Meta.hs:107:11: warning: [-Wunused-matches]
    Defined but not used: ‘o’
    |
107 |   (Orig m o) -> error "orig"
    |           ^

src/PyF/Internal/Meta.hs:108:10: warning: [-Wunused-matches]
    Defined but not used: ‘n1’
    |
108 |   (Exact n1) -> error "exact"
    |          ^^
[6 of 8] Compiling PyF.Internal.PythonSyntax ( src/PyF/Internal/PythonSyntax.hs, dist/build/PyF/Internal/PythonSyntax.o, dist/build/PyF/Internal/PythonSyntax.dyn_o )
[7 of 8] Compiling PyF.Internal.QQ  ( src/PyF/Internal/QQ.hs, dist/build/PyF/Internal/QQ.o, dist/build/PyF/Internal/QQ.dyn_o )
[8 of 8] Compiling PyF              ( src/PyF.hs, dist/build/PyF.o, dist/build/PyF.dyn_o )

<no location info>: warning: [-Wunused-packages]
    The following packages were specified via -package or -package-id flags,
    but were not needed for compilation:
      - ghc-boot-9.2.2
[1 of 8] Compiling PyF.Formatters   ( src/PyF/Formatters.hs, dist/build/PyF/Formatters.p_o )

src/PyF/Formatters.hs:174:9: warning: [-Wincomplete-uni-patterns]
    Pattern match(es) are non-exhaustive
    In a pattern binding:
        Patterns of type ‘Repr’ not matched:
            IntegralRepr _ _
            Infinite _ _
            NaN _
            FractionalRepr Negative [] [] []
            ...
    |
174 |     let (FractionalRepr Positive aa bb cc) = reprFractional fmt precision (abs f)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/PyF/Formatters.hs:188:22: warning: [-Wincomplete-uni-patterns]
    Pattern match(es) are non-exhaustive
    In a pattern binding:
        Patterns of type ‘(String, String, String)’ not matched:
            ([], [], (_:_))
            ([], (_:_), (_:_))
            ((_:_), [], (_:_))
            ((_:_), (_:_), (_:_))
    |
188 |       Percent -> let (a, b, "") = splitFractional (Numeric.showFFloatAlt precision (iAbs * 100) "") in (a, b, "%")
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[2 of 8] Compiling PyF.Class        ( src/PyF/Class.hs, dist/build/PyF/Class.p_o )
[3 of 8] Compiling PyF.Internal.ParserEx ( src/PyF/Internal/ParserEx.hs, dist/build/PyF/Internal/ParserEx.p_o )
[4 of 8] Compiling PyF.Internal.Parser ( src/PyF/Internal/Parser.hs, dist/build/PyF/Internal/Parser.p_o )
[5 of 8] Compiling PyF.Internal.Meta ( src/PyF/Internal/Meta.hs, dist/build/PyF/Internal/Meta.p_o )

src/PyF/Internal/Meta.hs:67:1: warning: [-Wmissing-signatures]
    Top-level binding with no type signature:
      fl_value :: GHC.Types.SourceText.FractionalLit -> Rational
   |
67 | fl_value = rationalFromFractionalLit
   | ^^^^^^^^

src/PyF/Internal/Meta.hs:107:9: warning: [-Wunused-matches]
    Defined but not used: ‘m’
    |
107 |   (Orig m o) -> error "orig"
    |         ^

src/PyF/Internal/Meta.hs:107:11: warning: [-Wunused-matches]
    Defined but not used: ‘o’
    |
107 |   (Orig m o) -> error "orig"
    |           ^

src/PyF/Internal/Meta.hs:108:10: warning: [-Wunused-matches]
    Defined but not used: ‘n1’
    |
108 |   (Exact n1) -> error "exact"
    |          ^^
[6 of 8] Compiling PyF.Internal.PythonSyntax ( src/PyF/Internal/PythonSyntax.hs, dist/build/PyF/Internal/PythonSyntax.p_o )
[7 of 8] Compiling PyF.Internal.QQ  ( src/PyF/Internal/QQ.hs, dist/build/PyF/Internal/QQ.p_o )
[8 of 8] Compiling PyF              ( src/PyF.hs, dist/build/PyF.p_o )
Preprocessing test suite 'pyf-overloaded' for PyF-0.10.2.0..
Building test suite 'pyf-overloaded' for PyF-0.10.2.0..
[1 of 1] Compiling Main             ( test/SpecOverloaded.hs, dist/build/pyf-overloaded/pyf-overloaded-tmp/Main.o, dist/build/pyf-overloaded/pyf-overloaded-tmp/Main.dyn_o )
Linking dist/build/pyf-overloaded/pyf-overloaded ...
Preprocessing test suite 'pyf-test' for PyF-0.10.2.0..
Building test suite 'pyf-test' for PyF-0.10.2.0..
[1 of 3] Compiling SpecCustomDelimiters ( test/SpecCustomDelimiters.hs, dist/build/pyf-test/pyf-test-tmp/SpecCustomDelimiters.o, dist/build/pyf-test/pyf-test-tmp/SpecCustomDelimiters.dyn_o )
[2 of 3] Compiling SpecUtils        ( test/SpecUtils.hs, dist/build/pyf-test/pyf-test-tmp/SpecUtils.o, dist/build/pyf-test/pyf-test-tmp/SpecUtils.dyn_o )
[3 of 3] Compiling Main             ( test/Spec.hs, dist/build/pyf-test/pyf-test-tmp/Main.o, dist/build/pyf-test/pyf-test-tmp/Main.dyn_o )
Linking dist/build/pyf-test/pyf-test ...
buildPhase completed in 39 seconds
running tests
Running 3 test suites...
Test suite pyf-failure: RUNNING...
Test suite pyf-failure: PASS
Test suite logged to: dist/test/PyF-0.10.2.0-pyf-failure.log
Test suite pyf-overloaded: RUNNING...
Test suite pyf-overloaded: PASS
Test suite logged to: dist/test/PyF-0.10.2.0-pyf-overloaded.log
Test suite pyf-test: RUNNING...
Test suite pyf-test: PASS
Test suite logged to: dist/test/PyF-0.10.2.0-pyf-test.log
3 of 3 test suites (3 of 3 test cases) passed.
checkPhase completed in 45 seconds
haddockPhase
Preprocessing test suite 'pyf-failure' for PyF-0.10.2.0..
Preprocessing library for PyF-0.10.2.0..
Running Haddock on library for PyF-0.10.2.0..
Warning: --source-* options are ignored when --hyperlinked-source is enabled.

<no location info>: warning: [-Wunused-packages]
    The following packages were specified via -package or -package-id flags,
    but were not needed for compilation:
      - ghc-boot-9.2.2
  87% ( 14 / 16) in 'PyF.Formatters'
  Missing documentation for:
    getAlignForString (src/PyF/Formatters.hs:99)
    AlignForString (src/PyF/Formatters.hs:71)
Warning: 'Integral' is ambiguous. It is defined
    * at src/PyF/Formatters.hs:112:32
    * in ‘GHC.Real’
    You may be able to disambiguate the identifier by qualifying it or
    by specifying the type/value namespace explicitly.
    Defaulting to the one defined at src/PyF/Formatters.hs:112:1
Warning: 'PyF' is out of scope.
    If you qualify the identifier, haddock can try to link it anyway.
Warning: 'a' is out of scope.
    If you qualify the identifier, haddock can try to link it anyway.
 100% ( 10 / 10) in 'PyF.Class'
   0% (  0 /  4) in 'PyF.Internal.ParserEx'
  Missing documentation for:
    Module header
    fakeSettings (src/PyF/Internal/ParserEx.hs:91)
    fakeLlvmConfig (src/PyF/Internal/ParserEx.hs:167)
    parseExpression (src/PyF/Internal/ParserEx.hs:190)
  50% (  1 /  2) in 'PyF.Internal.Parser'
  Missing documentation for:
    parseExpression (src/PyF/Internal/Parser.hs:42)
   0% (  0 /  4) in 'PyF.Internal.Meta'
  Missing documentation for:
    Module header
    toExp (src/PyF/Internal/Meta.hs:117)
    baseDynFlags (src/PyF/Internal/Meta.hs:206)
    translateTHtoGHCExt (src/PyF/Internal/Meta.hs:211)

src/PyF/Internal/Meta.hs:67:1: warning: [-Wmissing-signatures]
    Top-level binding with no type signature:
      fl_value :: GHC.Types.SourceText.FractionalLit -> Rational
   |
67 | fl_value = rationalFromFractionalLit
   | ^^^^^^^^

src/PyF/Internal/Meta.hs:107:9: warning: [-Wunused-matches]
    Defined but not used: ‘m’
    |
107 |   (Orig m o) -> error "orig"
    |         ^

src/PyF/Internal/Meta.hs:107:11: warning: [-Wunused-matches]
    Defined but not used: ‘o’
    |
107 |   (Orig m o) -> error "orig"
    |           ^

src/PyF/Internal/Meta.hs:108:10: warning: [-Wunused-matches]
    Defined but not used: ‘n1’
    |
108 |   (Exact n1) -> error "exact"
    |          ^^
  83% ( 10 / 12) in 'PyF.Internal.PythonSyntax'
  Missing documentation for:
    Parser (src/PyF/Internal/PythonSyntax.hs:36)
    ParsingContext (src/PyF/Internal/PythonSyntax.hs:38)
 100% (  5 /  5) in 'PyF.Internal.QQ'
Warning: 'IsString' is out of scope.
    If you qualify the identifier, haddock can try to link it anyway.
Warning: 'fromString' is out of scope.
    If you qualify the identifier, haddock can try to link it anyway.
 100% ( 16 / 16) in 'PyF'
Warning: PyF.Formatters: could not find link destinations for:

        - PyF.Formatters.reprIntegral
Documentation created: dist/doc/html/PyF/index.html, dist/doc/html/PyF/PyF.txt
Preprocessing test suite 'pyf-overloaded' for PyF-0.10.2.0..
Preprocessing test suite 'pyf-test' for PyF-0.10.2.0..
installing
Installing library in /nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0/lib/ghc-9.2.2/x86_64-linux-ghc-9.2.2/PyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0
shrinking /nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0/lib/ghc-9.2.2/x86_64-linux-ghc-9.2.2/libHSPyF-0.10.2.0-Hs8n1yKEtsfFiqMVgWSgqT-ghc9.2.2.so
strip is /nix/store/58pwclg9yr437h0pfgrnbd0jis8fqasd-gcc-wrapper-11.2.0/bin/strip
stripping (with command strip and flags -S) in /nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0/lib 
patching script interpreter paths in /nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0
checking for references to /build/ in /nix/store/fh9n16jjrpd5bnp8vcqd8l30vgbkxgh6-PyF-0.10.2.0...
shrinking RPATHs of ELF executables and libraries in /nix/store/zgfb6m0kqahr6zx5ivdb4lzxhdjva51x-PyF-0.10.2.0-doc
strip is /nix/store/58pwclg9yr437h0pfgrnbd0jis8fqasd-gcc-wrapper-11.2.0/bin/strip
patching script interpreter paths in /nix/store/zgfb6m0kqahr6zx5ivdb4lzxhdjva51x-PyF-0.10.2.0-doc
checking for references to /build/ in /nix/store/zgfb6m0kqahr6zx5ivdb4lzxhdjva51x-PyF-0.10.2.0-doc...

Not so good news is it seems to be MacOS (Monterey 12.0.1, Intel) specific. I'll appreciate it if it could be confirmed in your CI too.

@guibou could this be the reason? git clone:

% git clone https://github.com/guibou/PyF.git
Cloning into 'PyF'...
remote: Enumerating objects: 2222, done.
remote: Counting objects: 100% (69/69), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 2222 (delta 54), reused 55 (delta 52), pack-reused 2153
Receiving objects: 100% (2222/2222), 378.33 KiB | 435.00 KiB/s, done.
Resolving deltas: 100% (1231/1231), done.
warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:

  'test/golden/{helloCOLONE}.golden'
  'test/golden/{helloCOLONe}.golden'
  'test/golden/{helloCOLONG}.golden'
  'test/golden/{helloCOLONg}.golden'
  'test/golden/{helloCOLONX}.golden'
  'test/golden/{helloCOLONx}.golden'
  'test/golden/{numberCOLONX}.golden'
  'test/golden/{numberCOLONx}.golden'

Apple's APFS is case-insensitive by default

@guibou could this be the reason? git clone:

% git clone https://github.com/guibou/PyF.git
Cloning into 'PyF'...
remote: Enumerating objects: 2222, done.
remote: Counting objects: 100% (69/69), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 2222 (delta 54), reused 55 (delta 52), pack-reused 2153
Receiving objects: 100% (2222/2222), 378.33 KiB | 435.00 KiB/s, done.
Resolving deltas: 100% (1231/1231), done.
warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:

  'test/golden/{helloCOLONE}.golden'
  'test/golden/{helloCOLONe}.golden'
  'test/golden/{helloCOLONG}.golden'
  'test/golden/{helloCOLONg}.golden'
  'test/golden/{helloCOLONX}.golden'
  'test/golden/{helloCOLONx}.golden'
  'test/golden/{numberCOLONX}.golden'
  'test/golden/{numberCOLONx}.golden'

Apple's APFS is case-insensitive by default

OMG, YES, YES!

The golden test filenames is named the same as the content of the test... And I explicitly test for different case for the formatting letter.

So the good thing is that we understand the issue.

One solution would be to normalize the filename. You see that we already replace special chars, we can also force small caps.

nice, so is it then as simple as prefixing the golden fixture files with "lower_" and "capital_" (just an example)?

nice, so is it then as simple as prefixing the golden fixture files with "lower_" and "capital_" (just an example)?

Yes, should be.

Should be fixed by #105. Tell me if that's OK now.

Thank you for you patience ;)

Thanks a lot, I'll check it at the next internal nixpkgs snapshot update!

Works as expected 👍