1{
2 pkgs,
3 lib,
4 stdenv,
5 ...
6}:
7
8let
9 failures = lib.runTests {
10 # Merging two non-list definitions must still result in an error
11 # about a conflicting definition.
12 test-unitOption-merging-non-lists-conflict =
13 let
14 nixos = pkgs.nixos {
15 system.stateVersion = lib.trivial.release;
16 systemd.services.systemd-test-nixos = {
17 serviceConfig = lib.mkMerge [
18 { StateDirectory = "foo"; }
19 { StateDirectory = "bar"; }
20 ];
21 };
22 };
23 in
24 {
25 expr =
26 (builtins.tryEval (nixos.config.systemd.services.systemd-test-nixos.serviceConfig.StateDirectory))
27 .success;
28 expected = false;
29 };
30
31 # Merging must lift non-list definitions to a list
32 # if at least one of them is a list.
33 test-unitOption-merging-list-non-list-append =
34 let
35 nixos = pkgs.nixos {
36 system.stateVersion = lib.trivial.release;
37 systemd.services.systemd-test-nixos = {
38 serviceConfig = lib.mkMerge [
39 { StateDirectory = "foo"; }
40 { StateDirectory = [ "bar" ]; }
41 ];
42 };
43 };
44 in
45 {
46 expr = nixos.config.systemd.services.systemd-test-nixos.serviceConfig.StateDirectory;
47 expected = [
48 "foo"
49 "bar"
50 ];
51 };
52 };
53in
54
55lib.optional (failures != [ ]) (
56 throw "The following systemd unit tests failed: ${lib.generators.toPretty { } failures}"
57)