summary refs log tree commit diff
path: root/pkgs/development/ruby-modules/bundler-env
diff options
context:
space:
mode:
authorJudson <nyarly@gmail.com>2017-05-09 09:39:20 -0700
committerJudson <nyarly@gmail.com>2017-05-09 09:39:20 -0700
commit0145ec999c3a5e3d205e94221ce07f11e9fc3b35 (patch)
tree77d196e5026a490d810abee28687888ce7e76879 /pkgs/development/ruby-modules/bundler-env
parent66fed6d28f70263f6a4105e6e8504742618932cb (diff)
downloadnixpkgs-0145ec999c3a5e3d205e94221ce07f11e9fc3b35.tar
nixpkgs-0145ec999c3a5e3d205e94221ce07f11e9fc3b35.tar.gz
nixpkgs-0145ec999c3a5e3d205e94221ce07f11e9fc3b35.tar.bz2
nixpkgs-0145ec999c3a5e3d205e94221ce07f11e9fc3b35.tar.lz
nixpkgs-0145ec999c3a5e3d205e94221ce07f11e9fc3b35.tar.xz
nixpkgs-0145ec999c3a5e3d205e94221ce07f11e9fc3b35.tar.zst
nixpkgs-0145ec999c3a5e3d205e94221ce07f11e9fc3b35.zip
Current round of tests pass, but filter function is failing to include when groups match in use.
Diffstat (limited to 'pkgs/development/ruby-modules/bundler-env')
-rw-r--r--pkgs/development/ruby-modules/bundler-env/assertions.nix24
-rw-r--r--pkgs/development/ruby-modules/bundler-env/basic.nix7
-rw-r--r--pkgs/development/ruby-modules/bundler-env/functions.nix3
-rw-r--r--pkgs/development/ruby-modules/bundler-env/stubs.nix33
-rw-r--r--pkgs/development/ruby-modules/bundler-env/test.nix40
5 files changed, 74 insertions, 33 deletions
diff --git a/pkgs/development/ruby-modules/bundler-env/assertions.nix b/pkgs/development/ruby-modules/bundler-env/assertions.nix
new file mode 100644
index 00000000000..3cf67d6f3eb
--- /dev/null
+++ b/pkgs/development/ruby-modules/bundler-env/assertions.nix
@@ -0,0 +1,24 @@
+{ test, lib, ...}:
+{
+  equal = expected: actual:
+    if actual == expected then
+      (test.passed "= ${toString expected}") else
+      (test.failed "'${toString actual}'(${builtins.typeOf actual}) != '${toString expected}'(${builtins.typeOf expected})");
+
+  beASet = actual:
+    if builtins.isAttrs actual then
+      (test.passed "is a set") else
+      (test.failed "is not a set, was ${builtins.typeOf actual}: ${toString actual}");
+
+  haveKeys = expected: actual:
+    if builtins.all
+    (ex: builtins.any (ac: ex == ac) (builtins.attrNames actual))
+    expected then
+      (test.passed "has expected keys") else
+      (test.failed "keys differ: expected [${lib.concatStringsSep ";" expected}] have [${lib.concatStringsSep ";" (builtins.attrNames actual)}]");
+
+  havePrefix = expected: actual:
+    if lib.hasPrefix expected actual then
+      (test.passed "has prefix '${expected}'") else
+      (test.failed "prefix '${expected}' not found in '${actual}'");
+}
diff --git a/pkgs/development/ruby-modules/bundler-env/basic.nix b/pkgs/development/ruby-modules/bundler-env/basic.nix
index 4557a7500f6..75fe7342344 100644
--- a/pkgs/development/ruby-modules/bundler-env/basic.nix
+++ b/pkgs/development/ruby-modules/bundler-env/basic.nix
@@ -20,7 +20,9 @@
 , ...
 }@args:
 
-with (import ./functions.nix { inherit lib ruby gemConfig groups; });
+with (
+builtins.trace "basic functions"
+import ./functions.nix { inherit lib ruby gemConfig groups; });
 
 let
 
@@ -69,7 +71,8 @@ let
     if gemAttrs.type == "path" then
       pathDerivation gemAttrs
     else
-      buildRubyGem gemAttrs
+      builtins.trace (lib.showVal (gemAttrs.ruby or "def ruby"))
+        buildRubyGem gemAttrs
   );
 
   envPaths = lib.attrValues gems ++ lib.optional (!hasBundler) bundler;
diff --git a/pkgs/development/ruby-modules/bundler-env/functions.nix b/pkgs/development/ruby-modules/bundler-env/functions.nix
index 21efcacff8a..4c1f6deb55b 100644
--- a/pkgs/development/ruby-modules/bundler-env/functions.nix
+++ b/pkgs/development/ruby-modules/bundler-env/functions.nix
@@ -1,4 +1,5 @@
 { lib, ruby, groups, gemConfig, ... }:
