ood_core 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac5caf10cd563acf0e8ef6a4b7d421b5718dc097
4
- data.tar.gz: c9e401652e388868a2d583751ef94d50ccb2f22a
3
+ metadata.gz: 9190913080e7b7448422cca14c7687a78dc32c65
4
+ data.tar.gz: 9afbd8380ad02e09840274c20e1f10d5c36569ad
5
5
  SHA512:
6
- metadata.gz: db745be6e2bcc4a7c4bfcd31d0a47c50bb948be84d24c2bc5f45c7bab6bbf46e22d82ed86120087ce6c0e6d554d323acef53b4adde3ffc7eb801216cc419f986
7
- data.tar.gz: '096513b3c128b32c81b19784ef56164ef74e158dbd72d37b47d51063cd6b89daac03a00abf632421cf4e3687390930b5bb3c3771b5eb7290c91fb54a2757bf21'
6
+ metadata.gz: 7728af206991073f9f32bcb12a8afa1b278899e62b7b0560ae813d6bdd6d97ae6ae7b872c39cc1be30afeb6054b42bfd6661b41950e0a58f3542253fcbff6163
7
+ data.tar.gz: efea743a3f4cf18d0beed8ad22c9934206ca60e5e351f01ef555a028d370f422fa55ecfd91a1f06d3e447692a1395ad5c0de43697c03fb766741750818f24aca
@@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ## [Unreleased]
9
+ ## [0.9.1] - 2019-05-07
10
+ ### Added
11
+ - Added logic to `OodCore::Job::ArrayIds` to return an empty array when the array request is invalid
12
+
9
13
  ## [0.9.0] - 2019-05-04
10
14
  ### Added
11
15
  - Job array support for LSF and PBSPro
@@ -177,7 +181,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
177
181
  ### Added
178
182
  - Initial release!
179
183
 
180
- [Unreleased]: https://github.com/OSC/ood_core/compare/v0.9.0...HEAD
184
+ [Unreleased]: https://github.com/OSC/ood_core/compare/v0.9.1...HEAD
185
+ [0.9.1]: https://github.com/OSC/ood_core/compare/v0.9.0...v0.9.1
181
186
  [0.9.0]: https://github.com/OSC/ood_core/compare/v0.8.0...v0.9.0
182
187
  [0.8.0]: https://github.com/OSC/ood_core/compare/v0.7.1...v0.8.0
183
188
  [0.7.1]: https://github.com/OSC/ood_core/compare/v0.7.0...v0.7.1
@@ -1,19 +1,24 @@
1
1
  # Builds a sorted array of job ids given a job array spec string
2
- #
2
+ #
3
3
  # Job array spec strings:
4
4
  # 1 Single id
5
5
  # 1-10 Range
6
6
  # 1-10:2 Range with step
7
7
  # 1-10,13 Compound (range with single id)
8
- #
8
+ #
9
9
  # Note that Ranges are expected to be inclusive
10
10
  module OodCore
11
11
  module Job
12
12
  class ArrayIds
13
+ class Error < StandardError ; end
14
+
13
15
  attr_reader :ids
14
16
  def initialize(spec_string)
15
17
  @ids = []
16
- parse_spec_string(spec_string)
18
+ begin
19
+ parse_spec_string(spec_string) if spec_string
20
+ rescue Error
21
+ end
17
22
  end
18
23
 
19
24
  protected
@@ -24,7 +29,9 @@ module OodCore
24
29
  end
25
30
 
26
31
  def get_components(spec_string)
27
- discard_percent_modifier(spec_string).split(',')
32
+ base = discard_percent_modifier(spec_string)
33
+ raise Error unless base
34
+ base.split(',')
28
35
  end
29
36
 
30
37
  # A few adapters use percent to define an arrays maximum number of
@@ -34,22 +41,37 @@ module OodCore
34
41
  end
35
42
 
36
43
  def process_component(component)
37
- is_range?(component) ? get_range(component) : [ component.to_i ]
44
+ if is_range?(component)
45
+ get_range(component)
46
+ elsif numbers_valid?([component])
47
+ [ component.to_i ]
48
+ else
49
+ raise Error
50
+ end
38
51
  end
39
52
 
40
53
  def get_range(component)
41
54
  raw_range, raw_step = component.split(':')
42
- start, stop = raw_range.split('-').map(&:to_i)
43
- range = Range.new(start, stop)
55
+ start, stop = raw_range.split('-')
56
+ raise Error unless numbers_valid?(
57
+ # Only include Step if it is not nil
58
+ [start, stop].tap { |a| a << raw_step if raw_step }
59
+ )
60
+ range = Range.new(start.to_i, stop.to_i)
44
61
  step = raw_step.to_i
45
62
  step = 1 if step == 0
46
-
63
+
47
64
  range.step(step).to_a
48
65
  end
49
66
 
50
67
  def is_range?(component)
51
68
  component.include?('-')
52
69
  end
70
+
71
+ # Protect against Ruby's String#to_i returning 0 for arbitrary strings
72
+ def numbers_valid?(numbers)
73
+ numbers.all? { |str| /^[0-9]+$/ =~ str }
74
+ end
53
75
  end
54
76
  end
55
- end
77
+ end
@@ -1,4 +1,4 @@
1
1
  module OodCore
2
2
  # The current version of {OodCore}
3
- VERSION = "0.9.0"
3
+ VERSION = "0.9.1"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ood_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Franz
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2019-05-03 00:00:00.000000000 Z
13
+ date: 2019-05-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: ood_support