This avoids setting log and pid file in paster_args so that with
GALAXY_RUN_ALL they can be set individually, but ensures they are set
when running paster otherwise.
The tool wouldn't load after 8af243c176 and that caused the relevant tests to "SKIP" instead of failing outright.
./run_tests.sh -api test/api/test_tools.py:ToolsTestCase.test_map_over_collection_type_source
This reverts commit 91e97b6096.
The commit to revert causes
https://github.com/galaxyproject/galaxy/issues/6219, where the
`optional="True"` flag is not repected anymore. This is because we raise
an exception before checking that `value` may be legitimately `None`.
Fix handling comparison of older hashes in Python 2 and fix the hanlding of both for Python 3.
The previous iteration gave me some errors in Python 3, I brought in and adapted @mvdbeek's Python 3 fixes to fix these:
```
======================================================================
ERROR: test_security_passwords.test_hash_and_check
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/john/workspace/galaxy-lib/.tox/py34/lib/python3.4/site-packages/nose/case.py", line 198, in runTest
self.test(*self.arg)
File "/Users/john/workspace/galaxy-lib/tests/test_security_passwords.py", line 12, in test_hash_and_check
simple_pass_hash = passwords.hash_password(simple_pass)
File "/Users/john/workspace/galaxy-lib/galaxy/security/passwords.py", line 21, in hash_password
return hash_password_PBKDF2(password)
File "/Users/john/workspace/galaxy-lib/galaxy/security/passwords.py", line 44, in hash_password_PBKDF2
hashed = pbkdf2_bin(smart_str(password), salt, COST_FACTOR, KEY_LENGTH, getattr(hashlib, HASH_FUNCTION))
File "/Users/john/workspace/galaxy-lib/galaxy/security/passwords.py", line 78, in pbkdf2_bin
rv = u = _pseudorandom(salt + _pack_int(block))
File "/Users/john/workspace/galaxy-lib/galaxy/security/passwords.py", line 75, in _pseudorandom
return [ord(_) for _ in h.digest()]
File "/Users/john/workspace/galaxy-lib/galaxy/security/passwords.py", line 75, in <listcomp>
return [ord(_) for _ in h.digest()]
TypeError: ord() expected string of length 1, but int found
======================================================================
ERROR: test_security_passwords.test_hash_consistent
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/john/workspace/galaxy-lib/.tox/py34/lib/python3.4/site-packages/nose/case.py", line 198, in runTest
self.test(*self.arg)
File "/Users/john/workspace/galaxy-lib/tests/test_security_passwords.py", line 38, in test_hash_consistent
assert passwords.check_password(simple_pass, simple_pass_hash)
File "/Users/john/workspace/galaxy-lib/galaxy/security/passwords.py", line 30, in check_password
if check_password_PBKDF2(guess, hashed):
File "/Users/john/workspace/galaxy-lib/galaxy/security/passwords.py", line 53, in check_password_PBKDF2
hashed_guess = pbkdf2_bin(smart_str(guess), salt, int(cost_factor), KEY_LENGTH, getattr(hashlib, hash_function))
File "/Users/john/workspace/galaxy-lib/galaxy/security/passwords.py", line 78, in pbkdf2_bin
rv = u = _pseudorandom(salt + _pack_int(block))
TypeError: Can't convert 'bytes' object to str implicitly
```
Added tests that all now pass in Python 3 - including generating some passwords in Python 3 and verifying they pass when checked in Python 2 and vice versa.
Fix the following traceback:
```
galaxy.jobs.runners.slurm ERROR 2018-05-22 13:01:07,050 (1024816/14094939) Failure in SLURM _complete_terminal_job(), job final state will be: failed
Traceback (most recent call last):
File "/tgac/services/galaxy/prod/galaxy/lib/galaxy/jobs/runners/slurm.py", line 86, in _complete_terminal_job
slurm_state = _get_slurm_state()
File "/tgac/services/galaxy/prod/galaxy/lib/galaxy/jobs/runners/slurm.py", line 81, in _get_slurm_state
job_info_dict = dict([out_param.split('=', 1) for out_param in stdout.split()])
ValueError: dictionary update sequence element #52 has length 1; 2 is required
```