skellington 0.8.9 → 0.9.0.pre.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -0
  3. data/README.md +3 -9
  4. data/Rakefile +2 -32
  5. data/config/config.yaml +21 -7
  6. data/lib/skellington/cli.rb +0 -4
  7. data/lib/skellington/generator.rb +5 -14
  8. data/lib/skellington/helpers.rb +17 -0
  9. data/lib/skellington/version.rb +1 -1
  10. data/lib/skellington.rb +1 -1
  11. data/lib/templates/common/Gemfile +0 -6
  12. data/lib/templates/common/includes/footer +1 -1
  13. data/lib/templates/common/includes/header +1 -15
  14. data/lib/templates/common/includes/libs +14 -0
  15. data/lib/templates/common/includes/nav +11 -24
  16. data/lib/templates/common/sass/colours +12 -1
  17. data/lib/templates/common/sass/footer +2 -17
  18. data/lib/templates/jekyll/_data/libs.yml +1 -6
  19. data/lib/templates/{common/sass/styles → jekyll/css/styles.scss} +3 -4
  20. data/lib/templates/jekyll/post-run +1 -1
  21. data/lib/templates/sinatra/Rakefile +3 -2
  22. data/lib/templates/sinatra/post-run +1 -1
  23. data/lib/templates/sinatra/public/sass/styles.scss +13 -0
  24. data/lib/templates/sinatra/views/includes/js-libs.erb +7 -6
  25. data/skellington.gemspec +8 -9
  26. data/spec/hyphens_spec.rb +1 -1
  27. data/spec/jekyll/404_spec.rb +17 -15
  28. data/spec/jekyll/assets/static_spec.rb +9 -7
  29. data/spec/jekyll/bootstrap/css_spec.rb +111 -115
  30. data/spec/jekyll/cli_spec.rb +19 -8
  31. data/spec/jekyll/data/libs_spec.rb +31 -24
  32. data/spec/jekyll/git_spec.rb +15 -13
  33. data/spec/jekyll/index_md_spec.rb +15 -13
  34. data/spec/jekyll/js/javascript_spec.rb +9 -7
  35. data/spec/jekyll/layout/layout_spec.rb +108 -108
  36. data/spec/jekyll/root_files/code-of-conduct_spec.rb +17 -15
  37. data/spec/jekyll/root_files/config_yml_spec.rb +20 -18
  38. data/spec/jekyll/root_files/gemfile_spec.rb +16 -14
  39. data/spec/jekyll/root_files/license_spec.rb +61 -59
  40. data/spec/jekyll/root_files/rbenv_spec.rb +13 -11
  41. data/spec/jekyll/root_files/readme_spec.rb +13 -11
  42. data/spec/sinatra/app/app_spec.rb +46 -44
  43. data/spec/sinatra/app/config_yml_spec.rb +13 -11
  44. data/spec/sinatra/app/helpers_spec.rb +16 -14
  45. data/spec/sinatra/app/public_spec.rb +9 -7
  46. data/spec/sinatra/app/racks_spec.rb +33 -31
  47. data/spec/sinatra/bootstrap/css_spec.rb +133 -124
  48. data/spec/sinatra/cli_spec.rb +18 -16
  49. data/spec/sinatra/git_spec.rb +14 -12
  50. data/spec/sinatra/javascript/javascript_spec.rb +42 -40
  51. data/spec/sinatra/layout/includes_spec.rb +76 -58
  52. data/spec/sinatra/layout/layout_spec.rb +93 -104
  53. data/spec/sinatra/layout/views_spec.rb +22 -20
  54. data/spec/sinatra/root_files/code-of-conduct_spec.rb +16 -14
  55. data/spec/sinatra/root_files/config_ru_spec.rb +13 -11
  56. data/spec/sinatra/root_files/gemfile_spec.rb +30 -28
  57. data/spec/sinatra/root_files/guardfile_spec.rb +26 -24
  58. data/spec/sinatra/root_files/license_spec.rb +60 -58
  59. data/spec/sinatra/root_files/procfile_spec.rb +12 -10
  60. data/spec/sinatra/root_files/rakefile_spec.rb +30 -27
  61. data/spec/sinatra/root_files/rbenv_spec.rb +12 -10
  62. data/spec/sinatra/root_files/readme_spec.rb +12 -10
  63. data/spec/sinatra/spec/spec_spec.rb +71 -69
  64. data/spec/skellington_spec.rb +31 -2
  65. metadata +25 -47
  66. data/lib/templates/sinatra/config.rb +0 -4
  67. data/spec/jekyll/bootstrap_4/bootstrap_4_spec.rb +0 -54
  68. data/spec/sinatra/bootstrap_4/config_rb_bootstrap_4_spec.rb +0 -20
  69. data/spec/sinatra/bootstrap_4/gemfile_bootstrap_4_spec.rb +0 -39
  70. data/spec/sinatra/bootstrap_4/public_bootstrap_4_spec.rb +0 -35
  71. data/spec/sinatra/root_files/config_rb_spec.rb +0 -19
