Testing the translation of the setenv field of an opam file into the dune lock dir.

  $ mkrepo

Make a package with a setenv. We also test all the kinds of env updates here except for
=+= which isn't used at all in the wild. 

  $ mkpkg with-setenv <<EOF
  > setenv: [
  >  [EXPORTED_ENV_VAR = "Hello from the other package!"]
  >  [prepend_with_trailing_sep := "Prepended with trailing sep"]
  >  [prepend_without_trailing_sep += "Prepended without trailing sep"]
  >  [append_without_leading_sep =+ "Appended without leading sep"]
  >  [append_with_leading_sep =: "Appended with leading sep"]
  > ]
  > EOF

Make another package that depends on that and outputs the exported env vars
  $ mkpkg deps-on-with-setenv <<'EOF'
  > depends: [ "with-setenv" ]
  > build: [
  >  [ "sh" "-c" "echo $EXPORTED_ENV_VAR" ]
  >  [ "sh" "-c" "echo $prepend_without_trailing_sep" ]
  >  [ "sh" "-c" "echo $prepend_with_trailing_sep" ]
  >  [ "sh" "-c" "echo $append_without_leading_sep" ]
  >  [ "sh" "-c" "echo $append_with_leading_sep" ]
  > ]
  > EOF
  $ solve deps-on-with-setenv
  Solution for dune.lock:
  - deps-on-with-setenv.0.0.1
  - with-setenv.0.0.1
The exported env from the first package should be in the lock dir.

  $ cat ${default_lock_dir}/with-setenv.0.0.1.pkg
  (version 0.0.1)
  
  (exported_env
   (= EXPORTED_ENV_VAR "Hello from the other package!")
   (:= prepend_with_trailing_sep "Prepended with trailing sep")
   (+= prepend_without_trailing_sep "Prepended without trailing sep")
   (=+ append_without_leading_sep "Appended without leading sep")
   (=: append_with_leading_sep "Appended with leading sep"))
  $ cat ${default_lock_dir}/deps-on-with-setenv.0.0.1.pkg
  (version 0.0.1)
  
  (build
   (all_platforms
    ((action
      (progn
       (run sh -c "echo $EXPORTED_ENV_VAR")
       (run sh -c "echo $prepend_without_trailing_sep")
       (run sh -c "echo $prepend_with_trailing_sep")
       (run sh -c "echo $append_without_leading_sep")
       (run sh -c "echo $append_with_leading_sep"))))))
  
  (depends
   (all_platforms (with-setenv)))

When building the second package the exported env vars from the first package should be
available and all the env updates should be applied correctly.

The output of opam when building the equivalent package is:

Hello from the other package!
Prepended without trailing sep
Prepended with trailing sep:
Appended without leading sep
:Appended with leading sep

  $ EXPORTED_ENV_VAR="I have not been exported yet." \
  > prepend_without_trailing_sep="foo:bar" \
  > prepend_with_trailing_sep="foo:bar" \
  > append_without_leading_sep="foo:bar" \
  > append_with_leading_sep="foo:bar" \
  > build_pkg deps-on-with-setenv 
  Hello from the other package!
  Prepended without trailing sep
  Prepended with trailing sep:
  Appended without leading sep
  :Appended with leading sep

We now make a third package that updates the env in a similar way, in order to see the
difference between a propagated export_env versus the initial env.

  $ mkpkg with-setenv-2 <<EOF
  > depends: [ "with-setenv" ]
  > setenv: [
  >  [EXPORTED_ENV_VAR = "Hello from the second package!"]
  >  [prepend_with_trailing_sep := "Prepended 2nd time with sep"]
  >  [prepend_without_trailing_sep += "Prepended 2nd time without trailing sep"]
  >  [append_without_leading_sep =+ "Appended 2nd time without leading sep"]
  >  [append_with_leading_sep =: "Appended 2nd time with leading sep"]
  > ]
  > EOF
  $ mkpkg deps-on-with-setenv-2 <<'EOF'
  > depends: [ "with-setenv-2" ]
  > build: [
  >  [ "sh" "-c" "echo $EXPORTED_ENV_VAR" ]
  >  [ "sh" "-c" "echo $prepend_without_trailing_sep" ]
  >  [ "sh" "-c" "echo $prepend_with_trailing_sep" ]
  >  [ "sh" "-c" "echo $append_without_leading_sep" ]
  >  [ "sh" "-c" "echo $append_with_leading_sep" ]
  > ]
  > EOF
  $ solve deps-on-with-setenv-2
  Solution for dune.lock:
  - deps-on-with-setenv-2.0.0.1
  - with-setenv.0.0.1
  - with-setenv-2.0.0.1
We can now observe how the environment updates are applied a second time.

We currently have the following issues:
- The leading and trailing separators are missing.
- The initial environment is missing.
- The order of applying environment updates is different from opam's.

The output of opam when building the equivalent package is:

Hello from the other package!
Prepended without trailing sep:Prepended 2nd time without trailing sep
Prepended with trailing sep:Prepended 2nd time with sep:
Appended 2nd time without leading sep:Appended without leading sep
:Appended 2nd time with leading sep:Appended with leading sep

  $ EXPORTED_ENV_VAR="I have not been exported yet." \
  > prepend_without_trailing_sep="foo:bar" \
  > prepend_with_trailing_sep="foo:bar" \
  > append_without_leading_sep="foo:bar" \
  > append_with_leading_sep="foo:bar" \
  > build_pkg deps-on-with-setenv-2
  Hello from the second package!
  Prepended 2nd time without trailing sep:Prepended without trailing sep
  Prepended 2nd time with sep:Prepended with trailing sep:
  Appended without leading sep:Appended 2nd time without leading sep
  :Appended with leading sep:Appended 2nd time with leading sep

