foreman_remote_execution 1.6.5 → 1.6.6

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
- SHA1:
3
- metadata.gz: 709d81a29ef205492bc65e2605c5f83a0223ba37
4
- data.tar.gz: 73ff87cece4feeec31c6e5e7274c0b2300d7c636
2
+ SHA256:
3
+ metadata.gz: 50fc3a3d806569cd6ef1430201210365ab43135ff49037437b5ff7d5ae26e95c
4
+ data.tar.gz: 49444e24cc7ce4d174942869a87815c7f58ac1d824493df7cba3c5f592c0dc89
5
5
  SHA512:
6
- metadata.gz: 7d3649186aad83e9e165bd5453631610ba99f0b9fffcb324ccd195bcf1a8ffec96aaddd03a08fef6ae37059f13b22701be37e85c3d7745f3b8a8d8344658def4
7
- data.tar.gz: 78cb04ccfc0e5e3d4638901e264654b87210f3b23b42c1bb170d3bc70e16666d2b8e70bcd920d0839fb1823575f8c73784bca8324fa3f633a3f3a8bbe43a52d0
6
+ metadata.gz: 221de0ed7b0c41a9451b8fc5fa5d1cc2cea6ef25b969e9b28e166ac31c971da5fdbfe624cca3006832f7618cc6e63aff674264d5d6346e83847f7fdb46aa6969
7
+ data.tar.gz: 2aa565d2f95cb0704cbc73d49aa7806489fb497a5a73c3738cc23240b8fc582667b8427f892da6a8523baaf69970fba4d343b1751e29e125a84cbba262551ef6
data/.rubocop.yml CHANGED
@@ -108,3 +108,6 @@ Metrics/AbcSize:
108
108
 
109
109
  Style/FrozenStringLiteralComment:
110
110
  Enabled: false
111
+
112
+ Layout/EmptyLineAfterGuardClause:
113
+ Enabled: false
@@ -51,17 +51,17 @@ class JobInvocationsController < ApplicationController
51
51
  def show
52
52
  @job_invocation = resource_base.includes(:template_invocations => :run_host_job_task).find(params[:id])
53
53
  @auto_refresh = @job_invocation.task.try(:pending?)
54
- hosts_base = @job_invocation.targeting.hosts.authorized(:view_hosts, Host)
54
+ @resource_base = @job_invocation.targeting.hosts.authorized(:view_hosts, Host)
55
55
  # There's no need to do the joining if we're not filtering
56
56
  unless params[:search].nil?
57
- hosts_base = hosts_base.joins(:template_invocations)
58
- .where(:template_invocations => { :job_invocation_id => @job_invocation.id})
57
+ @resource_base = @resource_base.joins(:template_invocations)
58
+ .where(:template_invocations => { :job_invocation_id => @job_invocation.id})
59
59
  end
60
- @hosts = hosts_base.search_for(params[:search], :order => params[:order] || 'name ASC').paginate(:page => params[:page])
60
+ @hosts = resource_base_search_and_page
61
61
  end
62
62
 
63
63
  def index
64
- @job_invocations = resource_base.search_for(params[:search], :order => params[:order]).paginate(:page => params[:page]).with_task.order('job_invocations.id DESC')
64
+ @job_invocations = resource_base_search_and_page.with_task.order('job_invocations.id DESC')
65
65
  end
66
66
 
67
67
  # refreshes the form
@@ -169,6 +169,25 @@ module RemoteExecutionHelper
169
169
  end
170
170
  end
171
171
 
172
+ # we assume that a line_set will always end with a line break. Sometimes however, the lines can
173
+ # be cut in the middle. This methods makes sure the cut line ends up in on line set
174
+ def normalize_line_sets(line_sets)
175
+ previous_line_break = true
176
+ line_sets.each_with_index do |line_set, index|
177
+ # if previous line_set was missing break, add the first line from next set
178
+ unless previous_line_break
179
+ first_line_pattern = /\A.*\n/
180
+ first_line = line_set['output'][first_line_pattern]
181
+ if first_line
182
+ line_sets[index - 1]['output'] << first_line
183
+ line_set['output'].sub!(first_line_pattern, '')
184
+ end
185
+ end
186
+ previous_line_break = line_set['output'] =~ /\n\Z/
187
+ end
188
+ line_sets
189
+ end
190
+
172
191
  def time_in_words_span(time)
173
192
  if time.nil?
174
193
  _('N/A')
@@ -6,6 +6,7 @@
6
6
  <thead>
7
7
  <tr>
