planemo icon indicating copy to clipboard operation
planemo copied to clipboard

Allow test-data to be symlink

Open mvdbeek opened this issue 6 years ago • 7 comments

At least the simple case where the test-data directory is a symlink to somewhere else fails. This might be a Galaxy issue, not sure.

mvdbeek avatar Sep 02 '18 09:09 mvdbeek

fwiw the error is:

Traceback (most recent call last):
  File "/private/var/folders/df/6xqpqpcd7h73b6jpx9t6cwhw0000gn/T/tmpmgem8dw6/galaxy-dev/test/functional/test_toolbox.py", line 88, in test_tool
    self.do_it(tool_version=tool_version, test_index=test_index)
  File "/private/var/folders/df/6xqpqpcd7h73b6jpx9t6cwhw0000gn/T/tmpmgem8dw6/galaxy-dev/test/functional/test_toolbox.py", line 41, in do_it
    verify_tool(tool_id, self.galaxy_interactor, resource_parameters=resource_parameters, test_index=test_index, tool_version=tool_version, register_job_data=register_job_data)
  File "/private/var/folders/df/6xqpqpcd7h73b6jpx9t6cwhw0000gn/T/tmpmgem8dw6/galaxy-dev/lib/galaxy/tools/verify/interactor.py", line 653, in verify_tool
    stage_data_in_history(galaxy_interactor, tool_id, testdef.test_data(), test_history)
  File "/private/var/folders/df/6xqpqpcd7h73b6jpx9t6cwhw0000gn/T/tmpmgem8dw6/galaxy-dev/lib/galaxy/tools/verify/interactor.py", line 59, in stage_data_in_history
    upload_wait = galaxy_interactor.stage_data_async(test_data, history, tool_id)
  File "/private/var/folders/df/6xqpqpcd7h73b6jpx9t6cwhw0000gn/T/tmpmgem8dw6/galaxy-dev/lib/galaxy/tools/verify/interactor.py", line 267, in stage_data_async
    file_name = self.test_data_path(tool_id, fname)
  File "/private/var/folders/df/6xqpqpcd7h73b6jpx9t6cwhw0000gn/T/tmpmgem8dw6/galaxy-dev/lib/galaxy/tools/verify/interactor.py", line 232, in test_data_path
    assert response.status_code == 200
AssertionError

mvdbeek avatar Sep 02 '18 09:09 mvdbeek

Hmm, I guess this is actually a security feature on Galaxy's side to not let the test-data be outside of the test-data dir. It would actually be handy for planemo testing when we can share input files. Would we want to make an exception for instances raised by planemo, e.g by having an environment variable or config setting that allows this ?

mvdbeek avatar Sep 02 '18 09:09 mvdbeek

On the other hand is this a realistic attack vector ? I mean you'd already need to somehow have a tool whose symlinks are manipulated, so in a sense your system is already compromised. We could instead disallow (if we don't already do this) the upload of tools that use symlinks for their test-data ?

mvdbeek avatar Sep 02 '18 09:09 mvdbeek

I've had same issue while running a test where test-data is within the folders while initiating planemo testing. Does indicate the issue is with the Galaxy instance. ?

  File "/private/var/folders/0j/h_hw9q7s3d5b8l647l097rjh261_3j/T/tmpeay_ykjw/galaxy-dev/test/functional/test_toolbox.py", line 88, in test_tool
    self.do_it(tool_version=tool_version, test_index=test_index)
  File "/private/var/folders/0j/h_hw9q7s3d5b8l647l097rjh261_3j/T/tmpeay_ykjw/galaxy-dev/test/functional/test_toolbox.py", line 41, in do_it
    verify_tool(tool_id, self.galaxy_interactor, resource_parameters=resource_parameters, test_index=test_index, tool_version=tool_version, register_job_data=register_job_data)
  File "/private/var/folders/0j/h_hw9q7s3d5b8l647l097rjh261_3j/T/tmpeay_ykjw/galaxy-dev/lib/galaxy/tools/verify/interactor.py", line 653, in verify_tool
    stage_data_in_history(galaxy_interactor, tool_id, testdef.test_data(), test_history)
  File "/private/var/folders/0j/h_hw9q7s3d5b8l647l097rjh261_3j/T/tmpeay_ykjw/galaxy-dev/lib/galaxy/tools/verify/interactor.py", line 59, in stage_data_in_history
    upload_wait = galaxy_interactor.stage_data_async(test_data, history, tool_id)
  File "/private/var/folders/0j/h_hw9q7s3d5b8l647l097rjh261_3j/T/tmpeay_ykjw/galaxy-dev/lib/galaxy/tools/verify/interactor.py", line 267, in stage_data_async
    file_name = self.test_data_path(tool_id, fname)
  File "/private/var/folders/0j/h_hw9q7s3d5b8l647l097rjh261_3j/T/tmpeay_ykjw/galaxy-dev/lib/galaxy/tools/verify/interactor.py", line 232, in test_data_path
    assert response.status_code == 200
AssertionError``` 

suhaibMo avatar Oct 03 '18 15:10 suhaibMo

Can you elaborate what you are doing ?

mvdbeek avatar Oct 04 '18 10:10 mvdbeek

Also symbolic links in the test-data dir seem not to work: https://github.com/galaxyproject/planemo/issues/857

bernt-matthias avatar Nov 24 '18 18:11 bernt-matthias

👍

I have the same issue with my repository. I used to symlink test-data because some are shared between tools. Some aren't so light :/

https://github.com/workflow4metabolomics/xcms/tree/dev/tools/xcms_fillpeaks/test-data

I have to downgrade the Galaxy version to 17.05

Not mandatory but I will be happy to get that back :)

lecorguille avatar Jan 08 '19 20:01 lecorguille

I think this is all working now.

mvdbeek avatar Oct 19 '22 15:10 mvdbeek