PackerFiles 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/PackerFiles.gemspec +36 -0
  6. data/README.md +32 -0
  7. data/Rakefile +21 -0
  8. data/bin/pkf +5 -0
  9. data/lib/PackerFiles/CLI/OS.rb +44 -0
  10. data/lib/PackerFiles/CLI/Root.rb +41 -0
  11. data/lib/PackerFiles/Core/Base.rb +23 -0
  12. data/lib/PackerFiles/Core/CDImage.rb +185 -0
  13. data/lib/PackerFiles/Core/Disk.rb +135 -0
  14. data/lib/PackerFiles/Core/Exceptions.rb +65 -0
  15. data/lib/PackerFiles/Core/Hypervisor.rb +96 -0
  16. data/lib/PackerFiles/Core/Keyboard.rb +38 -0
  17. data/lib/PackerFiles/Core/Locale.rb +62 -0
  18. data/lib/PackerFiles/Core/LogicalVolume.rb +41 -0
  19. data/lib/PackerFiles/Core/Network.rb +67 -0
  20. data/lib/PackerFiles/Core/Packages.rb +30 -0
  21. data/lib/PackerFiles/Core/Partition.rb +41 -0
  22. data/lib/PackerFiles/Core/TimeZone.rb +45 -0
  23. data/lib/PackerFiles/Core/User.rb +46 -0
  24. data/lib/PackerFiles/Core/VolumeGroup.rb +50 -0
  25. data/lib/PackerFiles/Core/example/CDImage.txt +75 -0
  26. data/lib/PackerFiles/Core/example/Disk.txt +29 -0
  27. data/lib/PackerFiles/Core/example/Hypervisor.txt +111 -0
  28. data/lib/PackerFiles/Core/example/Keyboard.txt +28 -0
  29. data/lib/PackerFiles/Core/example/Locale.txt +31 -0
  30. data/lib/PackerFiles/Core/example/Network.txt +68 -0
  31. data/lib/PackerFiles/Core/example/Packages.txt +22 -0
  32. data/lib/PackerFiles/Core/example/TimeZone.txt +36 -0
  33. data/lib/PackerFiles/Core/example/User.txt +48 -0
  34. data/lib/PackerFiles/OS/Builder.rb +116 -0
  35. data/lib/PackerFiles/OS/CentOS/CD.rb +81 -0
  36. data/lib/PackerFiles/OS/CentOS/Kickstart.rb +64 -0
  37. data/lib/PackerFiles/OS/CentOS/Server.rb +170 -0
  38. data/lib/PackerFiles/OS/CentOS/Templates/Base_erb.rb +4 -0
  39. data/lib/PackerFiles/OS/CentOS/Templates/Disk_erb.rb +35 -0
  40. data/lib/PackerFiles/OS/CentOS/Templates/Keyboard_erb.rb +4 -0
  41. data/lib/PackerFiles/OS/CentOS/Templates/Locale_erb.rb +4 -0
  42. data/lib/PackerFiles/OS/CentOS/Templates/Network_erb.rb +17 -0
  43. data/lib/PackerFiles/OS/CentOS/Templates/Packages_erb.rb +34 -0
  44. data/lib/PackerFiles/OS/CentOS/Templates/Tail_erb.rb +15 -0
  45. data/lib/PackerFiles/OS/CentOS/Templates/TimeZone_erb.rb +10 -0
  46. data/lib/PackerFiles/OS/CentOS/Templates/User_erb.rb +20 -0
  47. data/lib/PackerFiles/OS/CentOS/Templates/boot_command_erb.rb +16 -0
  48. data/lib/PackerFiles/OS/CentOS/Templates/command_as_root_erb.rb +1 -0
  49. data/lib/PackerFiles/OS/CentOS/Templates/disable_root_erb.rb +1 -0
  50. data/lib/PackerFiles/OS/CentOS/Templates/enable_root_erb.rb +1 -0
  51. data/lib/PackerFiles/OS/CentOS/Templates/shutdown_command_erb.rb +1 -0
  52. data/lib/PackerFiles/OS/Debian/Apt.rb +42 -0
  53. data/lib/PackerFiles/OS/Debian/CD.rb +65 -0
  54. data/lib/PackerFiles/OS/Debian/Mirrors.rb +73 -0
  55. data/lib/PackerFiles/OS/Debian/Preseed.rb +64 -0
  56. data/lib/PackerFiles/OS/Debian/Server.rb +169 -0
  57. data/lib/PackerFiles/OS/Debian/Templates/Apt_erb.rb +18 -0
  58. data/lib/PackerFiles/OS/Debian/Templates/Disk_erb.rb +69 -0
  59. data/lib/PackerFiles/OS/Debian/Templates/Keyboard_erb.rb +5 -0
  60. data/lib/PackerFiles/OS/Debian/Templates/Locale_erb.rb +7 -0
  61. data/lib/PackerFiles/OS/Debian/Templates/Mirrors_erb.rb +9 -0
  62. data/lib/PackerFiles/OS/Debian/Templates/Network_erb.rb +19 -0
  63. data/lib/PackerFiles/OS/Debian/Templates/Packages_erb.rb +6 -0
  64. data/lib/PackerFiles/OS/Debian/Templates/TimeZone_erb.rb +6 -0
  65. data/lib/PackerFiles/OS/Debian/Templates/User_erb.rb +14 -0
  66. data/lib/PackerFiles/OS/Debian/Templates/boot_command_erb.rb +24 -0
  67. data/lib/PackerFiles/OS/Debian/Templates/command_as_root_erb.rb +1 -0
  68. data/lib/PackerFiles/OS/Debian/Templates/disable_root_erb.rb +5 -0
  69. data/lib/PackerFiles/OS/Debian/Templates/enable_root_erb.rb +1 -0
  70. data/lib/PackerFiles/OS/Debian/Templates/shutdown_command_erb.rb +1 -0
  71. data/lib/PackerFiles/OS/Debian/example/Apt.txt +55 -0
  72. data/lib/PackerFiles/OS/DocGenerator.rb +51 -0
  73. data/lib/PackerFiles/OS/Finder.rb +96 -0
  74. data/lib/PackerFiles/OS/RHEL/CD.rb +32 -0
  75. data/lib/PackerFiles/OS/RHEL/Fedora.rb +59 -0
  76. data/lib/PackerFiles/OS/RHEL/FedoraCD.rb +68 -0
  77. data/lib/PackerFiles/OS/RHEL/Server.rb +32 -0
  78. data/lib/PackerFiles/OS/RHEL/Templates/Fedora_Tail_erb.rb +14 -0
  79. data/lib/PackerFiles/OS/RHEL/Templates/boot_command_fedora_erb.rb +16 -0
  80. data/lib/PackerFiles/OS/SUSE/Templates/Base_erb.xml +32 -0
  81. data/lib/PackerFiles/OS/SUSE/Templates/Disk_erb.xml +110 -0
  82. data/lib/PackerFiles/OS/SUSE/Templates/Keyboard_erb.xml +7 -0
  83. data/lib/PackerFiles/OS/SUSE/Templates/Locale_erb.xml +18 -0
  84. data/lib/PackerFiles/OS/SUSE/Templates/Network_erb.xml +143 -0
  85. data/lib/PackerFiles/OS/SUSE/Templates/Packages_erb.xml +29 -0
  86. data/lib/PackerFiles/OS/SUSE/Templates/Tail_erb.xml +4 -0
  87. data/lib/PackerFiles/OS/SUSE/Templates/TimeZone_erb.xml +15 -0
  88. data/lib/PackerFiles/OS/SUSE/Templates/User_erb.xml +57 -0
  89. data/lib/PackerFiles/OS/SUSE/Templates/boot_command_erb.rb +23 -0
  90. data/lib/PackerFiles/OS/SUSE/Templates/command_as_root_erb.rb +1 -0
  91. data/lib/PackerFiles/OS/SUSE/Templates/disable_root_erb.rb +1 -0
  92. data/lib/PackerFiles/OS/SUSE/Templates/enable_root_erb.rb +1 -0
  93. data/lib/PackerFiles/OS/SUSE/Templates/shutdown_command_erb.rb +1 -0
  94. data/lib/PackerFiles/OS/Ubuntu/CD.rb +81 -0
  95. data/lib/PackerFiles/OS/Ubuntu/Desktop.rb +50 -0
  96. data/lib/PackerFiles/OS/Ubuntu/DesktopCD.rb +16 -0
  97. data/lib/PackerFiles/OS/Ubuntu/Mirrors.rb +103 -0
  98. data/lib/PackerFiles/OS/Ubuntu/Server.rb +78 -0
  99. data/lib/PackerFiles/OS/Ubuntu/Templates/Apt_erb.rb +18 -0
  100. data/lib/PackerFiles/OS/Ubuntu/Templates/boot_command_desktop_erb.rb +36 -0
  101. data/lib/PackerFiles/OS/Ubuntu/Templates/boot_command_erb.rb +30 -0
  102. data/lib/PackerFiles/OS/Ubuntu/Templates/ubiquity_erb.rb +8 -0
  103. data/lib/PackerFiles/OS/example/Doc.txt +8 -0
  104. data/lib/PackerFiles/Provision/Base.rb +20 -0
  105. data/lib/PackerFiles/Provision/ChefSolo.rb +90 -0
  106. data/lib/PackerFiles/Provision/ChefSoloHelper.rb +72 -0
  107. data/lib/PackerFiles/Provision/Copy.rb +22 -0
  108. data/lib/PackerFiles/Provision/ExternalScript.rb +43 -0
  109. data/lib/PackerFiles/Provision/InlineScript.rb +37 -0
  110. data/lib/PackerFiles/Provision/Provisioners.rb +87 -0
  111. data/lib/PackerFiles/Provision/example/Provisioners.txt +21 -0
  112. data/lib/PackerFiles/Utils/AutoZone.rb +96 -0
  113. data/lib/PackerFiles/Utils/FastestURL.rb +73 -0
  114. data/lib/PackerFiles/Utils/Generator.rb +34 -0
  115. data/lib/PackerFiles/Utils/HashSerializer.rb +110 -0
  116. data/lib/PackerFiles/Utils/Size.rb +44 -0
  117. data/lib/PackerFiles/Utils/TypeAccessor.rb +71 -0
  118. data/lib/PackerFiles/Virtual/Hypervisors.rb +72 -0
  119. data/lib/PackerFiles/Virtual/KVM.rb +119 -0
  120. data/lib/PackerFiles/Virtual/KVMConverter.rb +79 -0
  121. data/lib/PackerFiles/Virtual/VMWare.rb +108 -0
  122. data/lib/PackerFiles/Virtual/VMWareConverter.rb +78 -0
  123. data/lib/PackerFiles/Virtual/VirtualBox.rb +98 -0
  124. data/lib/PackerFiles/Virtual/VirtualBoxConverter.rb +75 -0
  125. data/lib/PackerFiles/Virtual/example/Hypervisors.txt +23 -0
  126. data/lib/PackerFiles/version.rb +3 -0
  127. data/lib/PackerFiles.rb +44 -0
  128. data/spec/core/builder_spec.rb +84 -0
  129. data/spec/core/cdimage_spec.rb +159 -0
  130. data/spec/core/disk_spec.rb +191 -0
  131. data/spec/core/keyboard_spec.rb +36 -0
  132. data/spec/core/locale_spec.rb +73 -0
  133. data/spec/core/network_spec.rb +96 -0
  134. data/spec/core/packages_spec.rb +18 -0
  135. data/spec/core/timezone_spec.rb +43 -0
  136. data/spec/core/user_spec.rb +44 -0
  137. data/spec/core/volume_group_spec.rb +53 -0
  138. data/spec/os/centos/cd_spec.rb +12 -0
  139. data/spec/os/centos/data/Server-Script-Provisioner.rb +57 -0
  140. data/spec/os/centos/data/Server.rb +55 -0
  141. data/spec/os/centos/data/chef-solo-provisioner.rb +58 -0
  142. data/spec/os/centos/finder_spec.rb +22 -0
  143. data/spec/os/centos/templates/boot_command_spec.rb +57 -0
  144. data/spec/os/centos/templates/disk_spec.rb +79 -0
  145. data/spec/os/centos/templates/keyboard_spec.rb +18 -0
  146. data/spec/os/centos/templates/locale_spec.rb +26 -0
  147. data/spec/os/centos/templates/network_spec.rb +38 -0
  148. data/spec/os/centos/templates/packages_spec.rb +18 -0
  149. data/spec/os/centos/templates/timezone_spec.rb +37 -0
  150. data/spec/os/centos/templates/user_spec.rb +24 -0
  151. data/spec/os/debian/apt_spec.rb +50 -0
  152. data/spec/os/debian/cd_spec.rb +30 -0
  153. data/spec/os/debian/data/7zip.tar.gz +0 -0
  154. data/spec/os/debian/data/All-sections.rb +60 -0
  155. data/spec/os/debian/data/Chef-Solo-Provisioner.rb +60 -0
  156. data/spec/os/debian/data/Copy-Provisioner.rb +61 -0
  157. data/spec/os/debian/data/External-Script-Provisioner.rb +69 -0
  158. data/spec/os/debian/data/Missing-CDImage.rb +53 -0
  159. data/spec/os/debian/data/Missing-VMWare-KVM-sections.rb +51 -0
  160. data/spec/os/debian/data/Missing-sections.rb +53 -0
  161. data/spec/os/debian/data/Script-Provisioner.rb +62 -0
  162. data/spec/os/debian/data/chef-solo-cookbooks/git_setup/Berksfile.lock +32 -0
  163. data/spec/os/debian/data/chef-solo-cookbooks/git_setup/README.md +81 -0
  164. data/spec/os/debian/data/chef-solo-cookbooks/git_setup/attributes/default.rb +3 -0
  165. data/spec/os/debian/data/chef-solo-cookbooks/git_setup/metadata.rb +11 -0
  166. data/spec/os/debian/data/chef-solo-cookbooks/git_setup/recipes/default.rb +30 -0
  167. data/spec/os/debian/data/chef-solo.json +5 -0
  168. data/spec/os/debian/data/test-script.sh +4 -0
  169. data/spec/os/debian/finder_spec.rb +59 -0
  170. data/spec/os/debian/mirrors_spec.rb +18 -0
  171. data/spec/os/debian/preseed_spec.rb +56 -0
  172. data/spec/os/debian/server_spec.rb +59 -0
  173. data/spec/os/debian/templates/apt_spec.rb +20 -0
  174. data/spec/os/debian/templates/boot_command_spec.rb +56 -0
  175. data/spec/os/debian/templates/disk_spec.rb +81 -0
  176. data/spec/os/debian/templates/keyboard_spec.rb +18 -0
  177. data/spec/os/debian/templates/locale_spec.rb +36 -0
  178. data/spec/os/debian/templates/mirrors_spec.rb +16 -0
  179. data/spec/os/debian/templates/network_spec.rb +38 -0
  180. data/spec/os/debian/templates/packages_spec.rb +17 -0
  181. data/spec/os/debian/templates/timezone_spec.rb +36 -0
  182. data/spec/os/debian/templates/user_spec.rb +25 -0
  183. data/spec/os/finder_spec.rb +21 -0
  184. data/spec/os/rhel/data/Fedora.rb +45 -0
  185. data/spec/os/rhel/data/Server-Custom.rb +54 -0
  186. data/spec/os/rhel/data/Server.rb +45 -0
  187. data/spec/os/rhel/finder_spec.rb +21 -0
  188. data/spec/os/ubuntu/cd_spec.rb +28 -0
  189. data/spec/os/ubuntu/data/Desktop.rb +61 -0
  190. data/spec/os/ubuntu/data/Server.rb +61 -0
  191. data/spec/os/ubuntu/finder_spec.rb +17 -0
  192. data/spec/os/ubuntu/mirrors_spec.rb +18 -0
  193. data/spec/utils/autozone_spec.rb +33 -0
  194. data/spec/virtual/virtual_box_spec.rb +16 -0
  195. metadata +405 -0