8
8
  <th><%= sort :description, :as => _('Description') %></th>
9
+ <th class="col-md-1"><%= _('Search Query') %></th>
9
10
  <th class="col-md-1"><%= _('Status') %></th>
10
11
  <th class="col-md-1"><%= _('Succeeded') %></th>
11
12
  <th class="col-md-1"><%= _('Failed') %></th>
@@ -19,6 +20,7 @@
19
20
  <% @job_invocations.each do |invocation| %>
20
21
  <tr>
21
22
  <td><%= link_to_if_authorized invocation_description(invocation), hash_for_job_invocation_path(invocation).merge(:auth_object => invocation, :permission => :view_job_invocations, :authorizer => authorizer) %></td>
23
+ <td><%= trunc_with_tooltip(invocation&.targeting&.search_query, 15) %></td>
22
24
  <td><%= link_to_invocation_task_if_authorized(invocation) %></td>
23
25
  <td><%= invocation_result(invocation, :success_count) %></td>
24
26
  <td><%= invocation_result(invocation, :failed_count) %></td>
@@ -1,4 +1,4 @@
1
- <% output_line_set['output'].gsub("\r\n", "\n").split("\n", -1).each do |line| %>
1
+ <% output_line_set['output'].gsub("\r\n", "\n").sub(/\n\Z/, '').split("\n", -1).each do |line| %>
2
2
  <%= content_tag :div, :class => 'line ' + output_line_set['output_type'], :data => { :timestamp => output_line_set['timestamp'] } do %>
3
3
 
4
4
  <%= content_tag(:span, (@line_counter += 1).to_s.rjust(4).gsub(' ', '&nbsp;').html_safe + ':', :class => 'counter', :title => (output_line_set['timestamp'] && Time.at(output_line_set['timestamp']))) %>
@@ -36,7 +36,7 @@
36
36
  <%= link_to_function(_('Scroll to bottom'), '$("html, body").animate({ scrollTop: $(document).height() }, "slow");', :class => 'pull-right scroll-link-bottom') %>
37
37
 
38
38
  <div class="printable">
39
- <%= render :partial => 'output_line_set', :collection => @line_sets %>
39
+ <%= render :partial => 'output_line_set', :collection => normalize_line_sets(@line_sets) %>
40
40
  </div>
41
41
 
42
42
  <%= link_to_function(_('Scroll to top'), '$("html, body").animate({ scrollTop: 0 }, "slow");', :class => 'pull-right scroll-link-top') %>
@@ -1,6 +1,8 @@
1
1
  class AddJobTemplateToTemplate < ActiveRecord::Migration[4.2]
2
2
  def change
3
- add_column :templates, :job_name, :string, :limit => 255
4
- add_column :templates, :provider_type, :string, :limit => 255
3
+ change_table :templates, :bulk => true do |t|
4
+ t.column :job_name, :string, :limit => 255
5
+ t.column :provider_type, :string, :limit => 255
6
+ end
5
7
  end
6
8
  end
@@ -1,6 +1,8 @@
1
1
  class AddConcurrencyOptionsToJobInvocation < ActiveRecord::Migration[4.2]
2
2
  def change
3
- add_column :job_invocations, :concurrency_level, :integer, :null => true
4
- add_column :job_invocations, :time_span, :integer, :null => true
3
+ change_table :job_invocations, :bulk => true do |t|
4
+ t.column :concurrency_level, :integer, :null => true
5
+ t.column :time_span, :integer, :null => true
6
+ end
5
7
  end
6
8
  end
@@ -1,6 +1,8 @@
1
1
  class AddSecretsToJobInvocations < ActiveRecord::Migration[4.2]
2
2
  def change
3
- add_column :job_invocations, :password, :string
4
- add_column :job_invocations, :key_passphrase, :string
3
+ change_table :job_invocations, :bulk => true do |t|
4
+ t.column :password, :string
5
+ t.column :key_passphrase, :string
6
+ end
5
7
  end
6
8
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanRemoteExecution
2
- VERSION = '1.6.5'.freeze
2
+ VERSION = '1.6.6'.freeze
3
3
  end
@@ -13,7 +13,7 @@ module Api
13
13
  test 'should get index' do
14
14
  get :index, params: { :template_id => @template.id }
15
15
  input_sets = ActiveSupport::JSON.decode(@response.body)
16
- assert !input_sets.empty?, 'Should respond with input sets'
16
+ assert_not input_sets.empty?, 'Should respond with input sets'
17
17
  assert_response :success
