twiglet 3.11.0 → 3.13.0
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 +4 -4
- data/lib/twiglet/logger.rb +8 -1
- data/lib/twiglet/version.rb +1 -1
- data/test/logger_test.rb +65 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 286d683bc94e381966b7b0ee5c5ed2aec7e690e34e13136dadcd9f9903bc491c
|
4
|
+
data.tar.gz: be8be7205cb345e06da67d6bb4cd1bd6f23fb4f2c3d354ccbda6f6f4086710e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4cdfb033d22ad7e0c8f588673c6ccc3dc47e75317c1f11b4e24be0d246f10323d064d18f7a5a7746e7e723365b894dfbdbee36a9d1410fef7321a794e7c3052c
|
7
|
+
data.tar.gz: 33872aecd0f6eafb9a117fa4a001ccaa1629ac18fa7c88ea109e4c5001df4f3ce324ece7e795c6e86428612edd6f57fee541b90801bd0ba185a9bd7cfb2c7785
|
data/lib/twiglet/logger.rb
CHANGED
@@ -22,7 +22,7 @@ module Twiglet
|
|
22
22
|
|
23
23
|
now = args.fetch(:now, -> { Time.now.utc })
|
24
24
|
output = args.fetch(:output, $stdout)
|
25
|
-
level = args.fetch(:level,
|
25
|
+
level = args.fetch(:level, INFO)
|
26
26
|
validation_schema = args.fetch(:validation_schema, DEFAULT_VALIDATION_SCHEMA)
|
27
27
|
|
28
28
|
raise 'Service name is mandatory' \
|
@@ -81,6 +81,13 @@ module Twiglet
|
|
81
81
|
)
|
82
82
|
end
|
83
83
|
|
84
|
+
def validation_schema(validation_schema)
|
85
|
+
self.class.new(
|
86
|
+
@service_name,
|
87
|
+
**@args.merge(validation_schema: validation_schema)
|
88
|
+
)
|
89
|
+
end
|
90
|
+
|
84
91
|
def context_provider(&blk)
|
85
92
|
new_context_providers = Array(@args[:context_providers])
|
86
93
|
new_context_providers << blk
|
data/lib/twiglet/version.rb
CHANGED
data/test/logger_test.rb
CHANGED
@@ -23,7 +23,8 @@ describe Twiglet::Logger do
|
|
23
23
|
@logger = Twiglet::Logger.new(
|
24
24
|
'petshop',
|
25
25
|
now: @now,
|
26
|
-
output: @buffer
|
26
|
+
output: @buffer,
|
27
|
+
level: Logger::DEBUG
|
27
28
|
)
|
28
29
|
end
|
29
30
|
|
@@ -652,7 +653,8 @@ describe Twiglet::Logger do
|
|
652
653
|
'petshop',
|
653
654
|
now: @now,
|
654
655
|
output: @buffer,
|
655
|
-
validation_schema: validation_schema
|
656
|
+
validation_schema: validation_schema,
|
657
|
+
level: Logger::DEBUG
|
656
658
|
)
|
657
659
|
end
|
658
660
|
|
@@ -679,11 +681,71 @@ describe Twiglet::Logger do
|
|
679
681
|
end
|
680
682
|
end
|
681
683
|
|
684
|
+
describe '#validation_schema' do
|
685
|
+
it 'allows for reconfiguring the validation_schema on new logger instances' do
|
686
|
+
validation_schema = <<-JSON
|
687
|
+
{
|
688
|
+
"type": "object",
|
689
|
+
"required": ["pet"],
|
690
|
+
"properties": {
|
691
|
+
"pet": {
|
692
|
+
"type": "object",
|
693
|
+
"required": ["name", "best_boy_or_girl?"],
|
694
|
+
"properties": {
|
695
|
+
"name": {
|
696
|
+
"type": "string",
|
697
|
+
"minLength": 1
|
698
|
+
},
|
699
|
+
"best_boy_or_girl?": {
|
700
|
+
"type": "boolean"
|
701
|
+
}
|
702
|
+
}
|
703
|
+
}
|
704
|
+
}
|
705
|
+
}
|
706
|
+
JSON
|
707
|
+
|
708
|
+
logger = Twiglet::Logger.new(
|
709
|
+
'petshop',
|
710
|
+
now: @now,
|
711
|
+
output: @buffer
|
712
|
+
)
|
713
|
+
|
714
|
+
message = { message: 'hi' }
|
715
|
+
|
716
|
+
pet_message = {
|
717
|
+
pet: { name: 'Davis', best_boy_or_girl?: true, species: 'dog' }
|
718
|
+
}
|
719
|
+
|
720
|
+
logger.info(message)
|
721
|
+
log = read_json(@buffer)
|
722
|
+
assert_equal 'hi', log[:message]
|
723
|
+
|
724
|
+
error = assert_raises JSON::Schema::ValidationError do
|
725
|
+
logger.info(pet_message)
|
726
|
+
end
|
727
|
+
assert_equal "The property '#/' did not contain a required property of 'message'", error.message
|
728
|
+
|
729
|
+
logger = logger.validation_schema(validation_schema)
|
730
|
+
|
731
|
+
error = assert_raises JSON::Schema::ValidationError do
|
732
|
+
logger.info(message)
|
733
|
+
end
|
734
|
+
assert_equal "The property '#/' did not contain a required property of 'pet'", error.message
|
735
|
+
|
736
|
+
logger.info(pet_message)
|
737
|
+
log = read_json(@buffer)
|
738
|
+
assert_equal 'Davis', log[:pet][:name]
|
739
|
+
end
|
740
|
+
end
|
741
|
+
|
682
742
|
private
|
683
743
|
|
684
744
|
def read_json(buffer)
|
685
745
|
buffer.rewind
|
686
|
-
|
746
|
+
string = buffer.read
|
747
|
+
buffer.rewind
|
748
|
+
JSON.parse(string, symbolize_names: true)
|
687
749
|
end
|
688
750
|
end
|
689
751
|
# rubocop:enable Metrics/BlockLength
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twiglet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simply Business
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json-schema
|