mte/unikernel/duniverse/dune_/test/blackbox-tests/test-cases/depend-on/dep-on-alias.t

84 lines
2 KiB
Perl
Raw Normal View History

2025-11-11 02:07:51 +01:00
$ mkdir a
$ cd a
$ cat >dune-project <<EOF
> (lang dune 3.0)
> (expand_aliases_in_sandbox)
> EOF
$ echo old-contents > x
$ cat >dune <<EOF
> (alias
> (name a)
> (deps x))
> (rule
> (alias b)
> (deps (alias a))
> (action (system "printf \"running b: \"; cat x")))
> (rule
> (deps (alias a))
> (action
> (progn
> (system "printf \"running b: \"; cat x")
> (with-stdout-to b (system "cat x")))))
> EOF
$ dune build @b
running b: old-contents
$ dune build @b
$ echo new-contents > x
$ dune build @b
running b: new-contents
^ dune does re-run the action when a dependency declared
via an alias changes.
And the path does appear in the sandbox:
$ dune build @b --sandbox copy 2>&1 | grep -v 'cd _build/.sandbox'
running b: new-contents
However, this is only since 3.0, before that aliases where not
expanded when creating the sandbox:
$ echo '(lang dune 2.8)' > dune-project
$ dune clean
$ dune build @b --sandbox copy 2>&1 | grep -v 'cd _build/.sandbox'
File "dune", lines 4-7, characters 0-86:
4 | (rule
5 | (alias b)
6 | (deps (alias a))
7 | (action (system "printf \"running b: \"; cat x")))
running b: cat: x: No such file or directory
$ cat >dune-project <<EOF
> (lang dune 3.0)
> (expand_aliases_in_sandbox)
> EOF
Now test that including an alias into another alias includes its expansion:
$ cat >dune <<EOF
> (alias
> (name a0)
> (deps x))
> (alias
> (name a)
> (deps (alias a0)))
> (rule
> (alias b)
> (deps (alias a))
> (action (system "printf \"running b: \"; cat x")))
> (rule
> (deps (alias a))
> (action
> (progn
> (system "printf \"running b: \"; cat x")
> (with-stdout-to b (system "cat x")))))
> EOF
$ rm -r _build
$ echo old-contents > x
$ dune build @b
running b: old-contents
$ dune build @b
$ echo new-contents > x
$ dune build @b
running b: new-contents
The path still does appear in the sandbox:
$ dune build @b --sandbox copy 2>&1 | grep -v 'cd _build/.sandbox'
running b: new-contents