teemtee / tmt

Test Management Tool
MIT License
79 stars 117 forks source link

Running `tmt run` in $HOME #299

Open pvalena opened 4 years ago

pvalena commented 4 years ago

In $HOME I run tmt init and create a plan. All works, apart from tmt run.

It gets into some kind of loop, and crashes.

Log:

[test@46f23f86df25 ~]$ tmt run -ad provision -h local
Using tree '/home/test'.
/var/tmp/tmt/run-002
Run data not found.
Enabled steps: finish, report, provision, discover, execute and prepare

/plans/helps
    discover
        workdir: /var/tmp/tmt/run-002/plans/helps/discover
        how: shell
        directory: /home/test
            Copy '/home/test' to '/var/tmp/tmt/run-002/plans/helps/discover/default/tests'.
    finish
        workdir: /var/tmp/tmt/run-002/plans/helps/finish
        summary: 0 tasks completed
Traceback (most recent call last):
  File "/usr/bin/tmt", line 10, in <module>
    tmt.cli.main()
  File "/usr/lib/python3.9/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.9/site-packages/click/core.py", line 1290, in invoke
    return _process_result(rv)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 1224, in _process_result
    value = ctx.invoke(self.result_callback, value, **ctx.params)
  File "/usr/lib/python3.9/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3.9/site-packages/click/decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/lib/python3.9/site-packages/tmt/cli.py", line 252, in finito
    context.obj.run.go()
  File "/usr/lib/python3.9/site-packages/tmt/base.py", line 910, in go
    plan.go()
  File "/usr/lib/python3.9/site-packages/tmt/base.py", line 505, in go
    step.go()
  File "/usr/lib/python3.9/site-packages/tmt/steps/discover/__init__.py", line 120, in go
    plugin.go()
  File "/usr/lib/python3.9/site-packages/tmt/steps/discover/shell.py", line 80, in go
    shutil.copytree(directory, testdir)
  File "/usr/lib64/python3.9/shutil.py", line 554, in copytree
    return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
  File "/usr/lib64/python3.9/shutil.py", line 492, in _copytree
    copytree(srcobj, dstname, symlinks, ignore, copy_function,
  File "/usr/lib64/python3.9/shutil.py", line 554, in copytree
    return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
  File "/usr/lib64/python3.9/shutil.py", line 492, in _copytree
    copytree(srcobj, dstname, symlinks, ignore, copy_function,
  File "/usr/lib64/python3.9/shutil.py", line 554, in copytree
    return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
  File "/usr/lib64/python3.9/shutil.py", line 487, in _copytree
    copytree(srcobj, dstname, symlinks, ignore,
  File "/usr/lib64/python3.9/shutil.py", line 554, in copytree
    return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
  File "/usr/lib64/python3.9/shutil.py", line 492, in _copytree
    copytree(srcobj, dstname, symlinks, ignore, copy_function,
[ . . . ]

https://gist.github.com/pvalena/75e1367dc1500d54a84f2201058061b5

psss commented 3 years ago

It's probably not a very good idea to create fmf tree and store metadata directly in the home, but that is another question. Here seems that shutil.copytree(directory, testdir) fails to copy your home directory to the workdir. Might be possibly some symlink issue? Can you reproduce the issue with the following code?

import shutil
shutil.copytree('/home/test', '/tmp/something')