@@ -1,26 +1,83 @@
1
1
  module Skellington
2
2
  describe CLI do
3
- let :subject do
4
- described_class.new
5
- end
3
+ context 'jekyll' do
4
+ let :subject do
5
+ described_class.new
6
+ end
7
+
8
+ context 'layout' do
9
+ it 'creates a header' do
10
+ subject.options = { 'framework' => 'jekyll' }
11
+ subject.generate 'dummy-app'
12
+
13
+ expect('dummy_app/_includes/header.html').to have_content (
14
+ """
15
+ <head>
16
+ <meta charset='utf-8' />
17
+ <meta http-equiv='X-UA-Compatible' content='IE=edge' />
18
+ <meta name='viewport' content='width=device-width, initial-scale=1' />
19
+
20
+ {% include ie-cruft.html %}
21
+
22
+ {% include libs.html %}
23
+
24
+ <link rel='icon' type='image/png' href='{{ site.baseurl }}/assets/favicon.ico' />
25
+ <link rel='stylesheet' href='{{ site.baseurl }}/css/styles.css' />
26
+ <script src='{{ site.baseurl }}/js/dummy_app.js'></script>
27
+ <title>
28
+ {{ page.title }}
29
+ </title>
30
+ </head>
31
+ """
32
+ )
33
+ end
34
+
35
+ it 'creates a footer' do
36
+ subject.options = { 'framework' => 'jekyll' }
37
+ subject.generate 'dummy-app'
6
38
 
7
- context 'layout' do
8
- it 'creates a header' do
9
- subject.options = { 'framework' => 'jekyll' }
10
- subject.generate 'dummy-app'
39
+ expect('dummy_app/_includes/footer.html').to have_content (
40
+ """
41
+ <div class='footer p-2'>
42
+ Generated with
43
+ <a href='http://sam.pikesley.org/projects/skellington/' alt='Skellington' title='Skellington'>
44
+ Skellington
45
+ </a>
46
+ </div>
47
+ """
48
+ )
49
+ end
50
+
51
+ it 'creates a nav' do
52
+ subject.options = { 'framework' => 'jekyll' }
53
+ subject.generate 'dummy-app'
11
54
 
