Sha256: fbc5cc58989f45a9c7c42ecba949539259dd7172aa4b854c6222fa9538b5e24c

Contents?: true

Size: 1.21 KB

Versions: 18

Compression:

Stored size: 1.21 KB

Contents

test_name "C14892: external facts should only be run once" do
  tag 'risk:high'

  require 'facter/acceptance/user_fact_utils'
  extend Facter::Acceptance::UserFactUtils

  agents.each do |agent|
    factsd = get_factsd_dir(agent['platform'], on(agent, facter('kernelmajversion')).stdout.chomp.to_f)
    ext = get_external_fact_script_extension(agent['platform'])
    ext_fact = File.join(factsd, "external_fact#{ext}")

    if agent['platform'] =~ /windows/
      content = <<EOM
echo "SCRIPT CALLED" >&2
echo "test=value"
EOM
    else
      content = <<EOM
#!/bin/sh
echo "SCRIPT CALLED" >&2
echo "test=value"
EOM
    end

    teardown do
      on(agent, "rm -f '#{ext_fact}'")
    end

    step "Agent #{agent}: create facts.d directory and fact" do
      on(agent, "mkdir -p '#{factsd}'")
      create_remote_file(agent, ext_fact, content)
      on(agent, "chmod +x '#{ext_fact}'")
    end

    step "Agent #{agent}: ensure the fact is only executed once" do
      on(agent, facter) do |facter_output|
        lines = facter_output.stderr.split('\n')
        times = lines.count { |line| line =~ /SCRIPT CALLED/ }
        assert_equal(1, times, "External fact should only execute once: #{facter_output.stderr}")
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 2 rubygems

Version Path
facter-4.0.29 acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-4.0.28 acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.12.2.cfacter.20181217 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.12.1.cfacter.20181031 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.11.6.cfacter.20181031 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.12.1.cfacter.20181023 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.11.5.cfacter.20181022 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.12.0.cfacter.20181004 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.12.0.cfacter.20181001 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.12.0.cfacter.20180918 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.11.4.cfacter.20180821 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.11.3.cfacter.20180716 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.11.2.cfacter.20180612 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.9.6.cfacter.20180612 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.11.2.cfacter.20180606 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.9.6.cfacter.20180606 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
facter-3.11.0.cfacter.20180319 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb
cfacter-3.11.0.rc.20180314 ext/facter/facter/acceptance/tests/external_facts/external_facts_only_run_once.rb