1# This test checks charliecloud image construction and run
2
3{ pkgs, ... }:
4let
5
6 dockerfile = pkgs.writeText "Dockerfile" ''
7 FROM nix
8 RUN mkdir /home /tmp
9 RUN touch /etc/passwd /etc/group
10 CMD ["true"]
11 '';
12
13in
14{
15 name = "charliecloud";
16 meta = with pkgs.lib.maintainers; {
17 maintainers = [ bzizou ];
18 };
19
20 nodes = {
21 host =
22 { ... }:
23 {
24 environment.systemPackages = [ pkgs.charliecloud ];
25 virtualisation.docker.enable = true;
26 users.users.alice = {
27 isNormalUser = true;
28 extraGroups = [ "docker" ];
29 };
30 };
31 };
32
33 testScript = ''
34 host.start()
35 host.wait_for_unit("docker.service")
36 host.succeed(
37 'su - alice -c "docker load --input=${pkgs.dockerTools.examples.nix}"'
38 )
39 host.succeed(
40 "cp ${dockerfile} /home/alice/Dockerfile"
41 )
42 host.succeed('su - alice -c "ch-build -t hello ."')
43 host.succeed('su - alice -c "ch-builder2tar hello /var/tmp"')
44 host.succeed('su - alice -c "ch-tar2dir /var/tmp/hello.tar.gz /var/tmp"')
45 host.succeed('su - alice -c "ch-run /var/tmp/hello -- echo Running_From_Container_OK"')
46 '';
47}