12
- expect('dummy_app/_includes/header.html').to have_content (
13
- """
14
- <head>
15
- <meta charset='utf-8' />
16
- <meta http-equiv='X-UA-Compatible' content='IE=edge' />
17
- <meta name='viewport' content='width=device-width, initial-scale=1' />
55
+ expect('dummy_app/_includes/nav.html').to have_content (
56
+ """
57
+ <ul class='nav nav-pills nav-fill p-3'>
58
+ <li class='nav-item'>
59
+ <a class='nav-link active' href='{{ site.baseurl }}/'>Home</a>
60
+ </li>
61
+ <li class='nav-item'>
62
+ <a class='nav-link' href='{{ site.baseurl }}/foo/'>Foo</a>
63
+ </li>
64
+ <li class='nav-item'>
65
+ <a class='nav-link' href='{{ site.baseurl }}/bar/'>Bar</a>
66
+ </li>
67
+ </ul>
68
+ """
69
+ )
70
+ end
18
71
 
19
- {% include ie-cruft.html %}
72
+ it 'creates a JS libs section' do
73
+ subject.options = { 'framework' => 'jekyll' }
74
+ subject.generate 'dummy-app'
20
75
 
76
+ expect('dummy_app/_includes/libs.html').to have_content (
77
+ """
21
78
  {% for lib in site.data.libs.js %}
22
79
  <!-- {{ lib.name }} -->
23
- <script src='{{ lib.url }}'></script>
80
+ <script src='{{ lib.url }}' integrity='{{ lib.hash }}' crossorigin='anonymous'></script>
24
81
  {% endfor %}
25
82
 
26
83
  {% for lib in site.data.libs.css %}
@@ -32,103 +89,46 @@ module Skellington
32
89
  <!-- {{ font.name }} -->
33
90
  <link rel='stylesheet' href='{{ font.url }}'>
34
91
  {% endfor %}
92
+ """
93
+ )
94
+ end
35
95
 
36
- <link rel='icon' type='image/png' href='{{ site.baseurl }}/assets/favicon.ico' />
37
- <link rel='stylesheet' href='{{ site.baseurl }}/css/styles.css' />
38
- <script src='{{ site.baseurl }}/js/dummy_app.js'></script>
39
- <title>
40
- {{ page.title }}
41
- </title>
42
- </head>
43
- """
44
- )
45
- end
46
-
47
- it 'creates a footer' do
48
- subject.options = { 'framework' => 'jekyll' }
49
- subject.generate 'dummy-app'
50
-
51
- expect('dummy_app/_includes/footer.html').to have_content (
52
- """
53
- <div class='footer'>
54
- Generated with
55
- <a href='http://sam.pikesley.org/projects/skellington/' alt='Skellington' title='Skellington'>
56
- Skellington
57
- </a>
58
- </div>
59
- """
60
- )
61
- end
96
+ it 'creates a layout' do
97
+ subject.options = { 'framework' => 'jekyll' }
98
+ subject.generate 'dummy-app'
62
99
 
63
- it 'creates a nav' do
64
- subject.options = { 'framework' => 'jekyll' }
65
- subject.generate 'dummy-app'
66
-
67
- expect('dummy_app/_includes/nav.html').to have_content (
68
- """
69
- <nav class='navbar navbar-default navbar-static-top'>
70
- <div class='container-fluid'>
71
- <div class='navbar-header'>
72
- <button type='button'
73
- class='navbar-toggle collapsed'
74
- data-toggle='collapse'
75
- data-target='#navbar'
76
- aria-expanded='false'
77
- aria-controls='navbar'>
78
- <span class='sr-only'>Toggle navigation</span>
79
- <span class='icon-bar'></span>
80
- <span class='icon-bar'></span>
81
- <span class='icon-bar'></span>
82
- </button>
83
- <a class='navbar-brand' href='{{ site.baseurl }}/'>Home</a>
84
- </div>
85
- <div id='navbar' class='navbar-collapse collapse'>
86
- <ul class='nav navbar-nav'>
87
- <li><a href='{{ site.baseurl }}/foo/'>Foo</a></li>
88
- <li><a href='{{ site.baseurl }}/bar/'>Bar</a></li>
89
- </ul>
90
- </div>
91
- </div>
92
- </nav>
93
- """
94
- )
95
- end
100
+ expect('dummy_app/_layouts/default.html').to have_content (
101
+ """
102
+ <!DOCTYPE html>
103
+ <html lang='en'>
104
+ {% include header.html %}
105
+ <body>
106
+ {% include nav.html %}
107
+ <div class='container'>
108
+ {{ content }}
109
+ </div>
110
+ {% include footer.html %}
111
+ </body>
112
+ </html>
113
+ """
114
+ )
115
+ end
96
116
 
