Unverified Commit e1843587 authored by Robert Hensing's avatar Robert Hensing Committed by GitHub
Browse files

Merge pull request #326430 from tweag/formatting-rebuild-fixes

Prevent some rebuilds for future Nix reformats
parents 9bb57f03 8f425c25
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -542,21 +542,21 @@ checkConfigOutput '^"pear\\npear"$' config.twice.raw ./merge-module-with-key.nix

# Declaration positions
# Line should be present for direct options
checkConfigOutput '^10$' options.imported.line10.declarationPositions.0.line ./declaration-positions.nix
checkConfigOutput '/declaration-positions.nix"$' options.imported.line10.declarationPositions.0.file ./declaration-positions.nix
checkConfigOutput '^14$' options.imported.line14.declarationPositions.0.line ./declaration-positions.nix
checkConfigOutput '/declaration-positions.nix"$' options.imported.line14.declarationPositions.0.file ./declaration-positions.nix
# Generated options may not have line numbers but they will at least get the
# right file
checkConfigOutput '/declaration-positions.nix"$' options.generated.line18.declarationPositions.0.file ./declaration-positions.nix
checkConfigOutput '^null$' options.generated.line18.declarationPositions.0.line ./declaration-positions.nix
checkConfigOutput '/declaration-positions.nix"$' options.generated.line22.declarationPositions.0.file ./declaration-positions.nix
checkConfigOutput '^null$' options.generated.line22.declarationPositions.0.line ./declaration-positions.nix
# Submodules don't break it
checkConfigOutput '^39$' config.submoduleLine34.submodDeclLine39.0.line ./declaration-positions.nix
checkConfigOutput '/declaration-positions.nix"$' config.submoduleLine34.submodDeclLine39.0.file ./declaration-positions.nix
checkConfigOutput '^45$' config.submoduleLine38.submodDeclLine45.0.line ./declaration-positions.nix
checkConfigOutput '/declaration-positions.nix"$' config.submoduleLine38.submodDeclLine45.0.file ./declaration-positions.nix
# New options under freeform submodules get collected into the parent submodule
# (consistent with .declarations behaviour, but weird; notably appears in system.build)
checkConfigOutput '^34|23$' options.submoduleLine34.declarationPositions.0.line ./declaration-positions.nix
checkConfigOutput '^34|23$' options.submoduleLine34.declarationPositions.1.line ./declaration-positions.nix
checkConfigOutput '^38|27$' options.submoduleLine38.declarationPositions.0.line ./declaration-positions.nix
checkConfigOutput '^38|27$' options.submoduleLine38.declarationPositions.1.line ./declaration-positions.nix
# nested options work
checkConfigOutput '^30$' options.nested.nestedLine30.declarationPositions.0.line ./declaration-positions.nix
checkConfigOutput '^34$' options.nested.nestedLine34.declarationPositions.0.line ./declaration-positions.nix

cat <<EOF
====== module tests ======
+19 −11
Original line number Diff line number Diff line
{ lib, options, ... }:
let discardPositions = lib.mapAttrs (k: v: v);
let
  discardPositions = lib.mapAttrs (k: v: v);
in
# unsafeGetAttrPos is unspecified best-effort behavior, so we only want to consider this test on an evaluator that satisfies some basic assumptions about this function.
assert builtins.unsafeGetAttrPos "a" { a = true; } != null;
assert builtins.unsafeGetAttrPos "a" (discardPositions { a = true; }) == null;
assert
  builtins.unsafeGetAttrPos "a" (discardPositions {
    a = true;
  }) == null;
{
  imports = [
    {
      options.imported.line10 = lib.mkOption {
      options.imported.line14 = lib.mkOption {
        type = lib.types.int;
      };

@@ -15,35 +19,39 @@ assert builtins.unsafeGetAttrPos "a" (discardPositions { a = true; }) == null;
      # programs.firefox.nativeMessagingHosts.ff2mpv. We don't expect to get
      # line numbers for these, but we can fall back on knowing the file.
      options.generated = discardPositions {
        line18 = lib.mkOption {
        line22 = lib.mkOption {
          type = lib.types.int;
        };
      };

      options.submoduleLine34.extraOptLine23 = lib.mkOption {
      options.submoduleLine38.extraOptLine27 = lib.mkOption {
        default = 1;
        type = lib.types.int;
      };
    }
  ];

  options.nested.nestedLine30 = lib.mkOption {
  options.nested.nestedLine34 = lib.mkOption {
    type = lib.types.int;
  };

  options.submoduleLine34 = lib.mkOption {
  options.submoduleLine38 = lib.mkOption {
    default = { };
    type = lib.types.submoduleWith {
      modules = [
        ({ options, ... }: {
          options.submodDeclLine39 = lib.mkOption { };
        })
        (
          { options, ... }:
          {
            options.submodDeclLine45 = lib.mkOption { };
          }
        )
        { freeformType = with lib.types; lazyAttrsOf (uniq unspecified); }
      ];
    };
  };

  config = {
    submoduleLine34.submodDeclLine39 = (options.submoduleLine34.type.getSubOptions [ ]).submodDeclLine39.declarationPositions;
    submoduleLine38.submodDeclLine45 =
      (options.submoduleLine38.type.getSubOptions [ ]).submodDeclLine45.declarationPositions;
  };
}
+21 −12
Original line number Diff line number Diff line
@@ -6,14 +6,23 @@ let
  generated = callPackage <localpkgs/pkgs/applications/editors/vim/plugins/generated.nix> {
    inherit buildNeovimPlugin buildVimPlugin;
  } { } { };
  hasChecksum = value:
    lib.isAttrs value && lib.hasAttrByPath ["src" "outputHash"] value;
  getChecksum = name: value:
    if hasChecksum value then {
  hasChecksum =
    value:
    lib.isAttrs value
    && lib.hasAttrByPath [
      "src"
      "outputHash"
    ] value;
  getChecksum =
    name: value:
    if hasChecksum value then
      {
        submodules = value.src.fetchSubmodules or false;
        sha256 = value.src.outputHash;
        rev = value.src.rev;
    } else null;
      }
    else
      null;
  checksums = lib.mapAttrs getChecksum generated;
in
lib.filterAttrs (n: v: v != null) checksums
+1 −0
Original line number Diff line number Diff line
Just some text
+2 −2
Original line number Diff line number Diff line
@@ -18,8 +18,8 @@
  norefsDup = writeText "hi" "hello";
  helloRef = writeText "hi" "hello ${hello}";
  helloRefDup = writeText "hi" "hello ${hello}";
  path = ./samples.nix;
  pathLike.outPath = ./samples.nix;
  path = ./apath.txt;
  pathLike.outPath = ./apath.txt;
  helloFigletRef = writeText "hi" "hello ${hello} ${figlet}";
  selfRef = runCommand "self-ref-1" { } "echo $out >$out";
  selfRef2 = runCommand "self-ref-2" { } ''echo "${figlet}, $out" >$out'';
Loading