tdc 1.2 → 1.3

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +9 -4
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG.md +8 -0
  5. data/Gemfile +12 -0
  6. data/gemfiles/rails_7_2.gemfile +12 -0
  7. data/gemfiles/rails_8_0.gemfile +12 -0
  8. data/lib/tdc/data_definition.rb +2 -0
  9. data/lib/tdc/data_definition_file_reader.rb +2 -0
  10. data/lib/tdc/definition_resolvers/definition_resolver.rb +2 -0
  11. data/lib/tdc/definition_resolvers/tag_resolver.rb +2 -0
  12. data/lib/tdc/definition_resolvers.rb +2 -0
  13. data/lib/tdc/extended_attributes/default_interpreter.rb +4 -2
  14. data/lib/tdc/extended_attributes/interpreter_base.rb +2 -0
  15. data/lib/tdc/extended_attributes/interpreter_registry.rb +2 -0
  16. data/lib/tdc/extended_attributes.rb +2 -0
  17. data/lib/tdc/fatal_error.rb +2 -0
  18. data/lib/tdc/generators/catalog_entries.rb +2 -0
  19. data/lib/tdc/generators/definition_resolvable.rb +2 -0
  20. data/lib/tdc/generators/definition_sourcable.rb +2 -0
  21. data/lib/tdc/generators/generation_context.rb +2 -0
  22. data/lib/tdc/generators/generator_base.rb +2 -0
  23. data/lib/tdc/generators/standard_generator.rb +2 -0
  24. data/lib/tdc/generators.rb +2 -0
  25. data/lib/tdc/in_memory_data_definition.rb +2 -0
  26. data/lib/tdc/missing_override_error.rb +2 -0
  27. data/lib/tdc/version.rb +3 -1
  28. data/lib/tdc/with_indifferent_access_decorator.rb +2 -0
  29. data/lib/tdc/yaml_readers/null_yaml_reader.rb +2 -0
  30. data/lib/tdc/yaml_readers/yaml_reader.rb +2 -0
  31. data/lib/tdc/yaml_readers/yaml_reader_base.rb +4 -2
  32. data/lib/tdc/yaml_readers/yaml_reader_factory.rb +2 -0
  33. data/lib/tdc/yaml_readers/yaml_reader_with_expansion.rb +2 -0
  34. data/lib/tdc/yaml_readers.rb +2 -0
  35. data/lib/tdc.rb +2 -0
  36. data/tdc.gemspec +4 -11
  37. metadata +12 -128
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50ad351391fe24e0f4edac9aab8c3c168bd1663fc573453106f0dd705be52f6f
4
- data.tar.gz: 4818a7bae4a7a81bd03e76c24af0f6fb70ab43cd38a9a4e3ccb6aa12d9b338a3
3
+ metadata.gz: ea0b752fe9e2b0de8af863a24943c1f9b3761361c954daeb30a8af0d19ff3618
4
+ data.tar.gz: '08057115b222377b4ec89752f2e45d6044d12ab3907efd0c2d6544ea888ab186'
5
5
  SHA512:
6
- metadata.gz: 5ed0d723f97ce97cb41c1f0158753212352167d1f0dae4c1a231fb588d68035dc3bb1a4d4f3d7a3d9c24f87bb60be6dedb22180672cca64c4be21d98396c1d9c
7
- data.tar.gz: bf8dbccc23d5f42fb6ba6818e938b62309aad5a9c3683d55f7aeb831d32fb3ca2d928100336b737aba373e506b572d038da65906805c41394fa0ed980f07c4f2
6
+ metadata.gz: 9dda429b7527bc63a9152e34197f15e6846d7ea99c54acbc6a6fa629efeacddea67e8416ea493f94c709d1a556b49cc1a7d3b34bedb5cfdac9d03c59d448de6d
7
+ data.tar.gz: 471e6576c1d97bed8ada0a23b4de078c9f8aec8adbae16893e0c4ddeaf5018add54edfa1784a3b53dd01ebc5ecc370ed2624dde9e64e3be691e7c8d5c1912675
data/.rubocop.yml CHANGED
@@ -1,11 +1,12 @@
1
- require:
1
+ plugins:
2
2
  - rubocop-performance
