From 07f781bd8d8b114985b47762bf0930729a5247ce Mon Sep 17 00:00:00 2001 From: Judson Date: Wed, 10 May 2017 10:00:21 -0700 Subject: [PATCH] Current round of tests pass, but filter function is failing to include when platform match in use. --- .../ruby-modules/bundler-env/basic.nix | 11 ++++------- .../ruby-modules/bundler-env/functions.nix | 18 ++++++++++-------- .../ruby-modules/bundler-env/runtests.sh | 2 ++ .../ruby-modules/bundler-env/test.nix | 16 ++++++++++++---- pkgs/development/ruby-modules/gem/default.nix | 2 -- 5 files changed, 28 insertions(+), 21 deletions(-) create mode 100755 pkgs/development/ruby-modules/bundler-env/runtests.sh diff --git a/pkgs/development/ruby-modules/bundler-env/basic.nix b/pkgs/development/ruby-modules/bundler-env/basic.nix index 75fe7342344..80f12c14bfe 100644 --- a/pkgs/development/ruby-modules/bundler-env/basic.nix +++ b/pkgs/development/ruby-modules/bundler-env/basic.nix @@ -20,15 +20,13 @@ , ... }@args: -with ( -builtins.trace "basic functions" -import ./functions.nix { inherit lib ruby gemConfig groups; }); +with import ./functions.nix { inherit lib gemConfig; }; let importedGemset = import gemset; - filteredGemset = filterGemset importedGemset; + filteredGemset = filterGemset { inherit ruby groups; } importedGemset; configuredGemset = lib.flip lib.mapAttrs filteredGemset (name: attrs: applyGemConfigs (attrs // { inherit ruby; gemName = name; }) @@ -66,13 +64,12 @@ let buildGem = name: attrs: ( let - gemAttrs = composeGemAttrs gems name attrs; + gemAttrs = composeGemAttrs ruby gems name attrs; in if gemAttrs.type == "path" then pathDerivation gemAttrs else - builtins.trace (lib.showVal (gemAttrs.ruby or "def ruby")) - buildRubyGem gemAttrs + 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 4c1f6deb55b..5a51f4d8208 100644 --- a/pkgs/development/ruby-modules/bundler-env/functions.nix +++ b/pkgs/development/ruby-modules/bundler-env/functions.nix @@ -1,17 +1,19 @@ -{ lib, ruby, groups, gemConfig, ... }: -builtins.trace (if ruby.stubbed or false then "functions has stubbed ruby" else "functions has live ruby") +{ lib, gemConfig, ... }: rec { - filterGemset = gemset: lib.filterAttrs (name: attrs: platformMatches attrs && groupMatches attrs) gemset; + filterGemset = {ruby, groups,...}@env: gemset: lib.filterAttrs (name: attrs: platformMatches ruby attrs && groupMatches groups attrs) gemset; - platformMatches = attrs: ( + platformMatches = {rubyEngine, version, ...}@ruby: attrs: ( !(attrs ? "platforms") || + builtins.trace "ruby engine: ${rubyEngine}" + builtins.trace "ruby version ${version.majMin}" builtins.any (platform: - platform.engine == ruby.rubyEngine && - (!(platform ? "version") || platform.version == ruby.version.majMin) + builtins.trace "checking: ${platform.engine}/${platform.version}" + platform.engine == rubyEngine && + (!(platform ? "version") || platform.version == version.majMin) ) attrs.platforms ); - groupMatches = attrs: ( + groupMatches = groups: attrs: ( !(attrs ? "groups") || builtins.any (gemGroup: builtins.any (group: group == gemGroup) groups) attrs.groups ); @@ -45,7 +47,7 @@ rec { }; in res; - composeGemAttrs = gems: name: attrs: ((removeAttrs attrs ["source" "platforms"]) // attrs.source // { + composeGemAttrs = ruby: 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/runtests.sh b/pkgs/development/ruby-modules/bundler-env/runtests.sh new file mode 100755 index 00000000000..c3db8ed34af --- /dev/null +++ b/pkgs/development/ruby-modules/bundler-env/runtests.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +nix-build -E 'with import { }; callPackage ./test.nix {}' --show-trace && cat result diff --git a/pkgs/development/ruby-modules/bundler-env/test.nix b/pkgs/development/ruby-modules/bundler-env/test.nix index 28e5dbe318a..af3d81d483d 100644 --- a/pkgs/development/ruby-modules/bundler-env/test.nix +++ b/pkgs/development/ruby-modules/bundler-env/test.nix @@ -18,11 +18,10 @@ let }; testConfigs = { - groups = ["default"]; + inherit lib; gemConfig = defaultGemConfig; - confFiles = "./testConfs"; }; - functions = (import ./functions.nix ({ inherit lib; ruby = stubs.ruby; } // testConfigs)); + functions = (import ./functions.nix testConfigs); justName = bundlerEnv { name = "test"; @@ -38,7 +37,16 @@ let }; results = builtins.concatLists [ - (test.run "Filter empty gemset" {} (set: functions.filterGemset set == {})) + (test.run "Filter empty gemset" {} (set: functions.filterGemset {inherit ruby; groups = ["default"]; } set == {})) + ( let gemSet = { test = { groups = ["x" "y"]; }; }; + in + test.run "Filter matches a group" gemSet (set: functions.filterGemset {inherit ruby; groups = ["y" "z"];} set == gemSet)) + ( let gemSet = { test = { platforms = [{engine = ruby.rubyEngine; version = ruby.version;}]; }; }; + in + test.run "Filter matches on platform" gemSet (set: functions.filterGemset {inherit ruby; groups = [];} set == gemSet)) + ( let gemSet = { test = { groups = ["x" "y"]; }; }; + in + test.run "Filter excludes based on groups" gemSet (set: functions.filterGemset {inherit ruby; groups = ["a" "b"];} set == {})) (test.run "bundlerEnv { name }" justName { name = should.equal "test"; }) diff --git a/pkgs/development/ruby-modules/gem/default.nix b/pkgs/development/ruby-modules/gem/default.nix index 09dbc258876..62a9d60686f 100644 --- a/pkgs/development/ruby-modules/gem/default.nix +++ b/pkgs/development/ruby-modules/gem/default.nix @@ -74,8 +74,6 @@ let in -builtins.trace (gemName) -builtins.trace (stdenv.stubbed or false) stdenv.mkDerivation (attrs // { inherit ruby; inherit doCheck;