guix/tests/lang
Eelco Dolstra 0dbd4638e0 * Two primops: builtins.intersectAttrs and builtins.functionArgs.
intersectAttrs returns the (right-biased) intersection between two
  attribute sets, e.g. every attribute from the second set that also
  exists in the first.  functionArgs returns the set of attributes
  expected by a function.

  The main goal of these is to allow the elimination of most of
  all-packages.nix.  Most package instantiations in all-packages.nix
  have this form:

    foo = import ./foo.nix {
      inherit a b c;
    };

  With intersectAttrs and functionArgs, this can be written as:

    foo = callPackage (import ./foo.nix) { };

  where

   callPackage = f: args:
     f ((builtins.intersectAttrs (builtins.functionArgs f) pkgs) // args);

  I.e., foo.nix is called with all attributes from "pkgs" that it
  actually needs (e.g., pkgs.a, pkgs.b and pkgs.c).  (callPackage can
  do any other generic package-level stuff we might want, such as
  applying makeOverridable.)  Of course, the automatically supplied
  arguments can be overriden if needed, e.g.

    foo = callPackage (import ./foo.nix) {
      c = c_version_2;
    };

  but for the vast majority of packages, this won't be needed.

  The advantages are to reduce the amount of typing needed to add a
  dependency (from three sites to two), and to reduce the number of
  trivial commits to all-packages.nix.  For the former, there have
  been two previous attempts:

    - Use "args: with args;" in the package's function definition.
      This however obscures the actual expected arguments of a
      function, which is very bad.

    - Use "{ arg1, arg2, ... }:" in the package's function definition
      (i.e. use the ellipis "..." to allow arbitrary additional
      arguments), and then call the function with all of "pkgs" as an
      argument.  But this inhibits error detection if you call it with
      an misspelled (or obsolete) argument.
2009-09-15 13:01:46 +00:00
..
eval-fail-abort.nix * New primop: abort "error message". 2006-08-23 15:46:00 +00:00
eval-fail-assert.nix * More test coverage. 2006-03-01 16:26:13 +00:00
eval-fail-blackhole.nix
eval-fail-missing-arg.nix * Allow function argument default values to refer to other arguments 2006-05-08 12:52:47 +00:00
eval-fail-remove.nix * Added a primop `removeAttrs' to remove attributes from a set, e.g., 2005-05-18 17:19:21 +00:00
eval-fail-scope-5.nix * More tests. 2006-05-02 11:20:55 +00:00
eval-fail-substring.nix New primitives: 2007-01-29 14:23:09 +00:00
eval-fail-to-path.nix * Another test. 2006-10-17 11:16:02 +00:00
eval-fail-undeclared-arg.nix * Allow function argument default values to refer to other arguments 2006-05-08 12:52:47 +00:00
eval-okay-arithmetic.exp * Builtin function `add' to add integers. 2006-09-22 15:29:21 +00:00
eval-okay-arithmetic.nix * lessThan primitive for integer comparison. 2006-09-24 15:21:48 +00:00
eval-okay-attrnames.exp * New built-in function `builtins.attrNames' that returns the 2006-12-12 16:14:31 +00:00
eval-okay-attrnames.nix * New built-in function `builtins.attrNames' that returns the 2006-12-12 16:14:31 +00:00
eval-okay-attrs.exp * More test coverage. 2006-03-01 16:26:13 +00:00
eval-okay-attrs.nix * More test coverage. 2006-03-01 16:26:13 +00:00
eval-okay-attrs2.exp * New builtin functions builtins.{hasAttr, getAttr} to check for 2006-09-22 14:31:55 +00:00
eval-okay-attrs2.nix * New builtin functions builtins.{hasAttr, getAttr} to check for 2006-09-22 14:31:55 +00:00
eval-okay-attrs3.exp * Some syntactic sugar for attribute sets: allow {x.y.z = ...;} as a 2009-05-15 12:35:23 +00:00
eval-okay-attrs3.nix * Some syntactic sugar for attribute sets: allow {x.y.z = ...;} as a 2009-05-15 12:35:23 +00:00
eval-okay-autoargs.exp * Option --argstr for passing string arguments easily. (NIX-75) 2007-01-14 12:32:44 +00:00
eval-okay-autoargs.flags * Option --argstr for passing string arguments easily. (NIX-75) 2007-01-14 12:32:44 +00:00
eval-okay-autoargs.nix * Option --argstr for passing string arguments easily. (NIX-75) 2007-01-14 12:32:44 +00:00
eval-okay-builtins.exp * A new primop `builtins', which returns an attribute set containing 2006-08-23 14:39:11 +00:00
eval-okay-builtins.nix * A new primop `builtins', which returns an attribute set containing 2006-08-23 14:39:11 +00:00
eval-okay-closure.exp.xml * Generalised the dependencyClosure primop to builtins.genericClosure, 2008-07-11 13:29:04 +00:00
eval-okay-closure.nix * Generalised the dependencyClosure primop to builtins.genericClosure, 2008-07-11 13:29:04 +00:00
eval-okay-concat.exp * Added a list concatenation operator: 2005-07-25 15:05:34 +00:00
eval-okay-concat.nix * Added a list concatenation operator: 2005-07-25 15:05:34 +00:00
eval-okay-context.exp * New primop `unsafeDiscardStringContext' to get rid of string 2008-01-04 14:22:49 +00:00
eval-okay-context.nix * New primop `unsafeDiscardStringContext' to get rid of string 2008-01-04 14:22:49 +00:00
eval-okay-empty-args.exp * Allow empty argument lists in function definitions (e.g., `{}: 2007-05-15 12:14:37 +00:00
eval-okay-empty-args.nix * Allow empty argument lists in function definitions (e.g., `{}: 2007-05-15 12:14:37 +00:00
eval-okay-eq.exp.disabled * Okay, that's a bit harder than expected. 2006-08-30 13:10:04 +00:00
eval-okay-eq.nix * TDD: == should do a deep equality test, i.e., it should strictly 2006-08-30 12:25:27 +00:00
eval-okay-flatten.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-flatten.nix * Builtin function `add' to add integers. 2006-09-22 15:29:21 +00:00
eval-okay-functionargs.exp.xml * Two primops: builtins.intersectAttrs and builtins.functionArgs. 2009-09-15 13:01:46 +00:00
eval-okay-functionargs.nix * Two primops: builtins.intersectAttrs and builtins.functionArgs. 2009-09-15 13:01:46 +00:00
eval-okay-getenv.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-getenv.nix * Builtin function `getEnv' for getting environment variables. 2006-09-24 17:48:41 +00:00
eval-okay-if.exp * More test coverage. 2006-03-01 16:26:13 +00:00
eval-okay-if.nix * More test coverage. 2006-03-01 16:26:13 +00:00
eval-okay-ind-string.exp * Doh. 2008-02-05 13:35:49 +00:00
eval-okay-ind-string.nix * Regression test. 2008-02-05 13:25:18 +00:00
eval-okay-let.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-let.nix
eval-okay-list.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-list.nix * Builtin function `add' to add integers. 2006-09-22 15:29:21 +00:00
eval-okay-listToAttrs.nix primop functions listToAttrs (+test), __isAttrs, __trace added 2007-08-18 22:12:00 +00:00
eval-okay-listToAttrs.out primop functions listToAttrs (+test), __isAttrs, __trace added 2007-08-18 22:12:00 +00:00
eval-okay-logic.exp * More test coverage. 2006-03-01 16:26:13 +00:00
eval-okay-logic.nix * More test coverage. 2006-03-01 16:26:13 +00:00
eval-okay-map.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-map.nix * Builtin function `add' to add integers. 2006-09-22 15:29:21 +00:00
eval-okay-new-let.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-new-let.nix * Finally, a real "let" syntax: `let x = ...; ... z = ...; in ...'. 2006-10-02 15:52:44 +00:00
eval-okay-pathexists.exp * Primop `toPath' to convert a string to a path. 2006-09-24 18:23:32 +00:00
eval-okay-pathexists.nix * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-patterns.exp * Added an experimental feature suggested by Andres: ellipses ("...") 2008-08-14 14:00:44 +00:00
eval-okay-patterns.nix * Added an experimental feature suggested by Andres: ellipses ("...") 2008-08-14 14:00:44 +00:00
eval-okay-readfile.exp * New primop `readFile' to get the contents of a file as a string. 2007-11-21 13:49:59 +00:00
eval-okay-readfile.nix * New primop `readFile' to get the contents of a file as a string. 2007-11-21 13:49:59 +00:00
eval-okay-remove.exp * Added a primop `removeAttrs' to remove attributes from a set, e.g., 2005-05-18 17:19:21 +00:00
eval-okay-remove.nix * Added a primop `removeAttrs' to remove attributes from a set, e.g., 2005-05-18 17:19:21 +00:00
eval-okay-scope-1.exp
eval-okay-scope-1.nix
eval-okay-scope-2.exp
eval-okay-scope-2.nix
eval-okay-scope-3.exp
eval-okay-scope-3.nix
eval-okay-scope-4.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-scope-4.nix * Tests for NIX-45. 2006-05-02 11:15:04 +00:00
eval-okay-scope-6.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-scope-6.nix * More tests. 2006-05-02 11:20:55 +00:00
eval-okay-scope-7.exp * Change the scoping of "inherit (e) ..." in recs so that the 2009-05-15 13:46:13 +00:00
eval-okay-scope-7.nix * Change the scoping of "inherit (e) ..." in recs so that the 2009-05-15 13:46:13 +00:00
eval-okay-string.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-string.nix * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-substring.exp New primitives: 2007-01-29 14:23:09 +00:00
eval-okay-substring.nix New primitives: 2007-01-29 14:23:09 +00:00
eval-okay-to-xml.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-to-xml.nix * New primop __toXML (or builtins.toXML) to convert an expression to 2006-08-24 14:34:29 +00:00
eval-okay-versions.exp * Export the nix-env derivation name parsing and version comparison 2008-07-01 10:10:32 +00:00
eval-okay-versions.nix * Export the nix-env derivation name parsing and version comparison 2008-07-01 10:10:32 +00:00
eval-okay-with.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
eval-okay-with.nix * Scoping bug in `with'. 2005-11-04 14:50:33 +00:00
eval-okay-xml.exp.xml * Added an experimental feature suggested by Andres: ellipses ("...") 2008-08-14 14:00:44 +00:00
eval-okay-xml.nix * Added an experimental feature suggested by Andres: ellipses ("...") 2008-08-14 14:00:44 +00:00
lib.nix * Generalised the dependencyClosure primop to builtins.genericClosure, 2008-07-11 13:29:04 +00:00
parse-fail-dup-attrs-1.nix
parse-fail-dup-attrs-2.nix
parse-fail-dup-attrs-3.nix
parse-fail-dup-attrs-4.nix * Some syntactic sugar for attribute sets: allow {x.y.z = ...;} as a 2009-05-15 12:35:23 +00:00
parse-fail-dup-attrs-5.nix * Some syntactic sugar for attribute sets: allow {x.y.z = ...;} as a 2009-05-15 12:35:23 +00:00
parse-fail-dup-attrs-6.nix * Some syntactic sugar for attribute sets: allow {x.y.z = ...;} as a 2009-05-15 12:35:23 +00:00
parse-fail-dup-formals.nix
parse-fail-patterns-1.nix * @-patterns as in Haskell. For instance, in a function definition 2008-08-14 12:53:29 +00:00
parse-fail-regression-20060610.nix * This expression has an undefined variable which isn't detected, so 2006-07-10 17:35:00 +00:00
parse-fail-undef-var-2.nix * New language feature: domain checks, which check whether a function 2006-07-24 16:35:34 +00:00
parse-fail-undef-var.nix
parse-okay-1.exp * Added an experimental feature suggested by Andres: ellipses ("...") 2008-08-14 14:00:44 +00:00
parse-okay-1.nix
parse-okay-crlf.exp * Canonicalise ASTs in `nix-instantiate --eval': remove position 2007-01-13 16:17:07 +00:00
parse-okay-crlf.nix * Meh. 2006-08-16 10:29:43 +00:00
parse-okay-regression-20041027.exp * Added an experimental feature suggested by Andres: ellipses ("...") 2008-08-14 14:00:44 +00:00
parse-okay-regression-20041027.nix
parse-okay-subversion.exp * Added an experimental feature suggested by Andres: ellipses ("...") 2008-08-14 14:00:44 +00:00
parse-okay-subversion.nix
parse-okay-url.exp * Fix the tests wrt the AST changes, i.e., Str(s) -> Str(s, []), and 2006-10-17 11:08:59 +00:00
parse-okay-url.nix