+builtins.trace (if ruby.stubbed or false then "functions has stubbed ruby" else "functions has live ruby")
 rec {
   filterGemset = gemset: lib.filterAttrs (name: attrs: platformMatches attrs && groupMatches attrs) gemset;
 
@@ -44,7 +45,7 @@ rec {
         };
     in res;
 
-  composeGemAttrs = gems: name: attrs: ((removeAttrs attrs ["source"]) // attrs.source // {
+  composeGemAttrs = gems: name: attrs: ((removeAttrs attrs ["source" "platforms"]) // attrs.source // {
     inherit ruby;
     gemName = name;
     gemPath = map (gemName: gems."${gemName}") (attrs.dependencies or []);
diff --git a/pkgs/development/ruby-modules/bundler-env/stubs.nix b/pkgs/development/ruby-modules/bundler-env/stubs.nix
new file mode 100644
index 00000000000..3585681478c
--- /dev/null
+++ b/pkgs/development/ruby-modules/bundler-env/stubs.nix
@@ -0,0 +1,33 @@
+{ stdenv, lib, ruby, callPackage, ... }:
+let
+  real = {
+    inherit (stdenv) mkDerivation;
+  };
+  mkDerivation = {name, ...}@argSet:
+  derivation {
+    inherit name;
+    text = (builtins.toJSON (lib.filterAttrs ( n: v: builtins.any (x: x == n) ["name" "system"]) argSet));
+    builder = stdenv.shell;
+    args = [ "-c" "echo  $(<$textPath) > $out"];
+    system = stdenv.system;
+    passAsFile = ["text"];
+  };
+  fetchurl = {url?"", urls ? [],...}: "fetchurl:${if urls == [] then url else builtins.head urls}";
+
+  stdenv' = stdenv // {
+    inherit mkDerivation;
+    stubbed = true;
+  };
+  ruby' = ruby // {
+    stdenv = stdenv';
+    stubbed = true;
+  };
+in
+  {
+    ruby = ruby';
+    buildRubyGem = callPackage ../gem {
+      inherit fetchurl;
+      ruby = ruby';
+    };
+    stdenv = stdenv';
+  }
diff --git a/pkgs/development/ruby-modules/bundler-env/test.nix b/pkgs/development/ruby-modules/bundler-env/test.nix
index cb06d1012d2..28e5dbe318a 100644
--- a/pkgs/development/ruby-modules/bundler-env/test.nix
+++ b/pkgs/development/ruby-modules/bundler-env/test.nix
@@ -5,44 +5,24 @@ nix-build -E 'with import <nixpkgs> { }; callPackage ./test.nix {}' --show-trace
 Confusingly, the ideal result ends with something like:
 error: build of ‘/nix/store/3245f3dcl2wxjs4rci7n069zjlz8qg85-test-results.tap.drv’ failed
 */
-{ writeText, lib, ruby, defaultGemConfig, callPackage }:
+{ stdenv, writeText, lib, ruby, defaultGemConfig, callPackage }@defs:
 let
   test = import ./testing.nix;
   tap = import ./tap-support.nix;
+  stubs = import ./stubs.nix defs;
+  should = import ./assertions.nix { inherit test lib; };
 
-  bundlerEnv = callPackage ./default.nix {};
-  basicEnv = callPackage ./basic.nix {};
+  basicEnv = callPackage ./basic.nix stubs;
+  bundlerEnv = callPackage ./default.nix stubs // {
+    inherit basicEnv;
+  };
 
   testConfigs = {
     groups = ["default"];
     gemConfig =  defaultGemConfig;
     confFiles = "./testConfs";
   };
-  functions = (import ./functions.nix ({ inherit lib ruby; } // testConfigs));
-
-  should = {
-    equal = expected: actual:
-    if actual == expected then
-    (test.passed "= ${toString expected}") else
-    (test.failed "'${toString actual}'(${builtins.typeOf actual}) != '${toString expected}'(${builtins.typeOf expected})");
-
-    beASet = actual:
-    if builtins.isAttrs actual then
-    (test.passed "is a set") else
-    (test.failed "is not a set, was ${builtins.typeOf actual}: ${toString actual}");
-
-    haveKeys = expected: actual:
-    if builtins.all
-      (ex: builtins.any (ac: ex == ac) (builtins.attrNames actual))
-      expected then
-      (test.passed "has expected keys") else
-      (test.failed "keys differ: expected [${lib.concatStringsSep ";" expected}] have [${lib.concatStringsSep ";" (builtins.attrNames actual)}]");
-
-    havePrefix = expected: actual:
-    if lib.hasPrefix expected actual then
-    (test.passed "has prefix '${expected}'") else
-    (test.failed "prefix '${expected}' not found in '${actual}'");
-  };
+  functions = (import ./functions.nix ({ inherit lib; ruby = stubs.ruby; } // testConfigs));
 
   justName = bundlerEnv {
     name = "test";
@@ -66,9 +46,9 @@ let
     [
       (should.haveKeys [ "name" "env" "postBuild" ])
       {
-        name = should.equal "test-0.1.2";
+        name = should.equal "test";
         env = should.beASet;
-        postBuild = should.havePrefix "nananana";
+        postBuild = should.havePrefix "/nix/store";
       }
     ])
   ];