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