mirror of
https://github.com/nix-community/dream2nix.git
synced 2024-12-23 06:21:30 +03:00
findCycles: add some unit tests
This commit is contained in:
parent
cf853080a3
commit
5e938ebb20
28
examples/dream2nix-repo-single-package/flake.nix
Normal file
28
examples/dream2nix-repo-single-package/flake.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
description = "My flake with dream2nix packages";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
dream2nix.url = "github:nix-community/dream2nix";
|
||||||
|
nixpkgs.follows = "dream2nix/nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = inputs @ {
|
||||||
|
self,
|
||||||
|
dream2nix,
|
||||||
|
nixpkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
in {
|
||||||
|
# all packages defined inside ./packages/
|
||||||
|
packages.${system}.default = nixpkgs.lib.evalModules {
|
||||||
|
modules = [];
|
||||||
|
|
||||||
|
projectRoot = ./.;
|
||||||
|
# can be changed to ".git" or "flake.nix" to get rid of .project-root
|
||||||
|
projectRootFile = "flake.nix";
|
||||||
|
packagesDir = ./packages;
|
||||||
|
packageSets.nixpkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
272
tests/nix-unit/test_findCycles/default.nix
Normal file
272
tests/nix-unit/test_findCycles/default.nix
Normal file
@ -0,0 +1,272 @@
|
|||||||
|
{
|
||||||
|
pkgs ? import <nixpkgs> {},
|
||||||
|
lib ? import <nixpkgs/lib>,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
findCycles = import ../../../lib/internal/findCycles.nix {inherit lib;};
|
||||||
|
in {
|
||||||
|
test_simple = {
|
||||||
|
expr = findCycles {
|
||||||
|
dependencyGraph = {
|
||||||
|
a.v1 = [
|
||||||
|
{
|
||||||
|
name = "b";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
b.v1 = [
|
||||||
|
{
|
||||||
|
name = "a";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
roots = {
|
||||||
|
a = "v1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
expected = {
|
||||||
|
b.v1 = [
|
||||||
|
{
|
||||||
|
name = "a";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
test_cycle_length_3 = {
|
||||||
|
expr = findCycles {
|
||||||
|
dependencyGraph = {
|
||||||
|
a.v1 = [
|
||||||
|
{
|
||||||
|
name = "b";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
b.v1 = [
|
||||||
|
{
|
||||||
|
name = "c";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
c.v1 = [
|
||||||
|
{
|
||||||
|
name = "a";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
roots = {
|
||||||
|
a = "v1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
expected = {
|
||||||
|
c.v1 = [
|
||||||
|
{
|
||||||
|
name = "a";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
test_two_roots_both_chosen = {
|
||||||
|
expr = findCycles {
|
||||||
|
dependencyGraph = {
|
||||||
|
a.v1 = [
|
||||||
|
{
|
||||||
|
name = "b";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
b.v1 = [
|
||||||
|
{
|
||||||
|
name = "a";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
c.v1 = [
|
||||||
|
{
|
||||||
|
name = "d";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
d.v1 = [
|
||||||
|
{
|
||||||
|
name = "c";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
roots = {
|
||||||
|
a = "v1";
|
||||||
|
c = "v1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
expected = {
|
||||||
|
b.v1 = [
|
||||||
|
{
|
||||||
|
name = "a";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
d.v1 = [
|
||||||
|
{
|
||||||
|
name = "c";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
test_two_roots_one_chosen = {
|
||||||
|
expr = findCycles {
|
||||||
|
dependencyGraph = {
|
||||||
|
a.v1 = [
|
||||||
|
{
|
||||||
|
name = "b";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
b.v1 = [
|
||||||
|
{
|
||||||
|
name = "a";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
c.v1 = [
|
||||||
|
{
|
||||||
|
name = "d";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
d.v1 = [
|
||||||
|
{
|
||||||
|
name = "c";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
roots = {
|
||||||
|
a = "v1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
expected = {
|
||||||
|
b.v1 = [
|
||||||
|
{
|
||||||
|
name = "a";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
test_c_visited_twice_no_cycle = {
|
||||||
|
expr = findCycles {
|
||||||
|
dependencyGraph = {
|
||||||
|
a.v1 = [
|
||||||
|
{
|
||||||
|
name = "c";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
b.v1 = [
|
||||||
|
{
|
||||||
|
name = "c";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
c.v1 = [];
|
||||||
|
};
|
||||||
|
roots = {
|
||||||
|
a = "v1";
|
||||||
|
b = "v1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
expected = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
test_two_cycles_one_root = {
|
||||||
|
expr = findCycles {
|
||||||
|
dependencyGraph = {
|
||||||
|
a.v1 = [
|
||||||
|
{
|
||||||
|
name = "c";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
b.v1 = [
|
||||||
|
{
|
||||||
|
name = "c";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
c.v1 = [
|
||||||
|
{
|
||||||
|
name = "d";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
d.v1 = [
|
||||||
|
{
|
||||||
|
name = "a";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "b";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
roots = {
|
||||||
|
a = "v1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
expected = {
|
||||||
|
d.v1 = [
|
||||||
|
{
|
||||||
|
name = "a";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
b.v1 = [
|
||||||
|
{
|
||||||
|
name = "c";
|
||||||
|
version = "v1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: fix the implementation to remove furthest edges from the root only
|
||||||
|
# test_two_cycles_two_roots = {
|
||||||
|
# expr = findCycles {
|
||||||
|
# dependencyGraph = {
|
||||||
|
# a.v1 = [
|
||||||
|
# {name = "c"; version = "v1";}
|
||||||
|
# ];
|
||||||
|
# b.v1 = [
|
||||||
|
# {name = "c"; version = "v1";}
|
||||||
|
# ];
|
||||||
|
# c.v1 = [
|
||||||
|
# {name = "d"; version = "v1";}
|
||||||
|
# ];
|
||||||
|
# d.v1 = [
|
||||||
|
# {name = "a"; version = "v1";}
|
||||||
|
# {name = "b"; version = "v1";}
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# roots = {
|
||||||
|
# a = "v1";
|
||||||
|
# b = "v1";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# expected = {
|
||||||
|
# d.v1 = [
|
||||||
|
# {name = "a"; version = "v1";}
|
||||||
|
# {name = "b"; version = "v1";}
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user