at 25.11-pre 1.4 kB view raw
1import ./make-test-python.nix ( 2 { lib, ... }: 3 { 4 name = "user-activation-scripts"; 5 meta = with lib.maintainers; { 6 maintainers = [ chkno ]; 7 }; 8 9 nodes.machine = { 10 system.switch.enable = true; 11 system.userActivationScripts.foo = "mktemp ~/user-activation-ran.XXXXXX"; 12 users.users.alice = { 13 initialPassword = "pass1"; 14 isNormalUser = true; 15 }; 16 systemd.user.tmpfiles.users.alice.rules = [ "r %h/file-to-remove" ]; 17 }; 18 19 testScript = '' 20 def verify_user_activation_run_count(n): 21 machine.succeed( 22 '[[ "$(find /home/alice/ -name user-activation-ran.\\* | wc -l)" == %s ]]' % n 23 ) 24 25 26 machine.wait_for_unit("multi-user.target") 27 machine.wait_for_unit("getty@tty1.service") 28 machine.wait_until_tty_matches("1", "login: ") 29 machine.send_chars("alice\n") 30 machine.wait_until_tty_matches("1", "Password: ") 31 machine.send_chars("pass1\n") 32 machine.send_chars("touch login-ok\n") 33 machine.wait_for_file("/home/alice/login-ok") 34 verify_user_activation_run_count(1) 35 36 machine.succeed("touch /home/alice/file-to-remove") 37 machine.succeed("/run/current-system/bin/switch-to-configuration test") 38 verify_user_activation_run_count(2) 39 machine.succeed("[[ ! -f /home/alice/file-to-remove ]] || false") 40 ''; 41 } 42)