intranet-core 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/core_extensions/tree.rb +3 -3
- data/lib/intranet/core.rb +4 -4
- data/lib/intranet/core/builder.rb +4 -5
- data/lib/intranet/core/haml_wrapper.rb +1 -1
- data/lib/intranet/core/version.rb +1 -1
- data/lib/intranet/logger.rb +1 -1
- data/spec/intranet/core/haml_wrapper_spec.rb +0 -8
- data/spec/intranet/core_spec.rb +2 -2
- data/spec/intranet/logger_spec.rb +5 -5
- data/spec/spec_helper.rb +6 -3
- data/spec/test_responder/responder.rb +2 -6
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16b200333caf9c9d025918b638960d84cc75214e4434bda26d4bd77d8f393301
|
4
|
+
data.tar.gz: 1f79effde4c5f7644226cb6667294814583fa09c8fc38bd895d2ca3ddf4eea66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afa34d535755b7361b2b62a9b5824455652fc6d93d1e46f4d596f4bed09923ed3e1c7cf09ef6c05e92f615996d6ab4047626d052da61c6ef751c6751ed8227eb
|
7
|
+
data.tar.gz: f2abd667c22214dbe21a78417041a8b39aaec9a6e84f72cbfb423ded76ae58f416b61ffcf782e1427a63cc9435031068ccb2fc427c3d3a732131b76795cdac53
|
data/lib/core_extensions/tree.rb
CHANGED
@@ -62,10 +62,10 @@ module CoreExtensions
|
|
62
62
|
# (depth-first).
|
63
63
|
# @return [String]
|
64
64
|
def to_s(offset = '')
|
65
|
-
str = offset +
|
65
|
+
str = offset + "VALUE: #{@value}\n"
|
66
66
|
@children_nodes.each do |id, node|
|
67
|
-
str += offset +
|
68
|
-
str += node.to_s(offset
|
67
|
+
str += offset + " * ID: '#{id}'\n"
|
68
|
+
str += node.to_s("#{offset} ")
|
69
69
|
end
|
70
70
|
str
|
71
71
|
end
|
data/lib/intranet/core.rb
CHANGED
@@ -56,7 +56,7 @@ module Intranet
|
|
56
56
|
raise Errno::EALREADY if @server.status != :Stop
|
57
57
|
|
58
58
|
@builder.register(responder, path)
|
59
|
-
module_add_servlet(path
|
59
|
+
module_add_servlet(path, resources_dir)
|
60
60
|
module_add_locales(resources_dir)
|
61
61
|
module_add_haml_templates(resources_dir)
|
62
62
|
end
|
@@ -70,8 +70,8 @@ module Intranet
|
|
70
70
|
|
71
71
|
# Starts the web server.
|
72
72
|
def start
|
73
|
-
@logger.info(
|
74
|
-
@logger.info(
|
73
|
+
@logger.info("Intranet::Core: using locale '#{I18n.default_locale}'")
|
74
|
+
@logger.info("Intranet::Core: running Intranet version #{VERSION}")
|
75
75
|
# Start serving HTTP requests
|
76
76
|
@server.start
|
77
77
|
end
|
@@ -115,7 +115,7 @@ module Intranet
|
|
115
115
|
end
|
116
116
|
|
117
117
|
def module_add_servlet(path, resources_dir)
|
118
|
-
@server.mount(
|
118
|
+
@server.mount("/#{path.join('/')}/design",
|
119
119
|
WEBrick::HTTPServlet::FileHandler,
|
120
120
|
File.join(resources_dir, 'www'))
|
121
121
|
end
|
@@ -38,7 +38,7 @@ module Intranet
|
|
38
38
|
@responders.to_h.each do |path, responder|
|
39
39
|
next if responder.nil?
|
40
40
|
|
41
|
-
@logger.debug(
|
41
|
+
@logger.debug("Intranet::Builder: finalize responder at '#{path}'")
|
42
42
|
responder.finalize
|
43
43
|
end
|
44
44
|
end
|
@@ -108,7 +108,7 @@ module Intranet
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
-
[current_treenode.value,
|
111
|
+
[current_treenode.value, "/#{parsed_path.join('/')}", "/#{unparsed_path.join('/')}"]
|
112
112
|
end
|
113
113
|
|
114
114
|
# Encapsulate the given body in the default page skeleton, effectively
|
@@ -121,7 +121,8 @@ module Intranet
|
|
121
121
|
js: responder.js_dependencies, current_path: path)
|
122
122
|
end
|
123
123
|
|
124
|
-
# Check whether a path is valid.
|
124
|
+
# Check whether a path is valid. In particular, this function excludes a path containing an
|
125
|
+
# empty ('') or dot ('.') part, for instance '/path//to/./responder'.
|
125
126
|
# @param path [Array] The path to test.
|
126
127
|
# @return [Boolean] True if the path is valid, False otherwise.
|
127
128
|
def valid_path?(path)
|
@@ -137,8 +138,6 @@ module Intranet
|
|
137
138
|
def insert_responder(responder, path)
|
138
139
|
current_node = @responders
|
139
140
|
path.each do |part|
|
140
|
-
next if part.empty? || part == '.'
|
141
|
-
|
142
141
|
current_node = current_node.add_child_node(part)
|
143
142
|
end
|
144
143
|
current_node.value = responder
|
@@ -50,7 +50,7 @@ module Intranet
|
|
50
50
|
# @return [String] The path to the template if it exists, an empty string otherwise.
|
51
51
|
def find_template(template)
|
52
52
|
HamlWrapper.load_path.each do |dir|
|
53
|
-
candidate = File.join(dir, template
|
53
|
+
candidate = File.join(dir, "#{template}.haml")
|
54
54
|
return candidate if File.exist?(candidate)
|
55
55
|
end
|
56
56
|
''
|
data/lib/intranet/logger.rb
CHANGED
@@ -26,7 +26,7 @@ module Intranet
|
|
26
26
|
# @param level The level of the message
|
27
27
|
# @param msg [String] The message
|
28
28
|
def log(level, msg)
|
29
|
-
super(level, COLOR[level]
|
29
|
+
super(level, "#{COLOR[level]}#{Time.now.strftime('[%Y-%m-%d %H:%M:%S]')} #{msg}\033[0m")
|
30
30
|
end
|
31
31
|
|
32
32
|
# Logs an object that responds to +to_s+ at level INFO.
|
@@ -37,20 +37,12 @@ RSpec.describe Intranet::Core::HamlWrapper do
|
|
37
37
|
end
|
38
38
|
|
39
39
|
context 'if the template is not found in path' do
|
40
|
-
before do
|
41
|
-
described_class.load_path = [] # empty load path
|
42
|
-
expect(described_class.load_path).to be_empty
|
43
|
-
end
|
44
|
-
|
45
40
|
it 'should return an empty string' do
|
46
41
|
expect(included.new.to_markup('')).to be_empty
|
47
42
|
expect(extended.to_markup('')).to be_empty
|
48
43
|
|
49
44
|
expect(included.new.to_markup('unknown')).to be_empty
|
50
45
|
expect(extended.to_markup('unknown')).to be_empty
|
51
|
-
|
52
|
-
expect(included.new.to_markup('title_and_breadcrumb')).to be_empty
|
53
|
-
expect(extended.to_markup('title_and_breadcrumb')).to be_empty
|
54
46
|
end
|
55
47
|
end
|
56
48
|
|
data/spec/intranet/core_spec.rb
CHANGED
@@ -152,7 +152,7 @@ RSpec.describe Intranet::Core do
|
|
152
152
|
|
153
153
|
it 'should be used to serve URI relative to the module root' do
|
154
154
|
socket = TCPSocket.new('localhost', @intranet.port)
|
155
|
-
socket.puts("GET /responder/
|
155
|
+
socket.puts("GET /responder/ HTTP/1.1\r\n" \
|
156
156
|
"Host: localhost:#{@intranet.port}\r\n\r\n")
|
157
157
|
expect(socket.gets).to include('HTTP/1.1 200 OK')
|
158
158
|
socket.close
|
@@ -264,7 +264,7 @@ RSpec.describe Intranet::Core do
|
|
264
264
|
|
265
265
|
# Returned HTML document: includes Intranet Core name, version and URL
|
266
266
|
expect(html).to match(
|
267
|
-
%r{<footer>.*<a href='#{Intranet::Core::HOMEPAGE_URL}'.*>#{Intranet::Core::NAME}</a>.*#{Intranet::Core::VERSION}.*</footer>}m
|
267
|
+
%r{<footer>.*<a href='#{Intranet::Core::HOMEPAGE_URL}'.*>#{Intranet::Core::NAME}</a>.*#{Intranet::Core::VERSION}.*</footer>}m
|
268
268
|
)
|
269
269
|
|
270
270
|
# Returned HTML document: includes all registered modules version name, version and URL
|
@@ -18,7 +18,7 @@ RSpec.describe Intranet::Logger do
|
|
18
18
|
@logger = described_class.new
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
test_cases = [
|
22
22
|
{
|
23
23
|
level: described_class::FATAL, level_str: 'FATAL', level_method: :fatal,
|
24
24
|
displayed: {
|
@@ -81,9 +81,9 @@ RSpec.describe Intranet::Logger do
|
|
81
81
|
}
|
82
82
|
].freeze
|
83
83
|
|
84
|
-
|
85
|
-
context
|
86
|
-
it
|
84
|
+
test_cases.each do |tc|
|
85
|
+
context "given a #{tc[:level_str]} message" do
|
86
|
+
it "should only be displayed if logger level is at least #{tc[:level_str]}" do
|
87
87
|
tc[:displayed].each do |level, displayed|
|
88
88
|
@logger.level = level
|
89
89
|
if displayed
|
@@ -112,7 +112,7 @@ RSpec.describe Intranet::Logger do
|
|
112
112
|
.to_stderr_from_any_process
|
113
113
|
end
|
114
114
|
|
115
|
-
it
|
115
|
+
it "should be colored in #{tc[:color_desc]}" do
|
116
116
|
@logger.level = tc[:level]
|
117
117
|
expect { @logger.log(tc[:level], 'TEST_MSG') }
|
118
118
|
.to output(tc[:color_regex]).to_stderr_from_any_process
|
data/spec/spec_helper.rb
CHANGED
@@ -43,8 +43,11 @@ RSpec.configure do |config|
|
|
43
43
|
# Load and start SimpleCov to gather code coverage information
|
44
44
|
unless config.files_to_run.one?
|
45
45
|
require 'simplecov'
|
46
|
-
SimpleCov.
|
47
|
-
|
48
|
-
|
46
|
+
SimpleCov.start do
|
47
|
+
enable_coverage :branch # measure branches coverage
|
48
|
+
primary_coverage :branch
|
49
|
+
minimum_coverage line: 100, branch: 100 # minimal coverage rate to succeed
|
50
|
+
add_filter 'spec' # exclude 'spec' folder from coverage
|
51
|
+
end
|
49
52
|
end
|
50
53
|
end
|
@@ -6,7 +6,7 @@ module Intranet
|
|
6
6
|
class TestResponder < AbstractResponder
|
7
7
|
attr_reader :finalized
|
8
8
|
|
9
|
-
def initialize(responses = {}, extra_css = [], extra_js = [], hide_from_menu = false)
|
9
|
+
def initialize(responses = {}, extra_css = [], extra_js = [], hide_from_menu = false) # rubocop:disable Metrics/ParameterLists
|
10
10
|
@responses = responses
|
11
11
|
@extra_css = extra_css
|
12
12
|
@extra_js = extra_js
|
@@ -37,10 +37,6 @@ module Intranet
|
|
37
37
|
'http://nil/'
|
38
38
|
end
|
39
39
|
|
40
|
-
def resources_dir
|
41
|
-
super
|
42
|
-
end
|
43
|
-
|
44
40
|
def generate_page(path, query)
|
45
41
|
if path.start_with?('/query')
|
46
42
|
[200, 'text/plain', dump_with_encoding(path, query)]
|
@@ -62,7 +58,7 @@ module Intranet
|
|
62
58
|
private
|
63
59
|
|
64
60
|
def dump_with_encoding(path, query)
|
65
|
-
"PATH=#{path} (#{path.encoding}), QUERY={" +
|
61
|
+
"PATH=#{path} (#{path.encoding}), QUERY={" + # rubocop:disable Style/StringConcatenation
|
66
62
|
query.map { |k, v| "#{k} (#{k.encoding}) => #{v} (#{v.encoding})" }.join(',') +
|
67
63
|
"}\r\n"
|
68
64
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: intranet-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ebling Mis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01-
|
11
|
+
date: 2021-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: haml
|
@@ -112,30 +112,30 @@ dependencies:
|
|
112
112
|
name: rubocop
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0
|
117
|
+
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0
|
124
|
+
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: simplecov
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
131
|
+
version: '0.21'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - "
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
138
|
+
version: '0.21'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: yard
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -204,7 +204,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
204
204
|
requirements:
|
205
205
|
- - "~>"
|
206
206
|
- !ruby/object:Gem::Version
|
207
|
-
version: '2.
|
207
|
+
version: '2.5'
|
208
208
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
209
209
|
requirements:
|
210
210
|
- - ">="
|