Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
{
"name": "VoxBox",
"image": "ghcr.io/voxpupuli/voxbox:latest"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ permissions:
jobs:
puppet:
name: Puppet
uses: voxpupuli/gha-puppet/.github/workflows/basic.yml@v4
uses: voxpupuli/gha-puppet/.github/workflows/beaker.yml@v4
4 changes: 3 additions & 1 deletion .sync.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
.github/workflows/ci.yml:
acceptance_tests: false
acceptance_tests: true
spec/spec_helper_acceptance.rb:
unmanaged: false
4 changes: 2 additions & 2 deletions metadata.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"name": "leoarnold-cups",
"version": "2.2.2",
Expand Down Expand Up @@ -25,8 +25,8 @@
{
"operatingsystem": "Debian",
"operatingsystemrelease": [
"9",
"10"
"12",
"13"
]
},
{
Expand Down
10 changes: 10 additions & 0 deletions spec/setup_acceptance_node.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
file { '/etc/systemd/system/cups.service.d/':
ensure => directory,
}
file { '/etc/systemd/system/cups.service.d/limits.conf':
ensure => file,
content => @(CONFIG),
[Service]
LimitNOFILE=65536
| CONFIG
}
66 changes: 5 additions & 61 deletions spec/spec_helper_acceptance.rb
Original file line number Diff line number Diff line change
@@ -1,66 +1,10 @@
# frozen_string_literal: true

require 'shellwords'
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/

require 'beaker'
require 'beaker-puppet'
require 'beaker-rspec'
require 'voxpupuli/acceptance/spec_helper_acceptance'

# Beaker related configuration
# http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL
RSpec.configure do |c|
project_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
c.before(:suite) do
hosts.each do |host|
shell("sed -i 's/^nameserver.*/nameserver 8.8.8.8/' /etc/resolv.conf")
install_puppet_agent_on(host, puppet_collection: 'puppet6')
install_puppet_module_via_pmt_on(host, module_name: 'camptocamp-systemd', version: '1.0.0')
copy_module_to(host, module_name: 'cups', source: project_root, target_module_path: '/etc/puppetlabs/code/modules')
scp_to(host, File.join(project_root, 'spec/fixtures/ppd/textonly.ppd'), '/tmp/')
end
end
end
configure_beaker(modules: :metadata)

# Custom helper functions

def ensure_cups_is_running
apply_manifest('class { "cups": }', catch_failures: true)
end

def add_printers(*names)
names.each do |name|
shell("lpadmin -p #{Shellwords.escape(name)} -m drv:///sample.drv/generic.ppd -o printer-is-shared=false")
end
end

def add_printers_to_classes(class_members)
add_printers('Dummy')
class_members.each_key do |classname|
members = class_members[classname]
members = %w[Dummy] if members.empty?
members.each do |printername|
shell("lpadmin -p #{Shellwords.escape(printername)} -c #{Shellwords.escape(classname)}")
end
shell("lpadmin -p #{Shellwords.escape(classname)} -o printer-is-shared=false")
end
remove_queues('Dummy')
end

def remove_queues(*names)
names.flatten.each do |name|
shell("lpadmin -x #{Shellwords.escape(name)}", acceptable_exit_codes: [0, 1])
end
end

def purge_all_queues
request = '{
OPERATION CUPS-Get-Printers
GROUP operation
ATTR charset attributes-charset utf-8
ATTR language attributes-natural-language en
DISPLAY printer-name
}'
result = shell('ipptool -t ipp://localhost/ /dev/stdin', stdin: request, acceptable_exit_codes: [0, 1])
queues = result.stdout.scan(%r{printer-name \(nameWithoutLanguage\) = ([^\s"'\\,#/]+)})
remove_queues(queues)
end
Dir['./spec/support/acceptance/**/*.rb'].sort.each { |f| require f }
43 changes: 43 additions & 0 deletions spec/support/acceptance/helper_methods.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# frozen_string_literal: true

def ensure_cups_is_running
apply_manifest('class { "cups": }', catch_failures: true)
end

def add_printers(*names)
names.each do |name|
shell("time lpadmin -p #{Shellwords.escape(name)} -m drv:///sample.drv/generic.ppd -o printer-is-shared=false")
end
end

def add_printers_to_classes(class_members)
add_printers('Dummy')
class_members.each_key do |classname|
members = class_members[classname]
members = %w[Dummy] if members.empty?
members.each do |printername|
shell("lpadmin -p #{Shellwords.escape(printername)} -c #{Shellwords.escape(classname)}")
end
shell("lpadmin -p #{Shellwords.escape(classname)} -o printer-is-shared=false")
end
remove_queues('Dummy')
end

def remove_queues(*names)
names.flatten.each do |name|
shell("lpadmin -x #{Shellwords.escape(name)}", acceptable_exit_codes: [0, 1])
end
end

def purge_all_queues
request = '{
OPERATION CUPS-Get-Printers
GROUP operation
ATTR charset attributes-charset utf-8
ATTR language attributes-natural-language en
DISPLAY printer-name
}'
result = shell('ipptool -t ipp://localhost/ /dev/stdin', stdin: request, acceptable_exit_codes: [0, 1])
queues = result.stdout.scan(%r{printer-name \(nameWithoutLanguage\) = ([^\s"'\\,#/]+)})
remove_queues(queues)
end
Loading