3
3
  - rubocop-rake
4
4
  - rubocop-rspec
5
5
 
6
6
  AllCops:
7
7
  NewCops: enable
8
- TargetRubyVersion: 3.1
8
+ SuggestExtensions: false
9
+ TargetRubyVersion: 3.3
9
10
 
10
11
  Exclude:
11
12
  - 'bin/**/*'
@@ -80,9 +81,13 @@ Style/DocumentDynamicEvalDefinition:
80
81
  Style/EmptyMethod:
81
82
  EnforcedStyle: expanded
82
83
 
83
- # We can ignore this small performance improvement.
84
84
  Style/FrozenStringLiteralComment:
85
- Enabled: false
85
+ Enabled: true
86
+ Exclude:
87
+ - 'Appraisals'
88
+ - 'Gemfile'
89
+ - 'Rakefile'
90
+ - 'gemfiles/*.gemfile'
86
91
 
87
92
  # We like to use the hash rocket in rake files.
88
93
  Style/HashSyntax:
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.3.6
1
+ 3.4.7
data/CHANGELOG.md CHANGED
@@ -6,6 +6,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.3] - 2025-10-25
10
+
11
+ - Support Ruby 3.4
12
+
13
+ #### Breaking Changes
14
+
15
+ - Drop support for Ruby 3.2
16
+
9
17
  ## [1.2] - 2025-10-07
10
18
 
11
19
  - Support Rails 8.0.x
data/Gemfile CHANGED
@@ -2,3 +2,15 @@ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in tdc.gemspec
4
4
  gemspec
5
+
6
+ group :development, :test do
7
+ gem "appraisal", "~> 2.5"
8
+ gem "rake", "~> 13.2"
9
+ gem "rspec", "~> 3.13"
10
+ gem "rubocop", "~> 1.69"
11
+ gem "rubocop-performance", "~> 1.23"
12
+ gem "rubocop-rake", "~> 0.6"
13
+ gem "rubocop-rspec", "~> 3.3"
14
+ gem "rubycritic", "~> 4.9"
15
+ gem "simplecov", "~> 0.22"
16
+ end
@@ -4,4 +4,16 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "7.2.2.1"
6
6
 
7
+ group :development, :test do
8
+ gem "appraisal", "~> 2.5"
9
+ gem "rake", "~> 13.2"
10
+ gem "rspec", "~> 3.13"
11
+ gem "rubocop", "~> 1.69"
12
+ gem "rubocop-performance", "~> 1.23"
13
+ gem "rubocop-rake", "~> 0.6"
14
+ gem "rubocop-rspec", "~> 3.3"
15
+ gem "rubycritic", "~> 4.9"
16
+ gem "simplecov", "~> 0.22"
17
+ end
18
+
7
19
  gemspec path: "../"
@@ -4,4 +4,16 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "8.0.3"
6
6
 
7
+ group :development, :test do
8
+ gem "appraisal", "~> 2.5"
9
+ gem "rake", "~> 13.2"
10
+ gem "rspec", "~> 3.13"
11
+ gem "rubocop", "~> 1.69"
12
+ gem "rubocop-performance", "~> 1.23"
13
+ gem "rubocop-rake", "~> 0.6"
14
+ gem "rubocop-rspec", "~> 3.3"
15
+ gem "rubycritic", "~> 4.9"
16
+ gem "simplecov", "~> 0.22"
17
+ end
18
+
7
19
  gemspec path: "../"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  #
3
5
  # Knows how to read data definitions from the specified path elements.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  #
3
5
  # Knows how to read data definitions from YAML files.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module DefinitionResolvers
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module DefinitionResolvers
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  #
3
5
  # Namespace to host definition resolvers.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module ExtendedAttributes
