-
Notifications
You must be signed in to change notification settings - Fork 2
/
puppetfile_spec.rb
34 lines (25 loc) · 911 Bytes
/
puppetfile_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# frozen_string_literal: true
require 'spec_helper'
def coreutils_sort(data)
pat = %r{[\W_]} # chars coreutils sort seems to ignore
data.sort do |a, b|
ax = a.gsub(pat, '')
bx = b.gsub(pat, '')
ax == bx ? b.size <=> a.size : ax <=> bx
end
end
describe 'Puppetfile' do
subject(:puppetfile) { File.read(puppetfile_path) }
it 'mod lines are sorted' do
# ignore lines which aren't declaring a module
mods = puppetfile.split("\n").grep(%r{^\s*mod})
# convert arrays into strings so rspec will produce a diff with useful context
expect(mods.join("\n")).to eq coreutils_sort(mods).join("\n")
end
it 'mod names use slash instead of dash as namespace separator' do
# ignore lines which aren't declaring a module
mods = puppetfile.split("\n").grep(%r{^\s*mod})
names = mods.map { |l| l.split[1] }
names.each { |n| expect(n).not_to match('-') }
end
end