18
18
  end
19
19
 
@@ -21,7 +21,7 @@ module Api
21
21
  get :show, params: { :template_id => @template.to_param, :id => @input_set.to_param }
22
22
  assert_response :success
23
23
  input_set = ActiveSupport::JSON.decode(@response.body)
24
- assert !input_set.empty?
24
+ assert_not input_set.empty?
25
25
  assert_equal input_set['target_template_name'], @foreign_template.name
26
26
  end
27
27
 
@@ -51,7 +51,7 @@ module Api
51
51
  test 'should destroy' do
52
52
  delete :destroy, params: { :template_id => @template.to_param, :id => @input_set.to_param }
53
53
  assert_response :ok
54
- refute ForeignInputSet.exists?(@input_set.id)
54
+ assert_not ForeignInputSet.exists?(@input_set.id)
55
55
  end
56
56
  end
57
57
  end
@@ -16,7 +16,7 @@ module Api
16
16
  test 'should get index' do
17
17
  get :index
18
18
  invocations = ActiveSupport::JSON.decode(@response.body)
19
- refute_empty invocations, 'Should response with invocation'
19
+ assert_not_empty invocations, 'Should response with invocation'
20
20
  assert_response :success
21
21
  end
22
22
 
@@ -24,7 +24,7 @@ module Api
24
24
  get :show, params: { :id => @invocation.id }
25
25
  assert_response :success
26
26
  template = ActiveSupport::JSON.decode(@response.body)
27
- refute_empty template
27
+ assert_not_empty template
28
28
  assert_equal template['job_category'], @invocation.job_category
29
29
  end
30
30
 
@@ -10,7 +10,7 @@ module Api
10
10
  test 'should get index' do
11
11
  get :index
12
12
  templates = ActiveSupport::JSON.decode(@response.body)
13
- assert !templates.empty?, 'Should response with template'
13
+ assert_not templates.empty?, 'Should response with template'
14
14
  assert_response :success
15
15
  end
16
16
 
@@ -20,7 +20,7 @@ module Api
20
20
  @template.save!
21
21
  get :index, params: { :organization_id => @organization.id }
22
22
  templates = ActiveSupport::JSON.decode(@response.body)
23
- assert !templates.empty?, 'Should respond with template'
23
+ assert_not templates.empty?, 'Should respond with template'
24
24
  assert_response :success
25
25
  end
26
26
 
@@ -28,10 +28,10 @@ module Api
28
28
  get :show, params: { :id => @template.to_param }
29
29
  assert_response :success
30
30
  template = ActiveSupport::JSON.decode(@response.body)
31
- assert !template.empty?
31
+ assert_not template.empty?
32
32
  assert_equal template['name'], @template.name
33
- refute_nil template['created_at']
34
- refute_nil template['updated_at']
33
+ assert_not_nil template['created_at']
34
+ assert_not_nil template['updated_at']
35
35
  end
36
36
 
37
37
  test 'should create valid' do
@@ -74,7 +74,7 @@ module Api
74
74
  test 'should destroy' do
75
75
  delete :destroy, params: { :id => @template.to_param }
76
76
  assert_response :ok
77
- refute JobTemplate.exists?(@template.id)
77
+ assert_not JobTemplate.exists?(@template.id)
78
78
  end
79
79
 
80
80
  test 'should clone template' do
@@ -13,7 +13,7 @@ module Api
13
13
  test 'should get index' do
14
14
  get :index
15
15
  remote_execution_features = ActiveSupport::JSON.decode(@response.body)
16
- refute remote_execution_features.empty?, 'Should respond with input sets'
16
+ assert_not remote_execution_features.empty?, 'Should respond with input sets'
17
17
  assert_response :success
18
18
  end
19
19
 
@@ -21,7 +21,7 @@ module Api
21
21
  get :show, params: { :id => @remote_execution_feature.to_param }
22
22
  assert_response :success
23
23
  remote_execution_feature = ActiveSupport::JSON.decode(@response.body)
24
- refute remote_execution_feature.empty?
24
+ assert_not remote_execution_feature.empty?
25
25
  assert_equal remote_execution_feature['name'], @remote_execution_feature.name
26
26
  end
27
27
 
