minimart 1.1.3 → 1.1.6
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.
- checksums.yaml +8 -8
- data/.travis.yml +3 -0
- data/lib/minimart/cookbook.rb +16 -2
- data/lib/minimart/mirror/inventory_builder.rb +11 -4
- data/lib/minimart/version.rb +1 -1
- data/lib/minimart/web/html_generator.rb +31 -7
- data/lib/minimart/web/template_helper.rb +13 -1
- data/minimart.gemspec +10 -5
- data/spec/fixtures/bad_metadata_inventory.yml +5 -0
- data/spec/fixtures/sample_cookbook/metadata.rb +2 -0
- data/spec/invalid/bad_metadata_cookbook/Berksfile +3 -0
- data/spec/invalid/bad_metadata_cookbook/CHANGELOG.md +3 -0
- data/spec/invalid/bad_metadata_cookbook/Gemfile +16 -0
- data/spec/invalid/bad_metadata_cookbook/LICENSE +3 -0
- data/spec/invalid/bad_metadata_cookbook/README.md +42 -0
- data/spec/invalid/bad_metadata_cookbook/Thorfile +5 -0
- data/spec/invalid/bad_metadata_cookbook/Vagrantfile +90 -0
- data/spec/invalid/bad_metadata_cookbook/chefignore +94 -0
- data/spec/invalid/bad_metadata_cookbook/metadata.rb +10 -0
- data/spec/invalid/bad_metadata_cookbook/recipes/default.rb +8 -0
- data/spec/lib/minimart/cookbook_spec.rb +10 -0
- data/spec/lib/minimart/mirror/inventory_builder_spec.rb +21 -0
- data/spec/lib/minimart/web/html_generator_spec.rb +14 -2
- data/web/_assets/stylesheets/main.css +6 -0
- data/web/assets/javascripts/application.min.js +14 -5
- data/web/assets/stylesheets/application.min.css +1 -1
- data/web/templates/cookbook_show.erb +6 -0
- metadata +91 -10
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MjlkNTAzOTQ2YjM4YzNjNGQwNTE0NmE1NTY3MzMzZjlmYTdiZWJmOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NzE5OTFlZDI3MjdkZmU2OGRlNjczZDZhN2YxNWQ0ZTYzNzk2ZDI5MQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZmIzZGQ0YzA4MWI2MTQxMGZhMDk2NjMzMjk1YzgxMTE5NDAyMDk2OGRiMDVm
|
10
|
+
Y2IzNWExN2Q5ZTJlYzY3YjU2MTE5ZWNkM2VlMDVjOGJjMDAyYmEzZTI4N2Mw
|
11
|
+
OTZhYWI0NDQzMmRjM2FlYWQ2ZjVkYWZmOTlhYjlmYzNkYTg2NzE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NjQ3ODcxNjY0Y2EwOWIwYjNhNTgwMGNiOThlMjE1NWVjMDQ5OGU3ODhjZGEz
|
14
|
+
ZjZhNDg5MTY3YTU1YzQzNWQxNDNlMzM5ZmI5OGVlMDcyOTQwZThlN2ZiZjRh
|
15
|
+
YTY5YjY1NzZiNWFiZmQyODU3ZWQyODBmNDFkM2VjZTZjMTRmYmQ=
|
data/.travis.yml
CHANGED
@@ -3,6 +3,9 @@ cache: bundler
|
|
3
3
|
rvm:
|
4
4
|
- 2.2.3
|
5
5
|
- 2.1.7
|
6
|
+
notifications:
|
7
|
+
flowdock:
|
8
|
+
secure: s2EpKpFFZJL51GChkIM/B8CpoiAvj56aYp7iSfKcD5aZvdBRssXXt9i3t39TA/hD8NkWfM07eVbhL3tGAv2GcXhTOlXZSoljzGdzFdGROZZd4asd1pLK8VuJTQrEKPDfKp/+XsIfbfOrTFf19qhBAfk5A0TRUXVMITiMkVIo1D4=
|
6
9
|
deploy:
|
7
10
|
provider: rubygems
|
8
11
|
api_key:
|
data/lib/minimart/cookbook.rb
CHANGED
@@ -19,7 +19,7 @@ module Minimart
|
|
19
19
|
new (Ridley::Chef::Cookbook.from_path(path))
|
20
20
|
end
|
21
21
|
|
22
|
-
# @param [Ridley::Chef::
|
22
|
+
# @param [Ridley::Chef::Cookbook] raw_cookbook
|
23
23
|
def initialize(raw_cookbook)
|
24
24
|
@raw_cookbook = raw_cookbook
|
25
25
|
end
|
@@ -54,6 +54,18 @@ module Minimart
|
|
54
54
|
metadata.maintainer
|
55
55
|
end
|
56
56
|
|
57
|
+
# Get the source url of the cookbook
|
58
|
+
# @return [String]
|
59
|
+
def source_url
|
60
|
+
metadata.source_url
|
61
|
+
end
|
62
|
+
|
63
|
+
# Get the issues url of the cookbook
|
64
|
+
# @return [String]
|
65
|
+
def issues_url
|
66
|
+
metadata.issues_url
|
67
|
+
end
|
68
|
+
|
57
69
|
# Get the path to the cookbook on the file system
|
58
70
|
# @return [String]
|
59
71
|
def path
|
@@ -112,7 +124,9 @@ module Minimart
|
|
112
124
|
url: cookbook_path(self),
|
113
125
|
downloaded_at: downloaded_at,
|
114
126
|
download_date: download_date,
|
115
|
-
platforms: normalized_platforms
|
127
|
+
platforms: normalized_platforms,
|
128
|
+
source_url: source_url,
|
129
|
+
issues_url: issues_url
|
116
130
|
}
|
117
131
|
end
|
118
132
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'ridley'
|
1
2
|
module Minimart
|
2
3
|
module Mirror
|
3
4
|
|
@@ -33,10 +34,16 @@ module Minimart
|
|
33
34
|
# precedence over information found elsewhere.
|
34
35
|
def install_cookbooks_with_explicit_location
|
35
36
|
inventory_requirements.each_with_explicit_location do |requirement|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
37
|
+
begin
|
38
|
+
requirement.fetch_cookbook do |cookbook|
|
39
|
+
validate_cookbook_against_local_store(cookbook, requirement)
|
40
|
+
add_artifact_to_graph(cookbook)
|
41
|
+
add_cookbook_to_local_store(cookbook.path, requirement.to_hash)
|
42
|
+
end
|
43
|
+
rescue Ridley::Errors::MissingNameAttribute
|
44
|
+
#handle Ridley::Errors::MissingNameAttribute and other cookbook specific errors by ignoring them.
|
45
|
+
#hopefuly the next version will be valid. eg. https://git.corp.adobe.com/EchoSignCommunity/apt/blob/1.5.0/metadata.rb
|
46
|
+
next
|
40
47
|
end
|
41
48
|
end
|
42
49
|
end
|
data/lib/minimart/version.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
require 'sprockets'
|
2
|
+
require 'sass'
|
3
|
+
require 'uglifier'
|
4
|
+
|
1
5
|
require 'minimart/web/dashboard_generator'
|
2
6
|
require 'minimart/web/cookbook_show_page_generator'
|
3
7
|
|
@@ -8,11 +12,7 @@ module Minimart
|
|
8
12
|
class HtmlGenerator
|
9
13
|
include Minimart::Web::TemplateHelper
|
10
14
|
|
11
|
-
|
12
|
-
attr_reader :web_directory
|
13
|
-
|
14
|
-
# @return [Minimart::Web::Cookbooks] the set of cookbooks to generate HTML for
|
15
|
-
attr_reader :cookbooks
|
15
|
+
attr_reader :web_directory, :cookbooks
|
16
16
|
|
17
17
|
# @param [Hash] opts
|
18
18
|
# @option opts [String] :web_directory The directory to put any generated HTML in
|
@@ -24,15 +24,39 @@ module Minimart
|
|
24
24
|
|
25
25
|
# Generate any HTML!
|
26
26
|
def generate
|
27
|
-
|
27
|
+
generate_assets
|
28
28
|
generate_index
|
29
29
|
generate_cookbook_show_pages
|
30
30
|
end
|
31
31
|
|
32
32
|
private
|
33
33
|
|
34
|
+
def generate_assets
|
35
|
+
generate_js
|
36
|
+
generate_css
|
37
|
+
copy_assets
|
38
|
+
end
|
39
|
+
|
34
40
|
def copy_assets
|
35
|
-
FileUtils.cp_r(
|
41
|
+
FileUtils.cp_r(compiled_asset_directory, web_directory)
|
42
|
+
end
|
43
|
+
|
44
|
+
def generate_js
|
45
|
+
js_dir = Pathname.new(compiled_asset_directory).join('javascripts')
|
46
|
+
FileUtils.mkdir_p(js_dir)
|
47
|
+
sprockets = Sprockets::Environment.new(minimart_root_directory)
|
48
|
+
sprockets.js_compressor = :uglify
|
49
|
+
sprockets.append_path(Pathname.new(raw_asset_directory).join('javascripts'))
|
50
|
+
sprockets['manifest.js'].write_to(js_dir.join('application.min.js'))
|
51
|
+
end
|
52
|
+
|
53
|
+
def generate_css
|
54
|
+
css_dir = Pathname.new(compiled_asset_directory).join('stylesheets')
|
55
|
+
FileUtils.mkdir_p(css_dir)
|
56
|
+
sprockets = Sprockets::Environment.new(minimart_root_directory)
|
57
|
+
sprockets.css_compressor = :sass
|
58
|
+
sprockets.append_path(Pathname.new(raw_asset_directory).join('stylesheets'))
|
59
|
+
sprockets['manifest.css'].write_to(css_dir.join('application.min.css'))
|
36
60
|
end
|
37
61
|
|
38
62
|
def generate_index
|
@@ -39,7 +39,19 @@ module Minimart
|
|
39
39
|
|
40
40
|
# @return [String] The path to the Minimart web directory
|
41
41
|
def minimart_web_directory
|
42
|
-
File.join(
|
42
|
+
File.join(minimart_root_directory, '..', 'web')
|
43
|
+
end
|
44
|
+
|
45
|
+
def minimart_root_directory
|
46
|
+
Minimart.root_path
|
47
|
+
end
|
48
|
+
|
49
|
+
def raw_asset_directory
|
50
|
+
File.join(minimart_web_directory, '_assets')
|
51
|
+
end
|
52
|
+
|
53
|
+
def compiled_asset_directory
|
54
|
+
File.join(minimart_web_directory, 'assets')
|
43
55
|
end
|
44
56
|
|
45
57
|
# Get the path for a web asset (CSS, JS, etc...)
|
data/minimart.gemspec
CHANGED
@@ -8,24 +8,29 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Minimart::VERSION
|
9
9
|
spec.summary = %q{MiniMart is a RubyGem that makes it simple to build a repository of Chef cookbooks using only static files.}
|
10
10
|
spec.description = %q{MiniMart is a RubyGem that makes it simple to build a repository of Chef cookbooks using only static files.}
|
11
|
-
spec.authors = 'MadGlory'
|
11
|
+
spec.authors = ['MadGlory', 'Todd Pickell', 'Others']
|
12
12
|
spec.homepage = 'http://electric-it.github.io/minimart/'
|
13
13
|
spec.license = 'Apache License, v2.0'
|
14
14
|
|
15
|
+
spec.required_ruby_version = ['~> 2.1', '~> 2.2']
|
16
|
+
|
15
17
|
spec.files = `git ls-files -z`.split("\x0")
|
16
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
20
|
spec.require_paths = ['lib']
|
19
21
|
|
20
|
-
spec.add_dependency 'git', '~> 1.2.6'
|
22
|
+
spec.add_dependency 'git', '~> 1.2', '>= 1.2.6'
|
21
23
|
spec.add_dependency 'minitar', '~> 0.5'
|
22
|
-
spec.add_dependency 'octokit', '~> 3.7
|
23
|
-
spec.add_dependency 'redcarpet', '
|
24
|
+
spec.add_dependency 'octokit', '~> 3.7'
|
25
|
+
spec.add_dependency 'redcarpet', '= 3.3.2'
|
24
26
|
spec.add_dependency 'rest-client', '~> 1.7'
|
25
27
|
spec.add_dependency 'ridley', '~> 4.1'
|
26
|
-
spec.add_dependency 'solve', '~> 1.2.1'
|
28
|
+
spec.add_dependency 'solve', '~> 1.2', '>= 1.2.1'
|
27
29
|
spec.add_dependency 'thor', '~> 0.19'
|
28
30
|
spec.add_dependency 'tilt', '~> 2.0'
|
31
|
+
spec.add_dependency 'sprockets', '~> 3.5'
|
32
|
+
spec.add_dependency 'uglifier', '~> 2.7'
|
33
|
+
spec.add_dependency 'sass', '~> 3.4'
|
29
34
|
|
30
35
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
31
36
|
spec.add_development_dependency 'rake', '~> 10.3'
|
@@ -5,5 +5,7 @@ license 'All rights reserved'
|
|
5
5
|
description 'Installs/Configures sample_cookbook'
|
6
6
|
long_description 'Installs/Configures sample_cookbook'
|
7
7
|
version '1.2.3'
|
8
|
+
source_url 'https://github.com/electric-it/minimart'
|
9
|
+
issues_url 'https://github.com/electric-it/minimart/issues'
|
8
10
|
|
9
11
|
depends 'yum', '> 3.0.0'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'berkshelf'
|
4
|
+
|
5
|
+
# Uncomment these lines if you want to live on the Edge:
|
6
|
+
#
|
7
|
+
# group :development do
|
8
|
+
# gem "berkshelf", github: "berkshelf/berkshelf"
|
9
|
+
# gem "vagrant", github: "mitchellh/vagrant", tag: "v1.6.3"
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# group :plugins do
|
13
|
+
# gem "vagrant-berkshelf", github: "berkshelf/vagrant-berkshelf"
|
14
|
+
# gem "vagrant-omnibus", github: "schisamo/vagrant-omnibus"
|
15
|
+
# end
|
16
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# sample_cookbook-cookbook
|
2
|
+
|
3
|
+
TODO: Enter the cookbook description here.
|
4
|
+
|
5
|
+
## Supported Platforms
|
6
|
+
|
7
|
+
TODO: List your supported platforms.
|
8
|
+
|
9
|
+
## Attributes
|
10
|
+
|
11
|
+
<table>
|
12
|
+
<tr>
|
13
|
+
<th>Key</th>
|
14
|
+
<th>Type</th>
|
15
|
+
<th>Description</th>
|
16
|
+
<th>Default</th>
|
17
|
+
</tr>
|
18
|
+
<tr>
|
19
|
+
<td><tt>['sample_cookbook']['bacon']</tt></td>
|
20
|
+
<td>Boolean</td>
|
21
|
+
<td>whether to include bacon</td>
|
22
|
+
<td><tt>true</tt></td>
|
23
|
+
</tr>
|
24
|
+
</table>
|
25
|
+
|
26
|
+
## Usage
|
27
|
+
|
28
|
+
### sample_cookbook::default
|
29
|
+
|
30
|
+
Include `sample_cookbook` in your node's `run_list`:
|
31
|
+
|
32
|
+
```json
|
33
|
+
{
|
34
|
+
"run_list": [
|
35
|
+
"recipe[sample_cookbook::default]"
|
36
|
+
]
|
37
|
+
}
|
38
|
+
```
|
39
|
+
|
40
|
+
## License and Authors
|
41
|
+
|
42
|
+
Author:: YOUR_NAME (<YOUR_EMAIL>)
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
5
|
+
VAGRANTFILE_API_VERSION = '2'
|
6
|
+
|
7
|
+
Vagrant.require_version '>= 1.5.0'
|
8
|
+
|
9
|
+
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
10
|
+
# All Vagrant configuration is done here. The most common configuration
|
11
|
+
# options are documented and commented below. For a complete reference,
|
12
|
+
# please see the online documentation at vagrantup.com.
|
13
|
+
|
14
|
+
config.vm.hostname = 'sample-cookbook-berkshelf'
|
15
|
+
|
16
|
+
# Set the version of chef to install using the vagrant-omnibus plugin
|
17
|
+
# NOTE: You will need to install the vagrant-omnibus plugin:
|
18
|
+
#
|
19
|
+
# $ vagrant plugin install vagrant-omnibus
|
20
|
+
#
|
21
|
+
if Vagrant.has_plugin?
|
22
|
+
config.omnibus.chef_version = 'latest'
|
23
|
+
end
|
24
|
+
|
25
|
+
# Every Vagrant virtual environment requires a box to build off of.
|
26
|
+
# If this value is a shorthand to a box in Vagrant Cloud then
|
27
|
+
# config.vm.box_url doesn't need to be specified.
|
28
|
+
config.vm.box = 'chef/ubuntu-14.04'
|
29
|
+
|
30
|
+
|
31
|
+
# Assign this VM to a host-only network IP, allowing you to access it
|
32
|
+
# via the IP. Host-only networks can talk to the host machine as well as
|
33
|
+
# any other machines on the same network, but cannot be accessed (through this
|
34
|
+
# network interface) by any external networks.
|
35
|
+
config.vm.network :private_network, type: 'dhcp'
|
36
|
+
|
37
|
+
# Create a forwarded port mapping which allows access to a specific port
|
38
|
+
# within the machine from a port on the host machine. In the example below,
|
39
|
+
# accessing "localhost:8080" will access port 80 on the guest machine.
|
40
|
+
|
41
|
+
# Share an additional folder to the guest VM. The first argument is
|
42
|
+
# the path on the host to the actual folder. The second argument is
|
43
|
+
# the path on the guest to mount the folder. And the optional third
|
44
|
+
# argument is a set of non-required options.
|
45
|
+
# config.vm.synced_folder "../data", "/vagrant_data"
|
46
|
+
|
47
|
+
# Provider-specific configuration so you can fine-tune various
|
48
|
+
# backing providers for Vagrant. These expose provider-specific options.
|
49
|
+
# Example for VirtualBox:
|
50
|
+
#
|
51
|
+
# config.vm.provider :virtualbox do |vb|
|
52
|
+
# # Don't boot with headless mode
|
53
|
+
# vb.gui = true
|
54
|
+
#
|
55
|
+
# # Use VBoxManage to customize the VM. For example to change memory:
|
56
|
+
# vb.customize ["modifyvm", :id, "--memory", "1024"]
|
57
|
+
# end
|
58
|
+
#
|
59
|
+
# View the documentation for the provider you're using for more
|
60
|
+
# information on available options.
|
61
|
+
|
62
|
+
# The path to the Berksfile to use with Vagrant Berkshelf
|
63
|
+
# config.berkshelf.berksfile_path = "./Berksfile"
|
64
|
+
|
65
|
+
# Enabling the Berkshelf plugin. To enable this globally, add this configuration
|
66
|
+
# option to your ~/.vagrant.d/Vagrantfile file
|
67
|
+
config.berkshelf.enabled = true
|
68
|
+
|
69
|
+
# An array of symbols representing groups of cookbook described in the Vagrantfile
|
70
|
+
# to exclusively install and copy to Vagrant's shelf.
|
71
|
+
# config.berkshelf.only = []
|
72
|
+
|
73
|
+
# An array of symbols representing groups of cookbook described in the Vagrantfile
|
74
|
+
# to skip installing and copying to Vagrant's shelf.
|
75
|
+
# config.berkshelf.except = []
|
76
|
+
|
77
|
+
config.vm.provision :chef_solo do |chef|
|
78
|
+
chef.json = {
|
79
|
+
mysql: {
|
80
|
+
server_root_password: 'rootpass',
|
81
|
+
server_debian_password: 'debpass',
|
82
|
+
server_repl_password: 'replpass'
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
chef.run_list = [
|
87
|
+
'recipe[sample_cookbook::default]'
|
88
|
+
]
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# Put files/directories that should be ignored in this file when uploading
|
2
|
+
# or sharing to the community site.
|
3
|
+
# Lines that start with '# ' are comments.
|
4
|
+
|
5
|
+
# OS generated files #
|
6
|
+
######################
|
7
|
+
.DS_Store
|
8
|
+
Icon?
|
9
|
+
nohup.out
|
10
|
+
ehthumbs.db
|
11
|
+
Thumbs.db
|
12
|
+
|
13
|
+
# SASS #
|
14
|
+
########
|
15
|
+
.sass-cache
|
16
|
+
|
17
|
+
# EDITORS #
|
18
|
+
###########
|
19
|
+
\#*
|
20
|
+
.#*
|
21
|
+
*~
|
22
|
+
*.sw[a-z]
|
23
|
+
*.bak
|
24
|
+
REVISION
|
25
|
+
TAGS*
|
26
|
+
tmtags
|
27
|
+
*_flymake.*
|
28
|
+
*_flymake
|
29
|
+
*.tmproj
|
30
|
+
.project
|
31
|
+
.settings
|
32
|
+
mkmf.log
|
33
|
+
|
34
|
+
## COMPILED ##
|
35
|
+
##############
|
36
|
+
a.out
|
37
|
+
*.o
|
38
|
+
*.pyc
|
39
|
+
*.so
|
40
|
+
*.com
|
41
|
+
*.class
|
42
|
+
*.dll
|
43
|
+
*.exe
|
44
|
+
*/rdoc/
|
45
|
+
|
46
|
+
# Testing #
|
47
|
+
###########
|
48
|
+
.watchr
|
49
|
+
.rspec
|
50
|
+
spec/*
|
51
|
+
spec/fixtures/*
|
52
|
+
test/*
|
53
|
+
features/*
|
54
|
+
Guardfile
|
55
|
+
Procfile
|
56
|
+
|
57
|
+
# SCM #
|
58
|
+
#######
|
59
|
+
.git
|
60
|
+
*/.git
|
61
|
+
.gitignore
|
62
|
+
.gitmodules
|
63
|
+
.gitconfig
|
64
|
+
.gitattributes
|
65
|
+
.svn
|
66
|
+
*/.bzr/*
|
67
|
+
*/.hg/*
|
68
|
+
*/.svn/*
|
69
|
+
|
70
|
+
# Berkshelf #
|
71
|
+
#############
|
72
|
+
cookbooks/*
|
73
|
+
tmp
|
74
|
+
|
75
|
+
# Cookbooks #
|
76
|
+
#############
|
77
|
+
CONTRIBUTING
|
78
|
+
CHANGELOG*
|
79
|
+
|
80
|
+
# Strainer #
|
81
|
+
############
|
82
|
+
Colanderfile
|
83
|
+
Strainerfile
|
84
|
+
.colander
|
85
|
+
.strainer
|
86
|
+
|
87
|
+
# Vagrant #
|
88
|
+
###########
|
89
|
+
.vagrant
|
90
|
+
Vagrantfile
|
91
|
+
|
92
|
+
# Travis #
|
93
|
+
##########
|
94
|
+
.travis.yml
|
@@ -0,0 +1,10 @@
|
|
1
|
+
maintainer 'MadGlory'
|
2
|
+
maintainer_email 'YOUR_EMAIL'
|
3
|
+
license 'All rights reserved'
|
4
|
+
description 'Installs/Configures bad_metadata_cookbook'
|
5
|
+
long_description 'Installs/Configures bad_metadata_cookbook'
|
6
|
+
version '1.2.3'
|
7
|
+
source_url 'https://github.com/electric-it/minimart'
|
8
|
+
issues_url 'https://github.com/electric-it/minimart/issues'
|
9
|
+
|
10
|
+
depends 'yum', '> 3.0.0'
|
@@ -31,6 +31,16 @@ describe Minimart::Cookbook do
|
|
31
31
|
it { is_expected.to eq 'MadGlory' }
|
32
32
|
end
|
33
33
|
|
34
|
+
describe '#source_url' do
|
35
|
+
subject { cookbook.source_url }
|
36
|
+
it { is_expected.to eq 'https://github.com/electric-it/minimart'}
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#issues_url' do
|
40
|
+
subject { cookbook.issues_url }
|
41
|
+
it { is_expected.to eq 'https://github.com/electric-it/minimart/issues'}
|
42
|
+
end
|
43
|
+
|
34
44
|
describe '#path' do
|
35
45
|
subject { cookbook.path }
|
36
46
|
it { is_expected.to eq Pathname.new('spec/fixtures/sample_cookbook') }
|
@@ -197,5 +197,26 @@ describe Minimart::Mirror::InventoryBuilder do
|
|
197
197
|
end
|
198
198
|
|
199
199
|
end
|
200
|
+
|
201
|
+
context 'when a cookbook is missing name param in the metadata' do
|
202
|
+
let(:inventory_config) do
|
203
|
+
Minimart::Mirror::InventoryConfiguration.new('spec/fixtures/bad_metadata_inventory.yml')
|
204
|
+
end
|
205
|
+
|
206
|
+
before(:each) do
|
207
|
+
# stub out actually cloning the repo
|
208
|
+
allow_any_instance_of(Minimart::Download::GitRepository).to receive(:fetch).and_yield 'spec/invalid/bad_metadata_cookbook'
|
209
|
+
end
|
210
|
+
|
211
|
+
around(:each) do |e|
|
212
|
+
VCR.use_cassette('location_specific_cookbooks') { e.call }
|
213
|
+
end
|
214
|
+
|
215
|
+
# broken
|
216
|
+
it 'should not include the cookbook in the graph' do
|
217
|
+
subject.build!
|
218
|
+
expect(subject.graph.source_cookbook_added?('bad_metadata_cookbook', '1.2.3')).to eq false
|
219
|
+
end
|
220
|
+
end
|
200
221
|
end
|
201
222
|
end
|
@@ -7,6 +7,9 @@ describe Minimart::Web::HtmlGenerator do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
let(:web_directory) { test_directory }
|
10
|
+
let(:assets_directory) { File.join(web_directory, 'assets') }
|
11
|
+
let(:stylesheets_directory) { File.join(assets_directory, 'stylesheets') }
|
12
|
+
let(:javascripts_directory) { File.join(assets_directory, 'javascripts') }
|
10
13
|
|
11
14
|
subject do
|
12
15
|
Minimart::Web::HtmlGenerator.new(
|
@@ -17,7 +20,17 @@ describe Minimart::Web::HtmlGenerator do
|
|
17
20
|
describe '#generate' do
|
18
21
|
it 'should copy any available assets' do
|
19
22
|
subject.generate
|
20
|
-
expect(Dir.
|
23
|
+
expect(Dir.exist?(assets_directory)).to eq true
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should minify raw CSS files' do
|
27
|
+
subject.generate
|
28
|
+
expect(Dir.entries(stylesheets_directory)).to include('application.min.css')
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should unglify raw JS files' do
|
32
|
+
subject.generate
|
33
|
+
expect(Dir.entries(javascripts_directory)).to include('application.min.js')
|
21
34
|
end
|
22
35
|
|
23
36
|
it 'should generate the dashboard page' do
|
@@ -30,5 +43,4 @@ describe Minimart::Web::HtmlGenerator do
|
|
30
43
|
subject.generate
|
31
44
|
end
|
32
45
|
end
|
33
|
-
|
34
46
|
end
|