1import ./make-test-python.nix (
2 { pkgs, ... }:
3 {
4 name = "renovate";
5 meta.maintainers = with pkgs.lib.maintainers; [
6 marie
7 natsukium
8 ];
9
10 nodes.machine =
11 { config, ... }:
12 {
13 services.renovate = {
14 enable = true;
15 settings = {
16 platform = "gitea";
17 endpoint = "http://localhost:3000";
18 autodiscover = true;
19 gitAuthor = "Renovate <renovate@example.com>";
20 };
21 credentials = {
22 RENOVATE_TOKEN = "/etc/renovate-token";
23 };
24 };
25 environment.systemPackages = [
26 config.services.forgejo.package
27 pkgs.tea
28 pkgs.git
29 ];
30 services.forgejo = {
31 enable = true;
32 settings.server.HTTP_PORT = 3000;
33 };
34 # Uncomment the next line to lint service scripts (Note: breaks VM startup; see #373166)
35 #systemd.enableStrictShellChecks = true;
36 };
37
38 testScript = ''
39 def gitea(command):
40 return machine.succeed(f"cd /var/lib/forgejo && sudo --user=forgejo GITEA_WORK_DIR=/var/lib/forgejo GITEA_CUSTOM=/var/lib/forgejo/custom gitea {command}")
41
42 machine.wait_for_unit("forgejo.service")
43 machine.wait_for_open_port(3000)
44
45 machine.systemctl("stop forgejo.service")
46
47 gitea("admin user create --username meow --email meow@example.com --password meow")
48
49 machine.systemctl("start forgejo.service")
50 machine.wait_for_unit("forgejo.service")
51 machine.wait_for_open_port(3000)
52
53 accessToken = gitea("admin user generate-access-token --raw --username meow --scopes all | tr -d '\n'")
54
55 machine.succeed(f"tea login add --name default --user meow --token '{accessToken}' --password meow --url http://localhost:3000")
56 machine.succeed("tea repo create --name kitty --init")
57 machine.succeed("git config --global user.name Meow")
58 machine.succeed("git config --global user.email meow@example.com")
59 machine.succeed(f"git clone http://meow:{accessToken}@localhost:3000/meow/kitty.git /tmp/kitty")
60 machine.succeed("echo '{ \"name\": \"meow\", \"version\": \"0.1.0\" }' > /tmp/kitty/package.json")
61 machine.succeed("git -C /tmp/kitty add /tmp/kitty/package.json")
62 machine.succeed("git -C /tmp/kitty commit -m 'add package.json'")
63 machine.succeed("git -C /tmp/kitty push origin")
64
65 machine.succeed(f"echo '{accessToken}' > /etc/renovate-token")
66 machine.systemctl("start --wait renovate.service")
67
68 machine.succeed("tea pulls list --repo meow/kitty | grep 'Configure Renovate'")
69 machine.succeed("tea pulls merge --repo meow/kitty 1")
70
71 machine.systemctl("start --wait renovate.service")
72 '';
73 }
74)