@@ -0,0 +1,26 @@
1
+ require 'test_plugin_helper'
2
+
3
+ class RemoteExecutionHelperTest < ActionView::TestCase
4
+ describe '#normalize_line_sets' do
5
+ let :line_sets do
6
+ [{"output_type"=>"stdout", "output"=>"one", "timestamp"=>1},
7
+ {"output_type"=>"stdout", "output"=>"\r\ntwo\r\n", "timestamp"=>2},
8
+ {"output_type"=>"stdout", "output"=>"\r\nthr", "timestamp"=>3},
9
+ {"output_type"=>"stdout", "output"=>"ee\r\nfour\r\n", "timestamp"=>4},
10
+ {"output_type"=>"stdout", "output"=>"\r\n\r\n", "timestamp"=>5},
11
+ {"output_type"=>"stdout", "output"=>"five\r\n", "timestamp"=>6},
12
+ {"output_type"=>"stdout", "output"=>"Exit status: 0", "timestamp"=>7}]
13
+ end
14
+
15
+ it 'ensures the line sets end with new line' do
16
+ new_line_sets = normalize_line_sets(line_sets)
17
+ new_line_sets.map { |s| s['output'] }.must_equal(["one\r\n",
18
+ "two\r\n",
19
+ "\r\nthree\r\n",
20
+ "four\r\n",
21
+ "\r\n\r\n",
22
+ "five\r\n",
23
+ "Exit status: 0"])
24
+ end
25
+ end
26
+ end
@@ -54,7 +54,7 @@ module ForemanRemoteExecution
54
54
 
55
55
  it 'creates a new status' do
56
56
  subject.finalize
57
- refute_nil host.execution_status_object
57
+ assert_not_nil host.execution_status_object
58
58
  end
59
59
  end
60
60
  end
@@ -50,15 +50,15 @@ module ForemanRemoteExecution
50
50
  context 'targeting resolving' do
51
51
  it 'resolves dynamic targeting in plan' do
52
52
  targeting.targeting_type = 'dynamic_query'
53
- refute targeting.resolved?
53
+ assert_not targeting.resolved?
54
54
  delayed
55
- refute targeting.resolved?
55
+ assert_not targeting.resolved?
56
56
  planned
57
57
  targeting.hosts.must_include(host)
58
58
  end
59
59
 
60
60
  it 'resolves the hosts on static targeting in delay' do
61
- refute targeting.resolved?
61
+ assert_not targeting.resolved?
62
62
  delayed
63
63
  targeting.hosts.must_include(host)
64
64
  # Verify Targeting#resolve_hosts! won't be hit again
@@ -73,7 +73,7 @@ class InputTemplateRendererTest < ActiveSupport::TestCase
73
73
  end
74
74
 
75
75
  it 'cannot render the content' do
76
- refute result
76
+ assert_not result
77
77
  renderer.error_message.wont_be_nil
78
78
  renderer.error_message.wont_be_empty
79
79
  end
@@ -125,7 +125,7 @@ class InputTemplateRendererTest < ActiveSupport::TestCase
125
125
  it 'handles circular references in templates' do
126
126
  renderer.invocation = FactoryBot.build(:template_invocation, :template => template_without_inputs)
127
127
  renderer.template = template_without_inputs
128
- refute renderer.render
128
+ assert_not renderer.render
129
129
  renderer.error_message.must_include 'Recursive rendering of templates detected'
130
130
  end
131
131
 
@@ -335,7 +335,7 @@ class InputTemplateRendererTest < ActiveSupport::TestCase
335
335
 
336
336
  describe 'rendering' do
337
337
  it 'can\'t render the content without host since we don\'t have facts' do
338
- refute result
338
+ assert_not result
339
339
  end
340
340
 
341
341
  it 'registers an error' do
@@ -349,7 +349,7 @@ class InputTemplateRendererTest < ActiveSupport::TestCase
349
349
 
350
350
  describe 'rendering' do
351
351
  it 'can\'t render the content without host since we don\'t have fact value' do
352
- refute result
352
+ assert_not result
353
353
  end
354
354
 
355
355
  it 'registers an error' do
@@ -371,7 +371,7 @@ class InputTemplateRendererTest < ActiveSupport::TestCase
371
371
  describe 'rendering' do
372
372
  it 'can\'t render the content without host since we don\'t have fact value' do
373
373
  fact # let is lazy
374
- refute result
374
+ assert_not result
375
375
  end
376
376
 
377
377
  it 'registers an error' do
@@ -433,7 +433,7 @@ class InputTemplateRendererTest < ActiveSupport::TestCase
433
433
 
434
434
  describe 'rendering' do
435
435
  it 'can\'t render the content without host since we don\'t have host so no classification' do
436
- refute result
436
+ assert_not result
437
437
  end
438
438
 
439
439
  it 'registers an error' do