97
- it 'creates a layout' do
98
- subject.options = { 'framework' => 'jekyll' }
99
- subject.generate 'dummy-app'
100
-
101
- expect('dummy_app/_layouts/default.html').to have_content (
102
- """
103
- <!DOCTYPE html>
104
- <html lang='en'>
105
- {% include header.html %}
106
- <body>
107
- {% include nav.html %}
108
- <div class='container'>
109
- {{ content }}
110
- </div>
111
- {% include footer.html %}
112
- </body>
113
- </html>
114
- """
115
- )
116
- end
117
+ it 'has the ie shims' do
118
+ subject.options = { 'framework' => 'jekyll' }
119
+ subject.generate 'dummy-app'
117
120
 
118
- it 'has the ie shims' do
119
- subject.options = { 'framework' => 'jekyll' }
120
- subject.generate 'dummy-app'
121
-
122
- expect('dummy_app/_includes/ie-cruft.html').to have_content (
123
- """
124
- <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
125
- <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
126
- <!--[if lt IE 9]>
127
- <script src='//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js'></script>
128
- <script src='//oss.maxcdn.com/respond/1.4.2/respond.min.js'></script>
129
- <![endif]-->
130
- """
131
- )
121
+ expect('dummy_app/_includes/ie-cruft.html').to have_content (
122
+ """
123
+ <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
124
+ <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
125
+ <!--[if lt IE 9]>
126
+ <script src='//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js'></script>
127
+ <script src='//oss.maxcdn.com/respond/1.4.2/respond.min.js'></script>
128
+ <![endif]-->
129
+ """
130
+ )
131
+ end
132
132
  end
133
133
  end
134
134
  end
@@ -1,22 +1,24 @@
1
1
  module Skellington
2
2
  describe CLI do
3
- let :subject do
4
- described_class.new
5
- end
3
+ context 'jekyll' do
4
+ let :subject do
5
+ described_class.new
6
+ end
6
7
 
7
- it 'generates a Code of Conduct' do
8
- subject.options = { 'framework' => 'jekyll' }
9
- subject.generate 'dummy-app'
10
- expect('dummy_app/CODE_OF_CONDUCT.md').to have_content (
11
- """
12
- # Contributor Code of Conduct
8
+ it 'generates a Code of Conduct' do
9
+ subject.options = { 'framework' => 'jekyll' }
10
+ subject.generate 'dummy-app'
11
+ expect('dummy_app/CODE_OF_CONDUCT.md').to have_content (
12
+ """
13
+ # Contributor Code of Conduct
13
14
 
14
- As contributors and maintainers of this project, and in the interest of
15
- fostering an open and welcoming community, we pledge to respect all people who
16
- contribute through reporting issues, posting feature requests, updating
17
- documentation, submitting pull requests or patches, and other activities.
18
- """
19
- )
15
+ As contributors and maintainers of this project, and in the interest of
16
+ fostering an open and welcoming community, we pledge to respect all people who
17
+ contribute through reporting issues, posting feature requests, updating
18
+ documentation, submitting pull requests or patches, and other activities.
19
+ """
20
+ )
21
+ end
20
22
  end
21
23
  end
22
24
  end
@@ -1,25 +1,27 @@
1
1
  module Skellington
2
2
  describe CLI do
3
- let :subject do
4
- described_class.new
5
- end
3
+ context 'jekyll' do
4
+ let :subject do
5
+ described_class.new
6
+ end
6
7
 
7
- it 'generates a _config.yml file' do
8
- subject.options = { 'framework' => 'jekyll' }
9
- subject.generate 'dummy-app'
10
- expect('dummy_app/_config.yml').to have_content (
11
- """
12
- ---
13
- defaults:
14
- - scope:
15
- path: ''
16
- values:
17
- layout: default
18
- permalink: pretty
8
+ it 'generates a _config.yml file' do
9
+ subject.options = { 'framework' => 'jekyll' }
10
+ subject.generate 'dummy-app'
11
+ expect('dummy_app/_config.yml').to have_content (
12
+ """
13
+ ---
14
+ defaults:
15
+ - scope:
16
+ path: ''
17
+ values:
18
+ layout: default
19
+ permalink: pretty
19
20
 
20
- baseurl: /dummy-app
21
- """
22
- )
21
+ baseurl: /dummy-app
22
+ """
23
+ )
24
+ end
23
25
  end
