Sha256: 5a9be08ffa9238e1d8e3ca4acb489c0d5aed2657b259d568324dbfcda026a06a

Contents?: true

Size: 1.88 KB

Versions: 12

Compression:

Stored size: 1.88 KB

Contents

# coding: utf-8
require 'spec_helper'
require 'puppet/application/config'

#describe "puppet config" do
describe Puppet::Face[:config, '0.0.1'] do
  include PuppetSpec::Files

  # different UTF-8 widths
  # 1-byte A
  # 2-byte ۿ - http://www.fileformat.info/info/unicode/char/06ff/index.htm - 0xDB 0xBF / 219 191
  # 3-byte ᚠ - http://www.fileformat.info/info/unicode/char/16A0/index.htm - 0xE1 0x9A 0xA0 / 225 154 160
  # 4-byte 𠜎 - http://www.fileformat.info/info/unicode/char/2070E/index.htm - 0xF0 0xA0 0x9C 0x8E / 240 160 156 142
  MIXED_UTF8 = "A\u06FF\u16A0\u{2070E}" # Aۿᚠ𠜎

  let(:tmp_config) { tmpfile('puppet.conf') }
  let(:config) { Puppet::Application[:config] }

  def read_utf8(path)
    File.read(tmp_config, :encoding => 'UTF-8')
  end

  def write_utf8(path, content)
    File.write(tmp_config, content, 0, :encoding => 'UTF-8')
  end

  it "reads a UTF-8 value" do
    write_utf8(tmp_config, <<~EOF)
      [main]
      tags=#{MIXED_UTF8}
    EOF

    Puppet.initialize_settings(['--config', tmp_config])
    config.command_line.args = ['print', 'tags' ]

    expect {
      config.run
    }.to exit_with(0)
     .and output("#{MIXED_UTF8}\n").to_stdout
  end

  it "sets a UTF-8 value" do
    Puppet.initialize_settings(['--config', tmp_config])
    config.command_line.args = ['set', 'tags', MIXED_UTF8 ]

    expect {
      config.run
    }.to exit_with(0)

    expect(read_utf8(tmp_config)).to eq(<<~EOF)
      [main]
      tags = #{MIXED_UTF8}
    EOF
  end

  it "deletes a key" do
    write_utf8(tmp_config, <<~EOF)
      [main]
      tags=#{MIXED_UTF8}
    EOF

    Puppet.initialize_settings(['--config', tmp_config])
    config.command_line.args = ['delete', 'tags']

    expect {
      config.run
    }.to exit_with(0)
     .and output(/Deleted setting from 'main': 'tags=#{MIXED_UTF8}'/).to_stdout

    expect(read_utf8(tmp_config)).to eq(<<~EOF)
      [main]
    EOF
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
puppet-6.19.1 spec/integration/application/config_spec.rb
puppet-6.19.1-x86-mingw32 spec/integration/application/config_spec.rb
puppet-6.19.1-x64-mingw32 spec/integration/application/config_spec.rb
puppet-6.19.1-universal-darwin spec/integration/application/config_spec.rb
puppet-6.19.0 spec/integration/application/config_spec.rb
puppet-6.19.0-x86-mingw32 spec/integration/application/config_spec.rb
puppet-6.19.0-x64-mingw32 spec/integration/application/config_spec.rb
puppet-6.19.0-universal-darwin spec/integration/application/config_spec.rb
puppet-6.18.0 spec/integration/application/config_spec.rb
puppet-6.18.0-x86-mingw32 spec/integration/application/config_spec.rb
puppet-6.18.0-x64-mingw32 spec/integration/application/config_spec.rb
puppet-6.18.0-universal-darwin spec/integration/application/config_spec.rb