@@ -451,7 +451,7 @@ class InputTemplateRendererTest < ActiveSupport::TestCase
451
451
 
452
452
  describe 'rendering' do
453
453
  it 'can\'t render the content without host since we don\'t have variable value in classification' do
454
- refute result
454
+ assert_not result
455
455
  end
456
456
 
457
457
  it 'registers an error' do
@@ -542,7 +542,7 @@ class InputTemplateRendererTest < ActiveSupport::TestCase
542
542
 
543
543
  describe 'rendering' do
544
544
  it 'can\'t render the content without host since we don\'t have host so no classification' do
545
- refute result
545
+ assert_not result
546
546
  end
547
547
 
548
548
  it 'registers an error' do
@@ -557,7 +557,7 @@ class InputTemplateRendererTest < ActiveSupport::TestCase
557
557
 
558
558
  describe 'rendering' do
559
559
  it 'can\'t render the content without host since we don\'t have puppet parameter in classification' do
560
- refute result
560
+ assert_not result
561
561
  end
562
562
 
563
563
  it 'registers an error' do
@@ -131,7 +131,7 @@ class JobInvocationComposerTest < ActiveSupport::TestCase
131
131
 
132
132
  it 'returns false if there is one provider' do
133
133
  composer.stubs(:available_provider_types => [ 'SSH' ])
134
- refute composer.needs_provider_type_selection?
134
+ assert_not composer.needs_provider_type_selection?
135
135
  end
136
136
  end
137
137
 
@@ -440,7 +440,7 @@ class JobInvocationComposerTest < ActiveSupport::TestCase
440
440
  composer.job_invocation.expects(:valid?).returns(false)
441
441
  composer.targeting.expects(:valid?).returns(false)
442
442
  composer.pattern_template_invocations.each { |invocation| invocation.expects(:valid?).returns(false) }
443
- refute composer.valid?
443
+ assert_not composer.valid?
444
444
  end
445
445
  end
446
446
 
@@ -621,7 +621,7 @@ class JobInvocationComposerTest < ActiveSupport::TestCase
621
621
  assert composer.save!
622
622
  assert_equal bookmark, composer.job_invocation.targeting.bookmark
623
623
  assert_equal composer.job_invocation.targeting.user, User.current
624
- refute_empty composer.job_invocation.pattern_template_invocations
624
+ assert_not_empty composer.job_invocation.pattern_template_invocations
625
625
  end
626
626
  end
627
627
 
@@ -636,7 +636,7 @@ class JobInvocationComposerTest < ActiveSupport::TestCase
636
636
  it 'creates invocation with a search query' do
637
637
  assert composer.save!
638
638
  assert_equal 'some hosts', composer.job_invocation.targeting.search_query
639
- refute_empty composer.job_invocation.pattern_template_invocations
639
+ assert_not_empty composer.job_invocation.pattern_template_invocations
640
640
  end
641
641
  end
642
642
 
@@ -772,7 +772,7 @@ class JobInvocationComposerTest < ActiveSupport::TestCase
772
772
 
773
773
  it 'accepts the params' do
774
774
  composer.save!
775
- refute composer.job_invocation.new_record?
775
+ assert_not composer.job_invocation.new_record?
776
776
  end
777
777
  end
778
778
 
@@ -55,8 +55,8 @@ class JobInvocationTest < ActiveSupport::TestCase
55
55
  job_invocation.pattern_template_invocations.first.reload
56
56
  end
57
57
 
58
- it { refute job_invocation.reload.pattern_template_invocations.empty? }
59
- it { refute job_invocation.reload.pattern_template_invocations.first.input_values.empty? }
58
+ it { assert_not job_invocation.reload.pattern_template_invocations.empty? }
59
+ it { assert_not job_invocation.reload.pattern_template_invocations.first.input_values.empty? }
60
60
 
61
61
  it "can look up templates not belonging to user's organization" do
62
62
  organization = job_invocation.pattern_template_invocations.first.template.organizations.first
@@ -73,7 +73,7 @@ class JobInvocationTest < ActiveSupport::TestCase
73
73
  it 'validates required inputs have values' do
74
74
  assert job_invocation.valid?
75
75
  @input_value.destroy
76
- refute job_invocation.reload.valid?
76
+ assert_not job_invocation.reload.valid?
77
77
  end
78
78
 
79
79
  describe 'descriptions' do
@@ -179,7 +179,7 @@ class JobInvocationTest < ActiveSupport::TestCase
179
179
 
180
180
  it 'returns false if task state is pending' do