3
5
  #
@@ -6,6 +8,8 @@ module Tdc
6
8
  # Note: extended attribute keys are expected to be strings rather than symbols.
7
9
  #
8
10
  class DefaultInterpreter < Tdc::ExtendedAttributes::InterpreterBase
11
+ EXTENDED_ATTRIBUTE_SUFFIX = "_xa"
12
+
9
13
  def interpret(instance_definition)
10
14
  extended_attribute_definitions = keep_extended_attributes(instance_definition)
11
15
 
@@ -27,8 +31,6 @@ module Tdc
27
31
 
28
32
  private
29
33
 
30
- EXTENDED_ATTRIBUTE_SUFFIX = "_xa"
31
-
32
34
  def convert_to_standard_attribute(extended_attribute_key)
33
35
  extended_attribute_key.delete_suffix(EXTENDED_ATTRIBUTE_SUFFIX)
34
36
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module ExtendedAttributes
3
5
  class InterpreterBase
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module ExtendedAttributes
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  #
3
5
  # Namespace to host extended attributes.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  class FatalError < RuntimeError
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module Generators
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module Generators
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module Generators
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module Generators
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module Generators
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module Generators
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  #
3
5
  # Namespace to host generators.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  #
3
5
  # Knows how to read data definitions from an in-memory representation.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  MissingOverrideError = Class.new(Tdc::FatalError)
3
5
  end
data/lib/tdc/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
- VERSION = "1.2"
4
+ VERSION = "1.3"
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  #
3
5
  # Knows how to transform the result of calling the TestDefinitionReader#read method from an Array
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module YamlReaders
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module YamlReaders
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module YamlReaders
3
5
  #
@@ -40,9 +42,9 @@ module Tdc
40
42
 
41
43
  def definitions_file
42
44
  @_definitions_file ||= begin
43
- fully_qualified_path_elements = [@catalog_root_directory].concat(@path_elements.map(&:to_s))
45
+ fully_qualified_path_elements = [@catalog_root_directory] + @path_elements.map(&:to_s)
44
46
 
45
- fully_qualified_path_elements.last.concat(file_extension)
47
+ fully_qualified_path_elements[-1] = "#{fully_qualified_path_elements.last}#{file_extension}"
46
48
 
47
49
  File.join(*fully_qualified_path_elements)
48
50
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module YamlReaders
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  module YamlReaders
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tdc
2
4
  #
3
5
  # Namespace to host YAML readers.
data/lib/tdc.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "ostruct"
2
4
  require "yaml"
3
5
 
data/tdc.gemspec CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative "lib/tdc/version"
2
4
 
3
5
  Gem::Specification.new do |spec|
@@ -10,7 +12,7 @@ Gem::Specification.new do |spec|
10
12
  spec.homepage = "https://github.com/nulogy/tdc"
11
13
  spec.license = "MIT"
12
14
 
13
- spec.required_ruby_version = Gem::Requirement.new(">= 3.2")
15
+ spec.required_ruby_version = Gem::Requirement.new(">= 3.3")
14
16
 
