One could declare it, but it was unceremoniously ignored.
A "localhost/" image was created with pretty much nothing in it
and it couldn't be launched.
The cause was services.<name>.service.image being always set
and subsequently thugs services.<name>.image.nixBuild being truthy.
That would build an image and write the services.<name>.image field
in the docker-compose.json. It leads to the build.context being
ignored and the service failing.
This was solved by only writing services.<name>.service.image when
services.<name>.service.build.context is not set.
services.<name>.image.nixBuild is additionally set to false when
the context is set.
Related to #208
to ensure that the subtests defined in tests/arion-test/default.nix do
not inadvertently re-use the arion-compose.nix, arion-pkgs.nix, etc. set
up during the _previous_ subtest.
Previously, each subtest attempted to clean itself up by doing
the following:
cd work && [...snip...] && rm -rf work
This removes the directory "work/work", while leaving "work" itself
intact. Subsequent subtests would then run:
cp -r ${../../examples/some-example} work
thereby copying the contents of "some-example" into "work/work" rather
than into "work".
As a result, all subtests but the first simply reapplied the Arion
configuration set up by the first subtest, because this configuration
persisted within the "work" directory used as the working directory for
"arion up", etc.
This commit corrects the issue by:
1. Removing "work" rather than "work/work", and
2. Adding certain flags to the "cp" invocation to ensure it reliably
copies files into "work" rather than "work/work": (a) "-f"
("--force"), to overwrite destination files if they already
exist, and (b) "-T" ("--no-target-directory") to copy the
*contents* of the source directory to "work" rather than copying
the source directory itself as a subdirectory of "work".
Additionally, this commit factors out code common to all subtests into a
reusable subtest generator coderef.
Also adds some documentation to celebrate that we can now - with ease - verbally
distinguish between composition-level modules and service-level modules.