117 lines
3.5 KiB
Perl
117 lines
3.5 KiB
Perl
Demonstrate what happens if a user attempts to add to modify the PATH variable
|
|
using the withenv action.
|
|
|
|
$ . ./helpers.sh
|
|
|
|
This path is system-specific so we need to be able to remove it from the output.
|
|
$ DUNE_PATH=$(dirname $(which dune))
|
|
|
|
$ make_lockdir
|
|
|
|
Make some packages so that the test package can have dependencies:
|
|
$ cat >dune.lock/hello1.pkg <<'EOF'
|
|
> (version 0.0.1)
|
|
> EOF
|
|
$ cat >dune.lock/hello2.pkg <<'EOF'
|
|
> (version 0.0.1)
|
|
> EOF
|
|
|
|
Printing out PATH without setting it:
|
|
$ cat >dune.lock/test.pkg <<'EOF'
|
|
> (version 0.0.1)
|
|
> (build
|
|
> (system "echo PATH=$PATH"))
|
|
> EOF
|
|
$ dune clean
|
|
$ PATH=$DUNE_PATH:/bin build_pkg test 2>&1 | sed -e "s#$DUNE_PATH#DUNE_PATH#"
|
|
PATH=DUNE_PATH:/bin
|
|
|
|
Setting PATH to a specific value:
|
|
$ cat >dune.lock/test.pkg <<'EOF'
|
|
> (version 0.0.1)
|
|
> (build
|
|
> (withenv
|
|
> ((= PATH /tmp/bin))
|
|
> (system "echo PATH=$PATH")))
|
|
> EOF
|
|
$ dune clean
|
|
$ PATH=$DUNE_PATH:/bin build_pkg test 2>&1 | sed -e "s#$DUNE_PATH#DUNE_PATH#"
|
|
PATH=/tmp/bin
|
|
|
|
Attempting to add a path to PATH replaces the entire PATH:
|
|
$ cat >dune.lock/test.pkg <<'EOF'
|
|
> (version 0.0.1)
|
|
> (build
|
|
> (withenv
|
|
> ((+= PATH /tmp/bin))
|
|
> (system "echo PATH=$PATH")))
|
|
> EOF
|
|
$ dune clean
|
|
$ PATH=$DUNE_PATH:/bin build_pkg test 2>&1 | sed -e "s#$DUNE_PATH#DUNE_PATH#"
|
|
PATH=/tmp/bin:DUNE_PATH:/bin
|
|
|
|
Try adding multiple paths to PATH:
|
|
$ cat >dune.lock/test.pkg <<'EOF'
|
|
> (version 0.0.1)
|
|
> (build
|
|
> (withenv
|
|
> ((+= PATH /tmp/bin)
|
|
> (+= PATH /foo/bin)
|
|
> (+= PATH /bar/bin))
|
|
> (system "echo PATH=$PATH")))
|
|
> EOF
|
|
$ dune clean
|
|
$ PATH=$DUNE_PATH:/bin build_pkg test 2>&1 | sed -e "s#$DUNE_PATH#DUNE_PATH#"
|
|
PATH=/bar/bin:/foo/bin:/tmp/bin:DUNE_PATH:/bin
|
|
|
|
Printing out PATH without setting it when the package has a dependency:
|
|
$ cat >dune.lock/test.pkg <<'EOF'
|
|
> (version 0.0.1)
|
|
> (depends hello1 hello2)
|
|
> (build
|
|
> (system "echo PATH=$PATH"))
|
|
> EOF
|
|
$ dune clean
|
|
$ OCAMLRUNPARAM=b PATH=$DUNE_PATH:/bin build_pkg test 2>&1 | sed -e "s#$DUNE_PATH#DUNE_PATH#"
|
|
PATH=$TESTCASE_ROOT/_build/_private/default/.pkg/hello2/target/bin:$TESTCASE_ROOT/_build/_private/default/.pkg/hello1/target/bin:DUNE_PATH:/bin
|
|
|
|
Setting PATH to a specific value:
|
|
$ cat >dune.lock/test.pkg <<'EOF'
|
|
> (version 0.0.1)
|
|
> (depends hello1 hello2)
|
|
> (build
|
|
> (withenv
|
|
> ((= PATH /tmp/bin))
|
|
> (system "echo PATH=$PATH")))
|
|
> EOF
|
|
$ dune clean
|
|
$ PATH=$DUNE_PATH:/bin build_pkg test 2>&1 | sed -e "s#$DUNE_PATH#DUNE_PATH#"
|
|
PATH=/tmp/bin
|
|
|
|
Attempting to add a path to PATH replaces the entire PATH:
|
|
$ cat >dune.lock/test.pkg <<'EOF'
|
|
> (version 0.0.1)
|
|
> (depends hello1 hello2)
|
|
> (build
|
|
> (withenv
|
|
> ((+= PATH /tmp/bin))
|
|
> (system "echo PATH=$PATH")))
|
|
> EOF
|
|
$ dune clean
|
|
$ PATH=$DUNE_PATH:/bin build_pkg test 2>&1 | sed -e "s#$DUNE_PATH#DUNE_PATH#"
|
|
PATH=/tmp/bin:$TESTCASE_ROOT/_build/_private/default/.pkg/hello2/target/bin:$TESTCASE_ROOT/_build/_private/default/.pkg/hello1/target/bin:DUNE_PATH:/bin
|
|
|
|
Try adding multiple paths to PATH:
|
|
$ cat >dune.lock/test.pkg <<'EOF'
|
|
> (version 0.0.1)
|
|
> (depends hello1 hello2)
|
|
> (build
|
|
> (withenv
|
|
> ((+= PATH /tmp/bin)
|
|
> (+= PATH /foo/bin)
|
|
> (+= PATH /bar/bin))
|
|
> (system "echo PATH=$PATH")))
|
|
> EOF
|
|
$ dune clean
|
|
$ PATH=$DUNE_PATH:/bin build_pkg test 2>&1 | sed -e "s#$DUNE_PATH#DUNE_PATH#"
|
|
PATH=/bar/bin:/foo/bin:/tmp/bin:$TESTCASE_ROOT/_build/_private/default/.pkg/hello2/target/bin:$TESTCASE_ROOT/_build/_private/default/.pkg/hello1/target/bin:DUNE_PATH:/bin
|