@@ -0,0 +1,84 @@
1
+ # Test file for Checking if the Builder meta-method works
2
+ require 'OS/Builder'
3
+ require 'Core/Locale'
4
+
5
+ # Describe test cases
6
+ describe PackerFiles::Builder do
7
+
8
+ # Check if the builder's instance eval functionality
9
+ # Works
10
+ it 'checks builder instance_eval #1' do
11
+ class TestBuilder < PackerFiles::Builder
12
+ type_accessor PackerFiles::Core::Locale
13
+ end
14
+ builder = TestBuilder.new
15
+ builder.Locale do |b|
16
+ b.default = 'en_IN'
17
+ end
18
+ builder.Locale.normalize
19
+ builder.Locale.default.should eql('en_IN.UTF-8')
20
+ end
21
+
22
+ # Check normalize functionalty
23
+ it 'checks normalization #5' do
24
+ class TestBuilder < PackerFiles::Builder
25
+ type_accessor PackerFiles::Core::Locale
26
+ end
27
+ builder = TestBuilder.new
28
+ builder.Locale do |b|
29
+ b.default = 'en_IN'
30
+ b.supported = ['en_IN']
31
+ end
32
+ builder.Locale.normalize
33
+ builder.Locale.default.should eql('en_IN.UTF-8')
34
+ builder.Locale.supported.first.should eql('en_IN.UTF-8')
35
+ end
36
+
37
+ # Check Hypervisor functionalty
38
+ it 'checks Hypervisor #1' do
39
+ class TestBuilder < PackerFiles::Builder
40
+ end
41
+ builder = TestBuilder.new
42
+ builder.Hypervisors do |h|
43
+ h.VirtualBox do |v|
44
+ v.cpu_count = 2
45
+ v.use_efi = false
46
+ end
47
+ h.VMWare do |v|
48
+ v.cpu_count = 2
49
+ v.use_efi = false
50
+ end
51
+ h.KVM do |v|
52
+ v.cpu_count = 2
53
+ v.use_efi = false
54
+ end
55
+ end
56
+ builder.Hypervisors.VirtualBox.cpu_count.should eql(2)
57
+ builder.Hypervisors.VirtualBox.use_efi.should be(false)
58
+ builder.Hypervisors.VMWare.cpu_count.should eql(2)
59
+ builder.Hypervisors.VMWare.use_efi.should be(false)
60
+ builder.Hypervisors.KVM.cpu_count.should eql(2)
61
+ builder.Hypervisors.KVM.use_efi.should be(false)
62
+ end
63
+
64
+ # Check Versions functionality
65
+ it 'checks Versions #1' do
66
+ class TestBuilder < PackerFiles::Builder
67
+ end
68
+ TestBuilder.respond_to?(:versions).should be(true)
69
+ TestBuilder.versions.empty?.should be(true)
70
+ end
71
+
72
+ # Check Versions functionality
73
+ it 'checks Versions #2' do
74
+ class TestBuilder < PackerFiles::Builder
75
+ def self.versions
76
+ ['12.04']
77
+ end
78
+ end
79
+ TestBuilder.respond_to?(:versions).should be(true)
80
+ TestBuilder.versions.empty?.should be(false)
81
+ TestBuilder.versions.first.should eql('12.04')
82
+ end
83
+
84
+ end
@@ -0,0 +1,159 @@
1
+ # Test file for CDImage class
2
+ require 'Core/CDImage'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::CDImage do
6
+
7
+ # Check for error conditions
8
+ it 'checks error #1' do
9
+ cd = PackerFiles::Core::CDImage.new do |var|
10
+ end
11
+ begin
12
+ cd.normalize
13
+ rescue PackerFiles::Core::NilException => e
14
+ e.message.should include('arch')
15
+ end
16
+ end
17
+
18
+ it 'checks error #2' do
19
+ cd = PackerFiles::Core::CDImage.new do |var|
20
+ var.arch = 'i386'
21
+ end
22
+ begin
23
+ cd.normalize
24
+ rescue PackerFiles::Core::NilException => e
25
+ e.message.should include('release')
26
+ end
27
+ end
28
+
29
+ it 'checks error #3' do
30
+ cd = PackerFiles::Core::CDImage.new do |var|
31
+ var.arch = 'i386'
32
+ var.release = '6.0.9'
33
+ end
34
+ begin
35
+ cd.normalize
36
+ rescue PackerFiles::Core::NilException => e
37
+ e.message.should include('iso_name_pattern')
38
+ end
39
+ end
40
+
41
+ it 'checks error #4' do
42
+ cd = PackerFiles::Core::CDImage.new do |var|
43
+ var.arch = 'i386'
44
+ var.release = '6.0.9'
45
+ var.iso_name_pattern = 'debian-6.0.9-i386-kde-CD-1.iso'
46
+ end
47
+ begin
48
+ cd.normalize
49
+ rescue PackerFiles::Core::NilException => e
50
+ e.message.should include('check_sum_pattern')
51
+ end
52
+ end
53
+
54
+ it 'checks error #5' do
55
+ cd = PackerFiles::Core::CDImage.new do |var|
56
+ var.arch = 'i386'
57
+ var.release = '6.0.9'
58
+ var.iso_name_pattern = 'debian-6.0.9-i386-kde-CD-1.iso'
59
+ var.check_sum_pattern = 'MD5SUM'
60
+ end
61
+ begin
62
+ cd.normalize
63
+ rescue PackerFiles::Core::NilException => e
64
+ e.message.should include('check_sum_type')
65
+ end
66
+ end
67
+
68
+ it 'checks error #6' do
69
+ cd = PackerFiles::Core::CDImage.new do |var|
70
+ var.arch = 'i386'
71
+ var.release = '6.0.9'
72
+ var.iso_name_pattern = 'debian-6.0.9-i386-kde-CD-1.iso'
73
+ var.check_sum_pattern = 'MD5SUM'
74
+ var.check_sum_type = 'md5'
75
+ end
76
+ begin
77
+ cd.normalize
78
+ rescue PackerFiles::Core::NilException => e
79
+ e.message.should include('index_urls')
80
+ rescue PackerFiles::Core::EmptyArrayException => e
81
+ e.message.should include('index_urls')
82
+ end
83
+ end
84
+
85
+ it 'checks iso / checksum values #1' do
86
+ cd = PackerFiles::Core::CDImage.new do |var|
87
+ var.arch = 'i386'
88
+ var.release = '6.0.9'
89
+ var.iso_name_pattern = 'debian-6.0.9-i386-kde-CD-1.iso'
90
+ var.check_sum_pattern = 'MD5SUMS'
91
+ var.check_sum_type = 'md5'
92
+ var.index_urls = [
93
+ 'http://cdimage.debian.org/mirror/cdimage/archive/@release@/@arch@/iso-cd/'
94
+ ]
95
+ end
96
+ cd.normalize
97
+ cd.iso_url.should eql('http://cdimage.debian.org/mirror/cdimage/archive/6.0.9/i386/iso-cd/debian-6.0.9-i386-kde-CD-1.iso')
98
+ cd.check_sum.should eql('b125597ef23366594eb18b82352e06f9') if cd.check_sum_type != 'none'
99
+ end
100
+
101
+ it 'checks iso / checksum values #2' do
102
+ cd = PackerFiles::Core::CDImage.new do |var|
103
+ var.arch = 'i386'
104
+ var.release = '6.0.9'
105
+ var.check_sum_type = 'md5'
106
+ var.iso_url = 'http://cdimage.debian.org/mirror/cdimage/archive/6.0.9/i386/iso-cd/debian-6.0.9-i386-kde-CD-1.iso'
107
+ var.check_sum = 'b125597ef23366594eb18b82352e06f9'
108
+ end
109
+ cd.normalize
110
+ cd.iso_url.should eql('http://cdimage.debian.org/mirror/cdimage/archive/6.0.9/i386/iso-cd/debian-6.0.9-i386-kde-CD-1.iso')
111
+ cd.check_sum.should eql('b125597ef23366594eb18b82352e06f9')
112
+ end
113
+
114
+ it 'checks iso / checksum values #3' do
115
+ class DebianCD < PackerFiles::Core::CDImageImpl
116
+ def get_iso_name_pattern
117
+ 'debian-6.0.9-i386-kde-CD-1.iso'
118
+ end
119
+ def get_check_sum_pattern
120
+ 'MD5SUMS'
121
+ end
122
+ def index_urls
123
+ ['http://cdimage.debian.org/mirror/cdimage/archive/@release@/@arch@/iso-cd/']
124
+ end
125
+ def get_check_sum_type
126
+ 'md5'
127
+ end
128
+ end
129
+ cd = PackerFiles::Core::CDImage.new do |var|
130
+ var.arch = 'i386'
131
+ var.release = '6.0.9'
132
+ var.impl = DebianCD.new
133
+ end
134
+ cd.normalize
135
+ cd.iso_url.should eql('http://cdimage.debian.org/mirror/cdimage/archive/6.0.9/i386/iso-cd/debian-6.0.9-i386-kde-CD-1.iso')
136
+ cd.check_sum.should eql('b125597ef23366594eb18b82352e06f9') if cd.check_sum_type != 'none'
137
+ end
138
+
139
+ it 'checks documentation #1' do
140
+ cd = PackerFiles::Core::CDImage.new do |var|
141
+ var.arch = 'i386'
142
+ var.release = '6.0.9'
143
+ var.iso_name_pattern = 'debian-6.0.9-i386-kde-CD-1.iso'
144
+ var.check_sum_pattern = 'MD5SUMS'
145
+ var.check_sum_type = 'md5'
146
+ var.index_urls = [
147
+ 'http://cdimage.debian.org/mirror/cdimage/archive/@release@/@arch@/iso-cd/'
148
+ ]
149
+ end
150
+ cd.normalize
151
+
152
+ File.exist?(cd.class.doc_file).should be(true)
153
+ result = PackerFiles.evaluate_erb(cd.class.doc_file, Hash.new)
154
+ result.should_not include('kde')
155
+ result = PackerFiles.evaluate_erb(cd.class.doc_file, {'obj' => cd})
156
+ result.should include('kde')
157
+ end
158
+
159
+ end
@@ -0,0 +1,191 @@
1
+ # Test file for Disk
2
+ require 'Core/Disk'
3
+ require 'Core/Partition'
4
+
5
+ # Describe test cases
6
+ describe PackerFiles::Core::Disk do
7
+
8
+ # Check normalize functionalty
9
+ it 'checks normalization #1' do
10
+ disk = PackerFiles::Core::Disk.new
11
+ disk.name = 'sda'
12
+ disk.size = '2GiB'
13
+ disk.normalize
14
+ disk.size.should eql(2048)
15
+ end
16
+
17
+ it 'checks normalization #2' do
18
+ disk = PackerFiles::Core::Disk.new
19
+ disk.name = 'sda'
20
+ disk.size = '2MiB'
21
+ disk.normalize
22
+ disk.size.should eql(2)
23
+ end
24
+
25
+ it 'checks normalization #3' do
26
+ disk = PackerFiles::Core::Disk.new
27
+ disk.name = 'sda'
28
+ disk.size = '2TiB'
29
+ disk.normalize
30
+ disk.size.should eql(2097152)
31
+ end
32
+
33
+ it 'checks normalization #4' do
34
+ disk = PackerFiles::Core::Disk.new
35
+ disk.name = 'sda'
36
+ disk.size = '2GB'
37
+ disk.normalize
38
+ disk.size.should eql(1907)
39
+ end
40
+
41
+ it 'checks normalization #5' do
42
+ disk = PackerFiles::Core::Disk.new
43
+ disk.name = 'sda'
44
+ disk.size = '100MB'
45
+ disk.normalize
46
+ disk.size.should eql(95)
47
+ end
48
+
49
+ it 'checks normalization #6' do
50
+ disk = PackerFiles::Core::Disk.new
51
+ disk.name = 'sda'
52
+ disk.size = '1TB'
53
+ disk.normalize
54
+ disk.size.should eql(909486)
55
+ end
56
+
57
+ # Checks for disks and Partitions
58
+ it 'checks normalization #7' do
59
+ part = PackerFiles::Core::Partition.new
60
+ part.name = 'A'
61
+ part.size = '2MB'
62
+ disk = PackerFiles::Core::Disk.new
63
+ disk.name = 'sda'
64
+ disk.size = '1MB'
65
+ disk.partitions.push(part)
66
+ begin
67
+ disk.normalize
68
+ rescue PackerFiles::Core::SizeException => e
69
+ disk.size.should eql(1)
70
+ end
71
+ end
72
+
73
+ it 'checks normalization #8' do
74
+ part = PackerFiles::Core::Partition.new
75
+ part.name = 'A'
76
+ part.size = '1MB'
77
+ disk = PackerFiles::Core::Disk.new
78
+ disk.name = 'sda'
79
+ disk.size = '1MB'
80
+ disk.partitions.push(part)
81
+ disk.normalize
82
+ disk.size.should eql(1)
83
+ end
84
+
85
+ it 'checks Partition evaluation #9' do
86
+ disk = PackerFiles::Core::Disk.new
87
+ disk.name = 'sda'
88
+ disk.size = '1MB'
89
+ disk.Partition do |p|
90
+ p.name = 'A'
91
+ p.size = '1MB'
92
+ end
93
+ disk.normalize
94
+ disk.size.should eql(1)
95
+ end
96
+
97
+ it 'checks Partition evaluation #10' do
98
+ disk = PackerFiles::Core::Disk.new
99
+ disk.name = 'sda'
100
+ disk.size = '1MB'
101
+ disk.Partition do |p|
102
+ p.size = '1MB'
103
+ end
104
+ disk.normalize
105
+ disk.size.should eql(1)
106
+ disk.partitions.first.size.should eql(1)
107
+ disk.partitions.first.name.should eql(0)
108
+ end
109
+
110
+ it 'checks Partition evaluation #11' do
111
+ disk = PackerFiles::Core::Disk.new
112
+ disk.name = 'sda'
113
+ disk.size = '2MB'
114
+ disk.Partition do |p|
115
+ p.size = '1MB'
116
+ end
117
+ disk.Partition do |p|
118
+ p.size = '1MB'
119
+ end
120
+ disk.normalize
121
+ disk.size.should eql(2)
122
+ disk.partitions.first.size.should eql(1)
123
+ disk.partitions.first.name.should eql(0)
124
+ disk.partitions.last.size.should eql(1)
125
+ disk.partitions.last.name.should eql(1)
126
+ end
127
+
128
+ it 'checks VG evaluation #12' do
129
+ disk = PackerFiles::Core::Disk.new
130
+ disk.name = 'sda'
131
+ disk.size = '6GiB'
132
+ disk.Partition do |p|
133
+ p.size = '5GiB'
134
+ end
135
+ disk.Partition do |p|
136
+ p.size = '1GiB'
137
+ end
138
+ disk.VolumeGroup do |v|
139
+ v.name = 'VG'
140
+ v.disk_names = [0, 1]
141
+ v.LogicalVolume do |l|
142
+ l.size = '2GiB'
143
+ end
144
+ v.LogicalVolume do |l|
145
+ l.size = '4GiB'
146
+ end
147
+ end
148
+ disk.normalize
149
+ disk.vg.lvs.size.should eql(2)
150
+ disk.vg.lvs.first.size.should eql(2048)
151
+ disk.vg.lvs.first.vg_name.should eql('VG')
152
+ disk.vg.lvs.last.size.should eql(4096)
153
+ disk.vg.lvs.last.vg_name.should eql('VG')
154
+ end
155
+
156
+ it 'checks VG evaluation #13' do
157
+ disk = PackerFiles::Core::Disk.new
158
+ disk.name = 'sda'
159
+ disk.size = '10GiB'
160
+ disk.VolumeGroup do |v|
161
+ v.name = 'VG'
162
+ v.disk_names = ['sda']
163
+ v.LogicalVolume do |l|
164
+ l.size = '2GiB'
165
+ end
166
+ v.LogicalVolume do |l|
167
+ l.size = '4GiB'
168
+ end
169
+ end
170
+ disk.normalize
171
+ disk.vg.lvs.size.should eql(2)
172
+ disk.vg.lvs.first.size.should eql(2048)
173
+ disk.vg.lvs.first.vg_name.should eql('VG')
174
+ disk.vg.lvs.last.size.should eql(4096)
175
+ disk.vg.lvs.last.vg_name.should eql('VG')
176
+ end
177
+
178
+ it 'checks Disk documentation #1' do
179
+ disk = PackerFiles::Core::Disk.new
180
+ disk.name = 'sdcc'
181
+ disk.size = '10GiB'
182
+ disk.normalize
183
+ File.exist?(disk.class.doc_file).should be(true)
184
+ result = PackerFiles.evaluate_erb(disk.class.doc_file, Hash.new)
185
+ result.should_not include((10*1024).to_s)
186
+ result = PackerFiles.evaluate_erb(disk.class.doc_file, {'obj' => disk})
187
+ result.should include((10*1024).to_s)
188
+ result.should include('sdcc')
189
+ end
190
+
191
+ end
@@ -0,0 +1,36 @@
1
+ # Test file for Keyboard
2
+ require 'Core/Keyboard'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::Keyboard do
6
+
7
+ # Check normalize functionalty
8
+ it 'checks normalization #1' do
9
+ keyboard = PackerFiles::Core::Keyboard.new
10
+ keyboard.variant = 'us'
11
+ keyboard.layout = 'us'
12
+ keyboard.normalize
13
+ keyboard.layout.should eql('us')
14
+ end
15
+
16
+ it 'checks normalization #2' do
17
+ keyboard = PackerFiles::Core::Keyboard.new
18
+ begin
19
+ keyboard.normalize
20
+ rescue PackerFiles::Core::NilException => e
21
+ keyboard.layout.should be_nil
22
+ end
23
+ end
24
+
25
+ it 'checks Keyboard documentation #1' do
26
+ keyboard = PackerFiles::Core::Keyboard.new
27
+ keyboard.variant = 'xyZ'
28
+ keyboard.layout = 'aBC'
29
+ keyboard.normalize
30
+ File.exist?(keyboard.class.doc_file).should be(true)
31
+ result = PackerFiles.evaluate_erb(keyboard.class.doc_file, {'obj' => keyboard})
32
+ result.should include('xyZ')
33
+ result.should include('aBC')
34
+ end
35
+
36
+ end
@@ -0,0 +1,73 @@
1
+ # Test file for locale
2
+ require 'Core/Locale'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::Locale do
6
+
7
+ # Check normalize functionalty
8
+ it 'checks normalization #1' do
9
+ locale = PackerFiles::Core::Locale.new
10
+ locale.default = 'en_IN'
11
+ locale.normalize
12
+ locale.default.should eql('en_IN.UTF-8')
13
+ end
14
+
15
+ it 'checks normalization #2' do
16
+ locale = PackerFiles::Core::Locale.new
17
+ locale.default = 'en_IN'
18
+ locale.normalize(false)
19
+ locale.default.should eql('en_IN')
20
+ end
21
+
22
+ it 'checks normalization #3' do
23
+ locale = PackerFiles::Core::Locale.new
24
+ locale.default = 'en_IN'
25
+ locale.normalize(true, '.ABC')
26
+ locale.default.should eql('en_IN.ABC')
27
+ end
28
+
29
+ # Check normalize functionalty
30
+ it 'checks normalization #4' do
31
+ locale = PackerFiles::Core::Locale.new
32
+ locale.default = 'en_IN'
33
+ locale.supported = ['en_IN']
34
+ locale.normalize
35
+ locale.default.should eql('en_IN.UTF-8')
36
+ locale.supported.first.should eql('en_IN.UTF-8')
37
+ end
38
+
39
+ it 'checks normalization #5' do
40
+ locale = PackerFiles::Core::Locale.new
41
+ locale.country = 'IN'
42
+ locale.language = 'en'
43
+ locale.supported = ['en_IN']
44
+ locale.normalize
45
+ locale.default.should eql('en_IN.UTF-8')
46
+ locale.supported.first.should eql('en_IN.UTF-8')
47
+ end
48
+
49
+ # Checks yield functionality
50
+ it 'checks yield functionality #1' do
51
+ locale = PackerFiles::Core::Locale.new do |obj|
52
+ obj.default = 'en_IN'
53
+ obj.supported = ['en_IN']
54
+ obj.normalize
55
+ end
56
+ locale.default.should eql('en_IN.UTF-8')
57
+ locale.supported.first.should eql('en_IN.UTF-8')
58
+ end
59
+
60
+ it 'checks Locale documentation #1' do
61
+ locale = PackerFiles::Core::Locale.new
62
+ locale.default = 'de_DE'
63
+ locale.supported = ['en_KN']
64
+ locale.normalize
65
+
66
+ File.exist?(locale.class.doc_file).should be(true)
67
+ result = PackerFiles.evaluate_erb(locale.class.doc_file, {'obj' => locale})
68
+ result.should include('de_DE')
69
+ result.should include('en_KN')
70
+ end
71
+
72
+
73
+ end
@@ -0,0 +1,96 @@
1
+ # Test file for Network
2
+ require 'Core/Network'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::Network do
6
+
7
+ # Check normalize functionalty
8
+ it 'checks normalization #1' do
9
+ net = PackerFiles::Core::Network.new
10
+ net.interface = 'eth0'
11
+ net.type = PackerFiles::Core::Network::IPV4
12
+ net.normalize
13
+ end
14
+
15
+ it 'checks normalization #2' do
16
+ net = PackerFiles::Core::Network.new
17
+ net.interface = 'eth0'
18
+ net.type = PackerFiles::Core::Network::STATIC | PackerFiles::Core::Network::IPV4
19
+ net.ip = '10.10.10.10'
20
+ net.mask = '255.255.0.0'
21
+ net.gateway = '10.11.12.13'
22
+ net.dns = ['10.20.30.50']
23
+ net.normalize
24
+ end
25
+
26
+ it 'checks normalization #3' do
27
+ net = PackerFiles::Core::Network.new
28
+ net.interface = 'eth0'
29
+ net.type = PackerFiles::Core::Network::STATIC | PackerFiles::Core::Network::IPV4
30
+ net.ip = '10.10.10.10'
31
+ net.mask = '255.255.0.0'
32
+ net.gateway = '10.11.12.13'
33
+ begin
34
+ net.normalize
35
+ rescue PackerFiles::Core::EmptyArrayException => e
36
+ net.gateway.should eql('10.11.12.13')
37
+ end
38
+ end
39
+
40
+ it 'checks normalization #4' do
41
+ net = PackerFiles::Core::Network.new
42
+ net.interface = 'eth0'
43
+ net.type = PackerFiles::Core::Network::STATIC | PackerFiles::Core::Network::IPV4
44
+ net.ip = '10.10.10.10'
45
+ net.mask = '255.255.0.0'
46
+ begin
47
+ net.normalize
48
+ rescue PackerFiles::Core::NilException => e
49
+ net.mask.should eql('255.255.0.0')
50
+ end
51
+ end
52
+
53
+ it 'checks normalization #5' do
54
+ net = PackerFiles::Core::Network.new
55
+ net.interface = 'eth0'
56
+ net.type = PackerFiles::Core::Network::STATIC | PackerFiles::Core::Network::IPV4
57
+ net.ip = '10.10.10.10'
58
+ begin
59
+ net.normalize
60
+ rescue PackerFiles::Core::NilException => e
61
+ net.ip.should eql('10.10.10.10')
62
+ end
63
+ end
64
+
65
+ it 'checks normalization #6' do
66
+ net = PackerFiles::Core::Network.new
67
+ net.interface = 'eth0'
68
+ net.type = PackerFiles::Core::Network::STATIC | PackerFiles::Core::Network::IPV4
69
+ begin
70
+ net.normalize
71
+ rescue PackerFiles::Core::NilException => e
72
+ net.interface.should eql('eth0')
73
+ end
74
+ end
75
+
76
+ it 'checks Documentation #1' do
77
+ net = PackerFiles::Core::Network.new
78
+ net.interface = 'eth23'
79
+ net.type = PackerFiles::Core::Network::STATIC | PackerFiles::Core::Network::IPV4
80
+ net.ip = '10.10.10.10'
81
+ net.mask = '255.255.0.0'
82
+ net.gateway = '10.11.12.13'
83
+ net.dns = ['10.20.30.50']
84
+ net.normalize
85
+ File.exist?(net.class.doc_file).should be(true)
86
+ result = PackerFiles.evaluate_erb(net.class.doc_file, {'obj' => net})
87
+ result.should include('eth23')
88
+ result.should include('PackerFiles::Core::Network::IPV4 | PackerFiles::Core::Network::STATIC')
89
+ result.should include('10.10.10.10')
90
+ result.should include('10.11.12.13')
91
+ result.should include('255.255.0.0')
92
+ result.should include('["10.20.30.50"]')
93
+ end
94
+
95
+
96
+ end
@@ -0,0 +1,18 @@
1
+ # Test file for Packages
2
+ require 'Core/Packages'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::Packages do
6
+
7
+ it 'checks Packages documentation #1' do
8
+ pkg = PackerFiles::Core::Packages.new
9
+ pkg.list += ['nfs-common']
10
+ pkg.normalize
11
+
12
+ File.exist?(pkg.class.doc_file).should be(true)
13
+ result = PackerFiles.evaluate_erb(pkg.class.doc_file, {'obj' => pkg})
14
+ result.should include('nfs-common')
15
+ end
16
+
17
+
18
+ end
@@ -0,0 +1,43 @@
1
+ # Test file for TimeZone
2
+ require 'Core/TimeZone'
3
+
4
+ # Describe test cases
5
+ describe PackerFiles::Core::TimeZone do
6
+
7
+ # Check normalize functionalty
8
+ it 'checks normalization #1' do
9
+ tz = PackerFiles::Core::TimeZone.new
10
+ tz.utc = true
11
+ tz.zone = 'Asia/Kolkata'
12
+ tz.normalize
13
+ tz.zone.should eql('Asia/Kolkata')
14
+ end
15
+
16
+ # Check normalize functionalty
17
+ it 'checks normalization #2' do
18
+ tz = PackerFiles::Core::TimeZone.new
19
+ tz.auto = true
20
+ tz.normalize
21
+ tz.zone.should_not be_nil
22
+ end
23
+
24
+ # Check normalize functionalty
25
+ it 'checks normalization #3' do
26
+ tz = PackerFiles::Core::TimeZone.new
27
+ tz.auto = false
28
+ tz.normalize
29
+ tz.zone.should be_nil
30
+ end
31
+
32
+ it 'checks timezone documentation #1' do
33
+ tz = PackerFiles::Core::TimeZone.new
34
+ tz.utc = false
35
+ tz.zone = 'Asia/Kolkata'
36
+ tz.normalize
37
+ File.exist?(tz.class.doc_file).should be(true)
38
+ result = PackerFiles.evaluate_erb(tz.class.doc_file, {'obj' => tz})
39
+ result.should include('Asia/Kolkata')
40
+ result.should include('timezone.utc = false')
41
+ end
42
+
43
+ end