181
181
  job_invocation.task.expects(:pending?).returns(true)
182
- refute job_invocation.finished?
182
+ assert_not job_invocation.finished?
183
183
  end
184
184
 
185
185
  it 'returns true if task is not pending' do
@@ -14,7 +14,7 @@ class JobTemplateEffectiveUserTest < ActiveSupport::TestCase
14
14
  end
15
15
 
16
16
  it 'does not use the current user' do
17
- refute effective_user.current_user?
17
+ assert_not effective_user.current_user?
18
18
  end
19
19
  end
20
20
 
@@ -13,11 +13,11 @@ class JobTemplateTest < ActiveSupport::TestCase
13
13
  it 'has a unique name' do
14
14
  template1 = FactoryBot.create(:job_template)
15
15
  template2 = FactoryBot.build(:job_template, :name => template1.name)
16
- refute template2.valid?
16
+ assert_not template2.valid?
17
17
  end
18
18
 
19
19
  it 'needs a job_category' do
20
- refute job_template.valid?
20
+ assert_not job_template.valid?
21
21
  end
22
22
 
23
23
  it 'does not need a job_category if it is a snippet' do
@@ -29,7 +29,7 @@ class JobTemplateTest < ActiveSupport::TestCase
29
29
  job_template.job_category = 'Miscellaneous'
30
30
  job_template.foreign_input_sets << FactoryBot.build(:foreign_input_set, :target_template => template_with_inputs)
31
31
  job_template.foreign_input_sets << FactoryBot.build(:foreign_input_set, :target_template => template_with_inputs)
32
- refute job_template.valid?
32
+ assert_not job_template.valid?
33
33
  job_template.errors.full_messages.first.must_include 'Duplicated inputs detected: ["command"]'
34
34
  end
35
35
  end
@@ -213,7 +213,7 @@ class JobTemplateTest < ActiveSupport::TestCase
213
213
 
214
214
  it 'will not overwrite by default' do
215
215
  existing
216
- refute JobTemplate.import_raw!(updated)
216
+ assert_not JobTemplate.import_raw!(updated)
217
217
  end
218
218
 
219
219
  let(:synced_template) do
@@ -60,7 +60,7 @@ class RemoteExecutionFeatureTest < ActiveSupport::TestCase
60
60
  feature.must_be :persisted?
61
61
  feature.label.must_equal 'new_feature_that_does_not_exist'
62
62
  feature.name.must_equal 'name'
63
- refute feature.host_action_button
63
+ assert_not feature.host_action_button
64
64
  end
65
65
 
66
66
  it 'creates a feature with host action flag' do
@@ -12,7 +12,7 @@ class TargetingTest < ActiveSupport::TestCase
12
12
  describe '#resolved?' do
13
13
  context 'resolved_at is nil' do
14
14
  before { targeting.resolved_at = nil }
15
- it { refute targeting.resolved? }
15
+ it { assert_not targeting.resolved? }
16
16
  end
17
17
 
18
18
  context 'resolved_at is set' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_remote_execution
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.5
4
+ version: 1.6.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Foreman Remote Execution team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-22 00:00:00.000000000 Z
11
+ date: 2018-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deface
@@ -360,6 +360,7 @@ files:
360
360
  - test/functional/api/v2/template_invocations_controller_test.rb
361
361
  - test/functional/job_invocations_controller_test.rb
362
362
  - test/functional/job_templates_controller_test.rb
363
+ - test/helpers/remote_execution_helper_test.rb
363
364
  - test/test_plugin_helper.rb
364
365
  - test/unit/actions/run_host_job_test.rb
365
366
  - test/unit/actions/run_hosts_job_test.rb
@@ -408,7 +409,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
408
409
  version: '0'
409
410
  requirements: []
410
411
  rubyforge_project:
411
- rubygems_version: 2.6.11
412
+ rubygems_version: 2.7.3
412
413
  signing_key:
413
414
  specification_version: 4
414
415
  summary: A plugin bringing remote execution to the Foreman, completing the config
@@ -424,6 +425,7 @@ test_files:
424
425
  - test/functional/api/v2/template_invocations_controller_test.rb
425
426
  - test/functional/job_invocations_controller_test.rb
426
427
  - test/functional/job_templates_controller_test.rb
428
+ - test/helpers/remote_execution_helper_test.rb
427
429
  - test/test_plugin_helper.rb
428
430
  - test/unit/actions/run_host_job_test.rb
429
431
  - test/unit/actions/run_hosts_job_test.rb