cylc/cylc — pull request #843 by benfitzpatrick (2014-01-08 17:42:15+00:00)
Title: Fix releasing a suite with non-cycling tasks

#805 introduced some logic that fails for comparisons involving non-cycling cycle times (e.g. `foo.1`). This is nearly always invoked purely for cycling situations, but in two places in `scheduler.py`, `def release_suite` and `def command_purge_tree`, it will fail if there are tasks in the task pool that are not cycling tasks. This means that it is not possible to release a held suite if it has non-cycling tasks in the task pool.

We don't really test holding and releasing suites in the test battery, which is another issue that we should deal with.

This catches the `InvalidCycleTimeError` that is raised within the `def ctime_cmp` code in `cycle_time.py` - if the error arises, it reverts to comparing `int(ctime_string)` as it did before.

The change can be tested by running a suite like this:
```
[scheduling]
[[dependencies]]
graph = """
FOO:succeed-all => bar
"""
[runtime]
[[root]]
command scripting = "sleep 100"
[[FOO]]
[[foo1, foo2, foo3]]
inherit = FOO
[[bar]]
```

and holding the suite as the `foo` tasks are running. The command to release the suite will fail with an exception in current master, and will succeed using this code.

@hjoliver, please review.