blob: 69fe0d1429de4e2bcb168748529252d385610206 (
plain) (
blame)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
require 'aruba/rspec'
IFILE_PATH = 'installfile'
def run_validate(extra = '')
run_command 'hscript-validate ' + IFILE_PATH + extra
end
def use_fixture(fixture)
copy '%/' + fixture, IFILE_PATH
end
SUCCESS_OUTPUT = '0 error(s), 0 warning(s)'
RSpec.describe 'HorizonScript Validation Utility', :type => :aruba do
context "argument passing" do
it "requires an installfile to be specified" do
run_command 'hscript-validate'
expect(last_command_started).to have_output(/usage/)
end
it "doesn't output ANSI colours when redirected" do
run_command 'hscript-validate foo 2>/dev/null'
expect(last_command_started).to_not have_output(/\033/)
end
end
context "on invalid keys" do
before(:each) { use_fixture '0016-invalid-key.installfile' }
it "warns on invalid keys by default" do
run_validate
expect(last_command_started).to have_output(/warning: .*chat.* not defined/)
end
it "errors on invalid keys in strict mode" do
run_validate ' --strict'
expect(last_command_started).to have_output(/error: .*chat.* not defined/)
end
end
context "parsing" do
it "successfully reads a basic installfile" do
use_fixture '0001-basic.installfile'
run_validate
expect(last_command_started).to have_output(SUCCESS_OUTPUT)
end
it "handles comments" do
use_fixture '0002-basic-commented.installfile'
run_validate
expect(last_command_started).to have_output(SUCCESS_OUTPUT)
end
it "handles blank lines and indentation" do
use_fixture '0003-basic-whitespace.installfile'
run_validate
expect(last_command_started).to have_output(SUCCESS_OUTPUT)
end
context "required keys" do
it "fails without a 'network' key" do
use_fixture '0006-no-network.installfile'
run_validate
expect(last_command_started).to have_output(/error: .*network.*/)
end
it "fails without a 'hostname' key" do
use_fixture '0007-no-hostname.installfile'
run_validate
expect(last_command_started).to have_output(/error: .*hostname.*/)
end
it "fails without a 'pkginstall' key" do
use_fixture '0008-no-pkginstall.installfile'
run_validate
expect(last_command_started).to have_output(/error: .*pkginstall.*/)
end
it "fails without a 'rootpw' key" do
use_fixture '0009-no-rootpw.installfile'
run_validate
expect(last_command_started).to have_output(/error: .*rootpw.*/)
end
it "fails without a 'mount' key" do
use_fixture '0010-no-mount.installfile'
run_validate
expect(last_command_started).to have_output(/error: .*mount.*/)
end
end
end
end
|