[Nix-dev] Fwd: Haskell doctest
Benno Fünfstück
benno.fuenfstueck at gmail.com
Wed Nov 12 19:10:39 CET 2014
Ah sorry, I wrote that on my phone so the answer was a bit short :).
You just type eval $buildPhase while you're in nix-shell. eval is a bash
builtin to execute a bash script from a string, and the buildPhase
environment variable contains the script that nix would use to build your
project when you'd use nix-build or similar. So eval $buildPhase just
builds your project but it also sets the GHC_PACKAGE_PATH environment
variable at the end, so that the tests can find the packages.
Since nix uses the `Setup.hs` file directly instead of going through
cabal-install, you will need to run eval $configurePhase once so that
Setup.hs gets compiled into the Setup executable and the project is
configured.
--
Benno
2014-11-12 18:52 GMT+01:00 Richard Wallace <rwallace at thewallacepack.net>:
> Hi Benno,
>
> Thanks for the response. I'm not sure what you mean by "eval $buildPhase"
> and where I would put that. I'm stilling finding my feet with nix. :)
>
> Thanks again,
> Rich
>
> On Tue, Nov 11, 2014 at 11:01 PM, Benno Fünfstück <
> benno.fuenfstueck at gmail.com> wrote:
>
>> Hello Rich,
>>
>> GHC_PACKAGE_PATH needs to be set correctly for doctests to work. The
>> problem with this is that cabal doesn't work with GHC_PACKAGE_PATH set, so
>> you can't set it permanently.
>>
>> If you use "eval $buildPhase", that will build the project and set
>> GHC_PACKAGE_PATH. doctests should work after that. You might need to run
>> eval "$configurePhase" before though, to compile Setup.hs.
>>
>> --
>> Benno
>>
>> Am 12.11.2014 00:51 schrieb "Richard Wallace" <
>> rwallace at thewallacepack.net>:
>>
>> >
>> > Hello all,
>> >
>> > We've got a Haskell project that we're using nix to ensure a consistent
>> build environment. I'm working on adding tests with doctest, and am
>> running into trouble. Here are the default.nix and shell.nix files we're
>> using (many dependencies elided for brevity)
>> >
>> > # This file was auto-generated by cabal2nix. Please do NOT edit
>> manually!
>> >
>> > { cabal, aeson, lens, doctest,
>> > }:
>> >
>> > cabal.mkDerivation (self: {
>> > pname = "hiberico";
>> > version = "1";
>> > src = ./.;
>> > isLibrary = false;
>> > isExecutable = true;
>> > buildDepends = [
>> > aeson lens
>> > ];
>> > testDepends = [
>> > doctest aeson lens
>> > ];
>> >
>> > meta = {
>> > description = "Iberico in Haskell";
>> > license = "unknown";
>> > platforms = self.ghc.meta.platforms;
>> > };
>> > })
>> >
>> > # shell.nix
>> > let
>> > nixpkgs = (import <nixpkgs> {}).fetchgit {
>> > url = "git://github.com/NixOS/nixpkgs.git";
>> > rev = "c758ec756b60a2161a5d7369d07d3eb2fe04a5aa";
>> > sha256 = "01x01gwj2pm165sdhb1fxfdzl638kksx79dyadji5f2wp4hssk8m";
>> > };
>> > in
>> > { system ? builtins.currentSystem
>> > , pkgs ? import nixpkgs { inherit system; }
>> > , haskellPackages ? pkgs.haskellPackages.override {
>> > extension = self: super: {
>> > hiberico = self.callPackage ./. {};
>> > };
>> > }
>> > }:
>> > pkgs.lib.overrideDerivation haskellPackages.hiberico (attrs: {
>> > buildInputs = [
>> > haskellPackages.cabalInstall
>> > ] ++ attrs.buildInputs;
>> > })
>> >
>> >
>> > When I enter the nix-shell (`nix-shell --pure shell.nix`), the
>> environment seems setup correctly. I can run `cabal configure
>> --enable-tests && cabal build && cabal test` and it gets to the point where
>> doctest is parsing the source files and I get
>> >
>> > Building hiberico-1...
>> > Preprocessing executable 'hiberico' for hiberico-1...
>> > Preprocessing test suite 'doctests' for hiberico-1...
>> > Running 1 test suites...
>> > Test suite doctests: RUNNING...
>> >
>> > src/Topology.hs:11:18:
>> > Could not find module 'Data.Aeson'
>> > Perhaps you meant Data.Version (from base)
>> > Use -v to see a list of the files searched for.
>> >
>> > I've added all the dependencies to the doctests suite in the cabal
>> file. Is there something else I'm missing?
>> >
>> > Thanks,
>> > Rich
>> >
>> > _______________________________________________
>> > nix-dev mailing list
>> > nix-dev at lists.science.uu.nl
>> > http://lists.science.uu.nl/mailman/listinfo/nix-dev
>> >
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.science.uu.nl/pipermail/nix-dev/attachments/20141112/9f1ab6e0/attachment-0001.html
More information about the nix-dev
mailing list