15
17
  spec.metadata = {
16
18
  "homepage_uri" => "https://github.com/nulogy/tdc",
@@ -29,15 +31,6 @@ Gem::Specification.new do |spec|
29
31
  spec.require_paths = ["lib"]
30
32
 
31
33
  spec.add_dependency "activesupport", ">= 7.2", "< 8.1"
34
+ spec.add_dependency "ostruct", ">= 0.6"
32
35
  spec.add_dependency "zeitwerk", ">= 2.7"
33
-
34
- spec.add_development_dependency "appraisal", "~> 2.5"
35
- spec.add_development_dependency "rake", "~> 13.2"
36
- spec.add_development_dependency "rspec", "~> 3.13"
37
- spec.add_development_dependency "rubocop", "~> 1.69"
38
- spec.add_development_dependency "rubocop-performance", "~> 1.23"
39
- spec.add_development_dependency "rubocop-rake", "~> 0.6"
40
- spec.add_development_dependency "rubocop-rspec", "~> 3.3"
41
- spec.add_development_dependency "rubycritic", "~> 4.9"
42
- spec.add_development_dependency "simplecov", "~> 0.22"
43
36
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tdc
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.2'
4
+ version: '1.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alistair McKinnell
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-10-08 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activesupport
@@ -31,146 +30,33 @@ dependencies:
31
30
  - !ruby/object:Gem::Version
32
31
  version: '8.1'
33
32
  - !ruby/object:Gem::Dependency
34
- name: zeitwerk
33
+ name: ostruct
35
34
  requirement: !ruby/object:Gem::Requirement
36
35
  requirements:
37
36
  - - ">="
38
37
  - !ruby/object:Gem::Version
39
- version: '2.7'
38
+ version: '0.6'
40
39
  type: :runtime
41
40
  prerelease: false
42
41
  version_requirements: !ruby/object:Gem::Requirement
43
42
  requirements:
44
43
  - - ">="
45
- - !ruby/object:Gem::Version
46
- version: '2.7'
47
- - !ruby/object:Gem::Dependency
48
- name: appraisal
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '2.5'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '2.5'
61
- - !ruby/object:Gem::Dependency
62
- name: rake
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '13.2'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '13.2'
75
- - !ruby/object:Gem::Dependency
76
- name: rspec
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '3.13'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '3.13'
89
- - !ruby/object:Gem::Dependency
90
- name: rubocop
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '1.69'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '1.69'
103
- - !ruby/object:Gem::Dependency
104
- name: rubocop-performance
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '1.23'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '1.23'
117
- - !ruby/object:Gem::Dependency
118
- name: rubocop-rake
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '0.6'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
44
  - !ruby/object:Gem::Version
130
45
  version: '0.6'
131
46
  - !ruby/object:Gem::Dependency
132
- name: rubocop-rspec
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: '3.3'
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: '3.3'
145
- - !ruby/object:Gem::Dependency
146
- name: rubycritic
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '4.9'
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '4.9'
159
- - !ruby/object:Gem::Dependency
160
- name: simplecov
47
+ name: zeitwerk
161
48
  requirement: !ruby/object:Gem::Requirement
162
49
  requirements:
163
- - - "~>"
50
+ - - ">="
164
51
  - !ruby/object:Gem::Version
165
- version: '0.22'
166
- type: :development
52
+ version: '2.7'
53
+ type: :runtime
167
54
  prerelease: false
168
55
  version_requirements: !ruby/object:Gem::Requirement
169
56
  requirements:
170
- - - "~>"
57
+ - - ">="
171
58
  - !ruby/object:Gem::Version
172
- version: '0.22'
173
- description:
59
+ version: '2.7'
174
60
  email:
175
61
  - alistairm@nulogy.com
176
62
  executables: []
@@ -230,7 +116,6 @@ metadata:
230
116
  changelog_uri: https://github.com/nulogy/tdc/blob/master/CHANGELOG.md
231
117
  bug_tracker_uri: https://github.com/nulogy/tdc/issues
232
118
  rubygems_mfa_required: 'true'
233
- post_install_message:
234
119
  rdoc_options: []
235
120
  require_paths:
236
121
  - lib
@@ -238,15 +123,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
238
123
  requirements:
239
124
  - - ">="
240
125
  - !ruby/object:Gem::Version
241
- version: '3.2'
126
+ version: '3.3'
242
127
  required_rubygems_version: !ruby/object:Gem::Requirement
243
128
  requirements:
244
129
  - - ">="
245
130
  - !ruby/object:Gem::Version
246
131
  version: '0'
247
132
  requirements: []
248
- rubygems_version: 3.5.22
249
- signing_key:
133
+ rubygems_version: 3.6.9
250
134
  specification_version: 4
251
135
  summary: A simple framework for creating a Test Data Catalog
252
136
  test_files: []