24
26
  end
25
27
  end
@@ -1,22 +1,24 @@
1
1
  module Skellington
2
2
  describe CLI do
3
- let :subject do
4
- described_class.new
5
- end
3
+ context 'jekyll' do
4
+ let :subject do
5
+ described_class.new
6
+ end
6
7
 
7
- it 'generates a Gemfile' do
8
- subject.options = { 'framework' => 'jekyll' }
9
- subject.generate 'dummy-app'
10
- expect('dummy_app/Gemfile').to have_content (
11
- """
12
- source 'https://rubygems.org'
8
+ it 'generates a Gemfile' do
9
+ subject.options = { 'framework' => 'jekyll' }
10
+ subject.generate 'dummy-app'
11
+ expect('dummy_app/Gemfile').to have_content (
12
+ """
13
+ source 'https://rubygems.org'
13
14
 
14
- /ruby '[0-9]*\\.[0-9]*\\.[0-9]*'/
15
+ /ruby '[0-9]*\\.[0-9]*\\.[0-9]*'/
15
16
 
16
- gem 'github-pages'
17
- gem 'rake'
18
- """
19
- )
17
+ gem 'github-pages'
18
+ gem 'rake'
19
+ """
20
+ )
21
+ end
20
22
  end
21
23
  end
22
24
  end
@@ -1,74 +1,76 @@
1
1
  module Skellington
2
2
  describe CLI do
3
- let :subject do
4
- described_class.new
5
- end
3
+ context 'jekyll' do
4
+ let :subject do
5
+ described_class.new
6
+ end
6
7
 
7
- context 'generate a LICENSE' do
8
- specify 'plain license' do
9
- Timecop.freeze Time.local 2016, 01, 19
10
- subject.options = { 'framework' => 'jekyll' }
11
- subject.generate 'dummy-app'
12
- expect('dummy_app/LICENSE.md').to have_content (
13
- """
14
- ##Copyright (c) 2016 YOUR-NAME-HERE
8
+ context 'generate a LICENSE' do
9
+ specify 'plain license' do
10
+ Timecop.freeze Time.local 2016, 01, 19
11
+ subject.options = { 'framework' => 'jekyll' }
12
+ subject.generate 'dummy-app'
13
+ expect('dummy_app/LICENSE.md').to have_content (
14
+ """
15
+ ##Copyright (c) 2016 YOUR-NAME-HERE
15
16
 
16
- #MIT License
17
+ #MIT License
17
18
 
18
- Permission is hereby granted, free of charge, to any person obtaining
19
- a copy of this software and associated documentation files (the
20
- 'Software'), to deal in the Software without restriction, including
21
- without limitation the rights to use, copy, modify, merge, publish,
22
- distribute, sublicense, and/or sell copies of the Software, and to
23
- permit persons to whom the Software is furnished to do so, subject to
24
- the following conditions:
19
+ Permission is hereby granted, free of charge, to any person obtaining
20
+ a copy of this software and associated documentation files (the
21
+ 'Software'), to deal in the Software without restriction, including
22
+ without limitation the rights to use, copy, modify, merge, publish,
23
+ distribute, sublicense, and/or sell copies of the Software, and to
24
+ permit persons to whom the Software is furnished to do so, subject to
25
+ the following conditions:
25
26
 
26
- The above copyright notice and this permission notice shall be
27
- included in all copies or substantial portions of the Software.
27
+ The above copyright notice and this permission notice shall be
28
+ included in all copies or substantial portions of the Software.
28
29
 
29
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
30
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
31
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
32
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
33
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
34
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
35
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36
- """
37
- )
38
- Timecop.return
39
- end
30
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
31
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
32
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
33
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
34
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
35
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
36
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37
+ """
38
+ )
39
+ Timecop.return
40
+ end
40
41
 
