$HOME is not set in --shell-fail prompt
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
autopkgtest (Debian) |
New
|
Undecided
|
Unassigned | ||
autopkgtest (Ubuntu) |
Triaged
|
Wishlist
|
Unassigned |
Bug Description
Steps to reproduce:
pull-lp-source hello
cd hello-*
# Stick "exit 1" into debian/
dpkg-buildpackage -us -uc -S -sd -nc -d
cd ..
autopkgtest -s -B *dsc -- lxd ubuntu-daily:lunar
echo $HOME
# Actual behaviour: $HOME is unset; expected behaviour: $HOME is set
$ dpkg-query -W autopkgtest
autopkgtest 5.25ubuntu4
I tried this on sid with the null runner, and $HOME was set correctly there. This might be a consequence of the null runner not resetting the environment (as might be expected), or point to a bug specifically in the lxd runner; I'm not sure.
I did find that $HOME is set in the actual test run. But then my test-in-development started failing in other ways because $HOME was not set in the --shell-fail environment. What I expect is that the --shell-fail environment is identical; otherwise it's difficult for debugging.
Changed in autopkgtest (Ubuntu): | |
importance: | Undecided → Wishlist |
status: | Incomplete → Opinion |
status: | Opinion → Triaged |
Hello Robie,
Let me try to recap to see if I got this right. $HOME is correctly set during the actual test run (_regardless_ of --shell-fail), but in the shell you are brought to by --shell-fail $HOME is not set. You were trying to use this environment to further develop the test, but the absence of $HOME got in the way. Is this correct?
Assuming it is:
It would be nice to make --shell and --shell-fail bring to the exact environment where the test run. However at the moment autopkgtest makes no promise in this regard, and in general I don't think it can make a "hard" promise as the test run itself may have altered the system in a way that makes it impossible to recreate the same environment. (One random example: the test run alters the system hostname. How is autopkgtest going to "undo" that to recreate the environment before the test?)
As I see it --shell and --shell-fail are mostly meant to inspect the testbed system. Most of the time it is possible to re-run tests from that environment, but that's not guaranteed.
autopkgtest uses different ways to get a shell in the testbed system, depending on the virt server in use. This is likely why noticed a difference when using the null virt server.