Skip to content

Commit

Permalink
Prevent creating auth files when there is no suite service directory
Browse files Browse the repository at this point in the history
  • Loading branch information
kinow committed Oct 13, 2019
1 parent 17cf578 commit ddcdcb0
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 3 deletions.
5 changes: 5 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ Third alpha release of Cylc 8.
status message retries (problems that prevent message transmission are almost
never transient, and in practice job polling is the only way to recover).

### Fixes

[#3409](https://github.com/cylc/cylc-flow/pull/3409) - prevent cylc-run from
creating directories when executed for suites that do not exist.

-------------------------------------------------------------------------------
## __cylc-8.0a1 (2019-09-18)__

Expand Down
11 changes: 8 additions & 3 deletions cylc/flow/scheduler_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,13 +232,18 @@ def scheduler_cli(parser, options, args, is_restart=False):
except SuiteServiceFileError as exc:
sys.exit(exc)

suite_srv_dir = SuiteSrvFilesManager().get_suite_srv_dir(reg)

if not os.path.exists(suite_srv_dir):
sys.stderr.write(f'suite service directory not found '
f'at: {suite_srv_dir}\n')
sys.exit(1)

# Create auth files if needed.
SuiteSrvFilesManager().create_auth_files(reg)

# Extract job.sh from library, for use in job scripts.
extract_resources(
SuiteSrvFilesManager().get_suite_srv_dir(reg),
['etc/job.sh'])
extract_resources(suite_srv_dir, ['etc/job.sh'])

# Check whether a run host is explicitly specified, else select one.
if not options.host:
Expand Down
29 changes: 29 additions & 0 deletions tests/cylc-run/01-invalid-suite.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/bash
# THIS FILE IS PART OF THE CYLC SUITE ENGINE.
# Copyright (C) 2008-2019 NIWA & British Crown (Met Office) & Contributors.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#-------------------------------------------------------------------------------
# Test that ``cylc-run`` does not create directories for invalid/not existent
# suites. See https://github.com/cylc/cylc-flow/issues/3097 for more.
. "$(dirname "$0")/test_header"
#-------------------------------------------------------------------------------
set_test_number 3
#-------------------------------------------------------------------------------
INVALID_SUITE_NAME="broken-parachute-8877-mp5"
run_fail "${TEST_NAME_BASE}-run" cylc run "${INVALID_SUITE_NAME}"
grep_ok "suite service directory not found at" "${TEST_NAME_BASE}-run.stderr"
exists_fail "${HOME}/cylc-run/${INVALID_SUITE_NAME}"

exit
1 change: 1 addition & 0 deletions tests/cylc-run/test_header

0 comments on commit ddcdcb0

Please sign in to comment.