41
- specify 'with a provided name' do
42
- Timecop.freeze Time.local 2016, 01, 19
43
- subject.options = {licensor: 'Beyoncé'}
44
- subject.generate 'dummy-app'
45
- expect('dummy_app/LICENSE.md').to have_content (
46
- """
47
- ##Copyright (c) 2016 Beyoncé
42
+ specify 'with a provided name' do
43
+ Timecop.freeze Time.local 2016, 01, 19
44
+ subject.options = {licensor: 'Beyoncé'}
45
+ subject.generate 'dummy-app'
46
+ expect('dummy_app/LICENSE.md').to have_content (
47
+ """
48
+ ##Copyright (c) 2016 Beyoncé
48
49
 
49
- #MIT License
50
+ #MIT License
50
51
 
51
- Permission is hereby granted, free of charge, to any person obtaining
52
- a copy of this software and associated documentation files (the
53
- 'Software'), to deal in the Software without restriction, including
54
- without limitation the rights to use, copy, modify, merge, publish,
55
- distribute, sublicense, and/or sell copies of the Software, and to
56
- permit persons to whom the Software is furnished to do so, subject to
57
- the following conditions:
52
+ Permission is hereby granted, free of charge, to any person obtaining
53
+ a copy of this software and associated documentation files (the
54
+ 'Software'), to deal in the Software without restriction, including
55
+ without limitation the rights to use, copy, modify, merge, publish,
56
+ distribute, sublicense, and/or sell copies of the Software, and to
57
+ permit persons to whom the Software is furnished to do so, subject to
58
+ the following conditions:
58
59
 
59
- The above copyright notice and this permission notice shall be
60
- included in all copies or substantial portions of the Software.
60
+ The above copyright notice and this permission notice shall be
61
+ included in all copies or substantial portions of the Software.
61
62
 
62
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
63
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
64
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
65
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
66
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
67
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
68
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
69
- """
70
- )
71
- Timecop.return
63
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
64
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
65
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
66
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
67
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
68
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
69
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
70
+ """
71
+ )
72
+ Timecop.return
73
+ end
72
74
  end
73
75
  end
74
76
  end
@@ -1,17 +1,19 @@
1
1
  module Skellington
2
2
  describe CLI do
3
- let :subject do
4
- described_class.new
5
- end
3
+ context 'jekyll' do
4
+ let :subject do
5
+ described_class.new
6
+ end
6
7
 
7
- it 'generates a .ruby-version' do
8
- subject.options = { 'framework' => 'jekyll' }
9
- expect { subject.generate 'dummy-app' }.to produce_file 'dummy_app/.ruby-version'
10
- expect('dummy_app/.ruby-version').to have_content (
11
- """
12
- /[0-9]*\\.[0-9]*\\.[0-9]*/
13
- """
14
- )
8
+ it 'generates a .ruby-version' do
9
+ subject.options = { 'framework' => 'jekyll' }
10
+ expect { subject.generate 'dummy-app' }.to produce_file 'dummy_app/.ruby-version'
11
+ expect('dummy_app/.ruby-version').to have_content (
12
+ """
13
+ /[0-9]*\\.[0-9]*\\.[0-9]*/
14
+ """
15
+ )
16
+ end
15
17
  end
16
18
  end
17
19
  end
@@ -1,17 +1,19 @@
1
1
  module Skellington
2
2
  describe CLI do
3
- let :subject do
4
- described_class.new
5
- end
3
+ context 'jekyll' do
4
+ let :subject do
5
+ described_class.new
6
+ end
6
7
 
7
- it 'generates a README' do
8
- subject.options = { 'framework' => 'jekyll' }
9
- subject.generate 'dummy-app'
10
- expect('dummy_app/README.md').to have_content (
11
- """
12
- # DummyApp
13
- """
14
- )
8
+ it 'generates a README' do
9
+ subject.options = { 'framework' => 'jekyll' }
10
+ subject.generate 'dummy-app'
11
+ expect('dummy_app/README.md').to have_content (
12
+ """
13
+ # DummyApp
14
+ """
15
+ )
16
+ end
15
17
  end
16
18
  end
17
19
  end