serialbench 0.1.1 → 0.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 (100) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/benchmark.yml +273 -220
  3. data/.github/workflows/rake.yml +26 -0
  4. data/.github/workflows/windows-debug.yml +171 -0
  5. data/.gitignore +32 -0
  6. data/.rubocop.yml +1 -0
  7. data/.rubocop_todo.yml +274 -0
  8. data/Gemfile +14 -1
  9. data/README.adoc +292 -1118
  10. data/Rakefile +0 -55
  11. data/config/benchmarks/full.yml +29 -0
  12. data/config/benchmarks/short.yml +26 -0
  13. data/config/environments/asdf-ruby-3.2.yml +8 -0
  14. data/config/environments/asdf-ruby-3.3.yml +8 -0
  15. data/config/environments/docker-ruby-3.0.yml +9 -0
  16. data/config/environments/docker-ruby-3.1.yml +9 -0
  17. data/config/environments/docker-ruby-3.2.yml +9 -0
  18. data/config/environments/docker-ruby-3.3.yml +9 -0
  19. data/config/environments/docker-ruby-3.4.yml +9 -0
  20. data/data/schemas/result.yml +29 -0
  21. data/docker/Dockerfile.alpine +33 -0
  22. data/docker/{Dockerfile.benchmark → Dockerfile.ubuntu} +4 -3
  23. data/docker/README.md +2 -2
  24. data/docs/PLATFORM_VALIDATION_FIX.md +79 -0
  25. data/docs/SYCK_YAML_FIX.md +91 -0
  26. data/docs/WEBSITE_COMPLETION_PLAN.md +440 -0
  27. data/docs/WINDOWS_LIBXML_FIX.md +136 -0
  28. data/docs/WINDOWS_SETUP.md +122 -0
  29. data/exe/serialbench +1 -1
  30. data/lib/serialbench/benchmark_runner.rb +261 -423
  31. data/lib/serialbench/cli/base_cli.rb +51 -0
  32. data/lib/serialbench/cli/benchmark_cli.rb +453 -0
  33. data/lib/serialbench/cli/environment_cli.rb +181 -0
  34. data/lib/serialbench/cli/resultset_cli.rb +261 -0
  35. data/lib/serialbench/cli/ruby_build_cli.rb +225 -0
  36. data/lib/serialbench/cli/validate_cli.rb +88 -0
  37. data/lib/serialbench/cli.rb +61 -600
  38. data/lib/serialbench/config_manager.rb +129 -0
  39. data/lib/serialbench/models/benchmark_config.rb +75 -0
  40. data/lib/serialbench/models/benchmark_result.rb +81 -0
  41. data/lib/serialbench/models/environment_config.rb +72 -0
  42. data/lib/serialbench/models/platform.rb +111 -0
  43. data/lib/serialbench/models/result.rb +80 -0
  44. data/lib/serialbench/models/result_set.rb +79 -0
  45. data/lib/serialbench/models/result_store.rb +108 -0
  46. data/lib/serialbench/models.rb +54 -0
  47. data/lib/serialbench/ruby_build_manager.rb +149 -0
  48. data/lib/serialbench/runners/asdf_runner.rb +296 -0
  49. data/lib/serialbench/runners/base.rb +32 -0
  50. data/lib/serialbench/runners/docker_runner.rb +140 -0
  51. data/lib/serialbench/runners/local_runner.rb +71 -0
  52. data/lib/serialbench/serializers/base_serializer.rb +9 -17
  53. data/lib/serialbench/serializers/json/base_json_serializer.rb +4 -4
  54. data/lib/serialbench/serializers/json/json_serializer.rb +0 -2
  55. data/lib/serialbench/serializers/json/oj_serializer.rb +0 -2
  56. data/lib/serialbench/serializers/json/rapidjson_serializer.rb +1 -1
  57. data/lib/serialbench/serializers/json/yajl_serializer.rb +0 -2
  58. data/lib/serialbench/serializers/toml/base_toml_serializer.rb +5 -5
  59. data/lib/serialbench/serializers/toml/toml_rb_serializer.rb +1 -3
  60. data/lib/serialbench/serializers/toml/tomlib_serializer.rb +1 -3
  61. data/lib/serialbench/serializers/toml/tomlrb_serializer.rb +56 -0
  62. data/lib/serialbench/serializers/xml/base_xml_serializer.rb +4 -9
  63. data/lib/serialbench/serializers/xml/libxml_serializer.rb +4 -10
  64. data/lib/serialbench/serializers/xml/nokogiri_serializer.rb +2 -4
  65. data/lib/serialbench/serializers/xml/oga_serializer.rb +4 -10
  66. data/lib/serialbench/serializers/xml/ox_serializer.rb +2 -4
  67. data/lib/serialbench/serializers/xml/rexml_serializer.rb +3 -5
  68. data/lib/serialbench/serializers/yaml/base_yaml_serializer.rb +5 -1
  69. data/lib/serialbench/serializers/yaml/psych_serializer.rb +1 -1
  70. data/lib/serialbench/serializers/yaml/syck_serializer.rb +60 -23
  71. data/lib/serialbench/serializers.rb +23 -6
  72. data/lib/serialbench/site_generator.rb +283 -0
  73. data/lib/serialbench/templates/assets/css/benchmark_report.css +535 -0
  74. data/lib/serialbench/templates/assets/css/format_based.css +474 -0
  75. data/lib/serialbench/templates/assets/css/themes.css +589 -0
  76. data/lib/serialbench/templates/assets/js/chart_helpers.js +411 -0
  77. data/lib/serialbench/templates/assets/js/dashboard.js +795 -0
  78. data/lib/serialbench/templates/assets/js/navigation.js +142 -0
  79. data/lib/serialbench/templates/base.liquid +49 -0
  80. data/lib/serialbench/templates/format_based.liquid +507 -0
  81. data/lib/serialbench/templates/partials/chart_section.liquid +4 -0
  82. data/lib/serialbench/version.rb +1 -1
  83. data/lib/serialbench/yaml_validator.rb +36 -0
  84. data/lib/serialbench.rb +2 -31
  85. data/serialbench.gemspec +15 -3
  86. metadata +106 -25
  87. data/.github/workflows/ci.yml +0 -74
  88. data/.github/workflows/docker.yml +0 -246
  89. data/config/ci.yml +0 -22
  90. data/config/full.yml +0 -30
  91. data/docker/run-benchmarks.sh +0 -356
  92. data/lib/serialbench/chart_generator.rb +0 -821
  93. data/lib/serialbench/result_formatter.rb +0 -182
  94. data/lib/serialbench/result_merger.rb +0 -1201
  95. data/lib/serialbench/serializers/xml/base_parser.rb +0 -69
  96. data/lib/serialbench/serializers/xml/libxml_parser.rb +0 -98
  97. data/lib/serialbench/serializers/xml/nokogiri_parser.rb +0 -111
  98. data/lib/serialbench/serializers/xml/oga_parser.rb +0 -85
  99. data/lib/serialbench/serializers/xml/ox_parser.rb +0 -64
  100. data/lib/serialbench/serializers/xml/rexml_parser.rb +0 -129
@@ -0,0 +1,171 @@
1
+ name: Windows Debug
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main ]
6
+ paths:
7
+ - '.github/workflows/windows-debug.yml'
8
+ pull_request:
9
+ paths:
10
+ - '.github/workflows/windows-debug.yml'
11
+ workflow_dispatch:
12
+
13
+ jobs:
14
+ test-libxml2-install:
15
+ runs-on: windows-latest
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ ruby: ['3.1', '3.4']
20
+ method: ['vcpkg', 'msys2', 'direct']
21
+
22
+ name: Test ${{ matrix.method }} on Ruby ${{ matrix.ruby }}
23
+
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+
27
+ - name: Set up Ruby
28
+ uses: ruby/setup-ruby@v1
29
+ with:
30
+ ruby-version: ${{ matrix.ruby }}
31
+
32
+ - name: Install via vcpkg
33
+ if: matrix.method == 'vcpkg'
34
+ shell: powershell
35
+ run: |
36
+ Write-Host "Installing libxml2 via vcpkg..."
37
+ vcpkg install libxml2:x64-windows
38
+ vcpkg integrate install
39
+
40
+ # Find the libxml2 installation
41
+ $vcpkgRoot = "C:\vcpkg"
42
+ $libxml2Path = Join-Path $vcpkgRoot "installed\x64-windows"
43
+
44
+ Write-Host "libxml2 installed at: $libxml2Path"
45
+
46
+ # Set environment variables
47
+ echo "LIBXML2_INCLUDE=$libxml2Path\include" >> $env:GITHUB_ENV
48
+ echo "LIBXML2_LIB=$libxml2Path\lib" >> $env:GITHUB_ENV
49
+ echo "PKG_CONFIG_PATH=$libxml2Path\lib\pkgconfig" >> $env:GITHUB_ENV
50
+
51
+ # Add to PATH
52
+ $currentPath = [Environment]::GetEnvironmentVariable("PATH", "Process")
53
+ $newPath = "$libxml2Path\bin;$currentPath"
54
+ echo "$newPath" >> $env:GITHUB_PATH
55
+
56
+ # Verify installation
57
+ Get-ChildItem -Path $libxml2Path -Recurse | Where-Object { $_.Name -like "*libxml*" } | Select-Object FullName
58
+
59
+ - name: Install via msys2
60
+ if: matrix.method == 'msys2'
61
+ shell: powershell
62
+ run: |
63
+ Write-Host "Installing libxml2 via msys2..."
64
+ choco install -y msys2
65
+
66
+ # Initialize msys2 and install libxml2
67
+ C:\tools\msys64\usr\bin\bash -lc "pacman -Syu --noconfirm"
68
+ C:\tools\msys64\usr\bin\bash -lc "pacman -S --noconfirm mingw-w64-x86_64-libxml2 mingw-w64-x86_64-pkg-config"
69
+
70
+ # Set environment variables
71
+ $msys2Root = "C:\tools\msys64\mingw64"
72
+ echo "LIBXML2_INCLUDE=$msys2Root\include\libxml2" >> $env:GITHUB_ENV
73
+ echo "LIBXML2_LIB=$msys2Root\lib" >> $env:GITHUB_ENV
74
+ echo "PKG_CONFIG_PATH=$msys2Root\lib\pkgconfig" >> $env:GITHUB_ENV
75
+
76
+ # Add to PATH
77
+ echo "$msys2Root\bin" >> $env:GITHUB_PATH
78
+
79
+ # Verify installation
80
+ Get-ChildItem -Path $msys2Root -Recurse | Where-Object { $_.Name -like "*libxml*" } | Select-Object FullName
81
+
82
+ - name: Install via direct download
83
+ if: matrix.method == 'direct'
84
+ shell: powershell
85
+ run: |
86
+ Write-Host "Installing libxml2 via direct download..."
87
+
88
+ # Download pre-built binaries from gnome.org
89
+ $downloadDir = "$env:TEMP\libxml2"
90
+ New-Item -ItemType Directory -Force -Path $downloadDir
91
+
92
+ # Download libxml2 and dependencies
93
+ $libxml2Url = "https://download.gnome.org/binaries/win64/libxml2/2.9/libxml2-2.9.14-x64_dll.zip"
94
+ $zlibUrl = "https://download.gnome.org/binaries/win64/dependencies/zlib-1.2.13-x64_dll.zip"
95
+ $iconvUrl = "https://download.gnome.org/binaries/win64/dependencies/libiconv-1.17-x64_dll.zip"
96
+
97
+ Invoke-WebRequest -Uri $libxml2Url -OutFile "$downloadDir\libxml2.zip"
98
+ Invoke-WebRequest -Uri $zlibUrl -OutFile "$downloadDir\zlib.zip"
99
+ Invoke-WebRequest -Uri $iconvUrl -OutFile "$downloadDir\iconv.zip"
100
+
101
+ # Extract archives
102
+ Expand-Archive -Path "$downloadDir\libxml2.zip" -DestinationPath "C:\libxml2" -Force
103
+ Expand-Archive -Path "$downloadDir\zlib.zip" -DestinationPath "C:\libxml2" -Force
104
+ Expand-Archive -Path "$downloadDir\iconv.zip" -DestinationPath "C:\libxml2" -Force
105
+
106
+ # Set environment variables
107
+ echo "LIBXML2_INCLUDE=C:\libxml2\include" >> $env:GITHUB_ENV
108
+ echo "LIBXML2_LIB=C:\libxml2\lib" >> $env:GITHUB_ENV
109
+
110
+ # Add to PATH
111
+ echo "C:\libxml2\bin" >> $env:GITHUB_PATH
112
+
113
+ # Verify installation
114
+ Get-ChildItem -Path "C:\libxml2" -Recurse | Where-Object { $_.Name -like "*libxml*" } | Select-Object FullName
115
+
116
+ - name: Verify pkg-config
117
+ shell: powershell
118
+ run: |
119
+ Write-Host "Checking for pkg-config..."
120
+ try {
121
+ $pkgConfigPath = Get-Command pkg-config -ErrorAction Stop
122
+ Write-Host "pkg-config found at: $($pkgConfigPath.Source)"
123
+ pkg-config --version
124
+ } catch {
125
+ Write-Host "pkg-config not found, installing pkgconfiglite..."
126
+ choco install -y pkgconfiglite
127
+ pkg-config --version
128
+ }
129
+
130
+ # Try to find libxml2 via pkg-config
131
+ Write-Host "`nSearching for libxml-2.0.pc..."
132
+ if ($env:PKG_CONFIG_PATH) {
133
+ Write-Host "PKG_CONFIG_PATH: $env:PKG_CONFIG_PATH"
134
+ pkg-config --list-all | Select-String libxml
135
+ }
136
+
137
+ - name: Install bundler
138
+ run: gem install bundler
139
+
140
+ - name: Try to install libxml-ruby gem
141
+ shell: powershell
142
+ continue-on-error: true
143
+ run: |
144
+ Write-Host "Attempting to install libxml-ruby..."
145
+
146
+ # Set additional environment variables for gem installation
147
+ if ($env:LIBXML2_INCLUDE) {
148
+ $env:CFLAGS = "-I$env:LIBXML2_INCLUDE"
149
+ $env:CPPFLAGS = "-I$env:LIBXML2_INCLUDE"
150
+ }
151
+ if ($env:LIBXML2_LIB) {
152
+ $env:LDFLAGS = "-L$env:LIBXML2_LIB"
153
+ }
154
+
155
+ gem install libxml-ruby --verbose
156
+
157
+ - name: Report results
158
+ if: always()
159
+ shell: powershell
160
+ run: |
161
+ Write-Host "`n=== Installation Method: ${{ matrix.method }} ==="
162
+ Write-Host "Ruby Version: ${{ matrix.ruby }}"
163
+ Write-Host "`nEnvironment Variables:"
164
+ Write-Host "LIBXML2_INCLUDE: $env:LIBXML2_INCLUDE"
165
+ Write-Host "LIBXML2_LIB: $env:LIBXML2_LIB"
166
+ Write-Host "PKG_CONFIG_PATH: $env:PKG_CONFIG_PATH"
167
+ Write-Host "`nPATH:"
168
+ $env:PATH -split ';' | ForEach-Object { Write-Host " $_" }
169
+
170
+ Write-Host "`nChecking for libxml2 files..."
171
+ Get-ChildItem C:\ -Recurse -ErrorAction SilentlyContinue -Include libxml2.dll,libxml2.lib,xml2-config.h 2>$null | Select-Object FullName
data/.gitignore ADDED
@@ -0,0 +1,32 @@
1
+ # RSpec
2
+ .rspec_status
3
+
4
+ # ASDF
5
+ .tool-versions
6
+
7
+ # Bundler
8
+ Gemfile.lock
9
+
10
+ # Generated sites
11
+ _site/
12
+ _site.bak/
13
+
14
+ # Gem builds
15
+ pkg/
16
+
17
+ # Benchmark results
18
+ results/
19
+
20
+ # macOS
21
+ .DS_Store
22
+
23
+ # Ruby LSP
24
+ .ruby-lsp/
25
+
26
+ # Editor files
27
+ *.swp
28
+ *.tmp
29
+ *.log
30
+
31
+ # Ruby version manager files
32
+ .ruby-version
data/.rubocop.yml ADDED
@@ -0,0 +1 @@
1
+ inherit_from: .rubocop_todo.yml
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,274 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2025-10-18 07:01:07 UTC using RuboCop version 1.76.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ # This cop supports safe autocorrection (--autocorrect).
11
+ # Configuration parameters: EnforcedStyle, IndentationWidth.
12
+ # SupportedStyles: with_first_argument, with_fixed_indentation
13
+ Layout/ArgumentAlignment:
14
+ Exclude:
15
+ - 'lib/serialbench/config_manager.rb'
16
+
17
+ # Offense count: 4
18
+ # This cop supports safe autocorrection (--autocorrect).
19
+ # Configuration parameters: EnforcedStyle, IndentOneStep, IndentationWidth.
20
+ # SupportedStyles: case, end
21
+ Layout/CaseIndentation:
22
+ Exclude:
23
+ - 'lib/serialbench/serializers/xml/libxml_serializer.rb'
24
+ - 'lib/serialbench/serializers/xml/oga_serializer.rb'
25
+
26
+ # Offense count: 2
27
+ # This cop supports safe autocorrection (--autocorrect).
28
+ Layout/ElseAlignment:
29
+ Exclude:
30
+ - 'lib/serialbench/serializers/xml/libxml_serializer.rb'
31
+ - 'lib/serialbench/serializers/xml/oga_serializer.rb'
32
+
33
+ # Offense count: 2
34
+ # This cop supports safe autocorrection (--autocorrect).
35
+ Layout/EmptyLineAfterGuardClause:
36
+ Exclude:
37
+ - 'lib/serialbench/config_manager.rb'
38
+
39
+ # Offense count: 3
40
+ # This cop supports safe autocorrection (--autocorrect).
41
+ Layout/EmptyLineAfterMagicComment:
42
+ Exclude:
43
+ - 'Gemfile'
44
+ - 'lib/serialbench/models/benchmark_config.rb'
45
+ - 'lib/serialbench/models/environment_config.rb'
46
+
47
+ # Offense count: 1
48
+ # This cop supports safe autocorrection (--autocorrect).
49
+ # Configuration parameters: EmptyLineBetweenMethodDefs, EmptyLineBetweenClassDefs, EmptyLineBetweenModuleDefs, DefLikeMacros, AllowAdjacentOneLineDefs, NumberOfEmptyLines.
50
+ Layout/EmptyLineBetweenDefs:
51
+ Exclude:
52
+ - 'lib/serialbench/serializers/toml/base_toml_serializer.rb'
53
+
54
+ # Offense count: 1
55
+ # This cop supports safe autocorrection (--autocorrect).
56
+ Layout/EmptyLines:
57
+ Exclude:
58
+ - 'lib/serialbench/serializers/toml/base_toml_serializer.rb'
59
+
60
+ # Offense count: 5
61
+ # This cop supports safe autocorrection (--autocorrect).
62
+ Layout/EmptyLinesAroundExceptionHandlingKeywords:
63
+ Exclude:
64
+ - 'lib/serialbench/cli/ruby_build_cli.rb'
65
+
66
+ # Offense count: 10
67
+ # This cop supports safe autocorrection (--autocorrect).
68
+ Layout/EmptyLinesAroundMethodBody:
69
+ Exclude:
70
+ - 'lib/serialbench/cli/ruby_build_cli.rb'
71
+ - 'lib/serialbench/config_manager.rb'
72
+
73
+ # Offense count: 2
74
+ # This cop supports safe autocorrection (--autocorrect).
75
+ # Configuration parameters: EnforcedStyleAlignWith, Severity.
76
+ # SupportedStylesAlignWith: keyword, variable, start_of_line
77
+ Layout/EndAlignment:
78
+ Exclude:
79
+ - 'lib/serialbench/serializers/xml/libxml_serializer.rb'
80
+ - 'lib/serialbench/serializers/xml/oga_serializer.rb'
81
+
82
+ # Offense count: 7
83
+ # This cop supports safe autocorrection (--autocorrect).
84
+ # Configuration parameters: EnforcedStyle.
85
+ # SupportedStyles: normal, indented_internal_methods
86
+ Layout/IndentationConsistency:
87
+ Exclude:
88
+ - 'lib/serialbench/config_manager.rb'
89
+ - 'lib/serialbench/serializers/xml/libxml_serializer.rb'
90
+ - 'lib/serialbench/serializers/xml/oga_serializer.rb'
91
+
92
+ # Offense count: 10
93
+ # This cop supports safe autocorrection (--autocorrect).
94
+ # Configuration parameters: Width, AllowedPatterns.
95
+ Layout/IndentationWidth:
96
+ Exclude:
97
+ - 'lib/serialbench/cli/ruby_build_cli.rb'
98
+ - 'lib/serialbench/serializers/xml/libxml_serializer.rb'
99
+ - 'lib/serialbench/serializers/xml/oga_serializer.rb'
100
+
101
+ # Offense count: 4
102
+ # This cop supports safe autocorrection (--autocorrect).
103
+ Layout/RescueEnsureAlignment:
104
+ Exclude:
105
+ - 'lib/serialbench/cli/ruby_build_cli.rb'
106
+
107
+ # Offense count: 11
108
+ # This cop supports safe autocorrection (--autocorrect).
109
+ # Configuration parameters: AllowInHeredoc.
110
+ Layout/TrailingWhitespace:
111
+ Exclude:
112
+ - 'lib/serialbench/cli/ruby_build_cli.rb'
113
+ - 'lib/serialbench/config_manager.rb'
114
+
115
+ # Offense count: 1
116
+ # Configuration parameters: AllowedParentClasses.
117
+ Lint/MissingSuper:
118
+ Exclude:
119
+ - 'lib/serialbench/serializers/xml/ox_serializer.rb'
120
+
121
+ # Offense count: 22
122
+ # This cop supports safe autocorrection (--autocorrect).
123
+ # Configuration parameters: AutoCorrect, AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods, NotImplementedExceptions.
124
+ # NotImplementedExceptions: NotImplementedError
125
+ Lint/UnusedMethodArgument:
126
+ Enabled: false
127
+
128
+ # Offense count: 1
129
+ # This cop supports safe autocorrection (--autocorrect).
130
+ # Configuration parameters: AutoCorrect, ContextCreatingMethods, MethodCreatingMethods.
131
+ Lint/UselessAccessModifier:
132
+ Exclude:
133
+ - 'lib/serialbench/serializers/toml/base_toml_serializer.rb'
134
+
135
+ # Offense count: 2
136
+ # This cop supports safe autocorrection (--autocorrect).
137
+ # Configuration parameters: AutoCorrect.
138
+ Lint/UselessAssignment:
139
+ Exclude:
140
+ - 'lib/serialbench/cli/resultset_cli.rb'
141
+
142
+ # Offense count: 32
143
+ # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
144
+ Metrics/AbcSize:
145
+ Max: 50
146
+
147
+ # Offense count: 13
148
+ # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
149
+ # AllowedMethods: refine
150
+ Metrics/BlockLength:
151
+ Max: 449
152
+
153
+ # Offense count: 6
154
+ # Configuration parameters: CountComments, CountAsOne.
155
+ Metrics/ClassLength:
156
+ Max: 367
157
+
158
+ # Offense count: 4
159
+ # Configuration parameters: AllowedMethods, AllowedPatterns.
160
+ Metrics/CyclomaticComplexity:
161
+ Max: 12
162
+
163
+ # Offense count: 60
164
+ # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
165
+ Metrics/MethodLength:
166
+ Max: 63
167
+
168
+ # Offense count: 1
169
+ # Configuration parameters: AllowedMethods, AllowedPatterns.
170
+ Metrics/PerceivedComplexity:
171
+ Max: 12
172
+
173
+ # Offense count: 1
174
+ Naming/AccessorMethodName:
175
+ Exclude:
176
+ - 'lib/serialbench/runners/asdf_runner.rb'
177
+
178
+ # Offense count: 37
179
+ # Configuration parameters: AllowedConstants.
180
+ Style/Documentation:
181
+ Enabled: false
182
+
183
+ # Offense count: 3
184
+ # This cop supports unsafe autocorrection (--autocorrect-all).
185
+ # Configuration parameters: EnforcedStyle.
186
+ # SupportedStyles: always, always_true, never
187
+ Style/FrozenStringLiteralComment:
188
+ Exclude:
189
+ - '**/*.arb'
190
+ - 'Gemfile'
191
+ - 'lib/serialbench/models/benchmark_config.rb'
192
+ - 'lib/serialbench/models/environment_config.rb'
193
+
194
+ # Offense count: 2
195
+ # This cop supports safe autocorrection (--autocorrect).
196
+ # Configuration parameters: MinBodyLength, AllowConsecutiveConditionals.
197
+ Style/GuardClause:
198
+ Exclude:
199
+ - 'lib/serialbench/config_manager.rb'
200
+
201
+ # Offense count: 12
202
+ # This cop supports unsafe autocorrection (--autocorrect-all).
203
+ Style/IdenticalConditionalBranches:
204
+ Exclude:
205
+ - 'lib/serialbench/serializers/xml/libxml_serializer.rb'
206
+ - 'lib/serialbench/serializers/xml/oga_serializer.rb'
207
+
208
+ # Offense count: 10
209
+ # This cop supports safe autocorrection (--autocorrect).
210
+ Style/IfUnlessModifier:
211
+ Exclude:
212
+ - 'lib/serialbench/config_manager.rb'
213
+ - 'lib/serialbench/ruby_build_manager.rb'
214
+ - 'lib/serialbench/runners/docker_runner.rb'
215
+
216
+ # Offense count: 5
217
+ # This cop supports unsafe autocorrection (--autocorrect-all).
218
+ # Configuration parameters: EnforcedStyle, AllowedMethods, AllowedPatterns.
219
+ # SupportedStyles: predicate, comparison
220
+ Style/NumericPredicate:
221
+ Exclude:
222
+ - 'spec/**/*'
223
+ - 'lib/serialbench/benchmark_runner.rb'
224
+ - 'lib/serialbench/cli/ruby_build_cli.rb'
225
+ - 'lib/serialbench/serializers/xml/rexml_serializer.rb'
226
+
227
+ # Offense count: 4
228
+ # This cop supports safe autocorrection (--autocorrect).
229
+ Style/RedundantBegin:
230
+ Exclude:
231
+ - 'lib/serialbench/cli/ruby_build_cli.rb'
232
+
233
+ # Offense count: 5
234
+ # This cop supports unsafe autocorrection (--autocorrect-all).
235
+ # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
236
+ # AllowedMethods: present?, blank?, presence, try, try!
237
+ Style/SafeNavigation:
238
+ Exclude:
239
+ - 'lib/serialbench/serializers/toml/tomlib_serializer.rb'
240
+ - 'lib/serialbench/serializers/xml/libxml_serializer.rb'
241
+ - 'lib/serialbench/serializers/xml/nokogiri_serializer.rb'
242
+ - 'lib/serialbench/serializers/xml/oga_serializer.rb'
243
+ - 'lib/serialbench/serializers/xml/ox_serializer.rb'
244
+
245
+ # Offense count: 1
246
+ # This cop supports unsafe autocorrection (--autocorrect-all).
247
+ # Configuration parameters: Mode.
248
+ Style/StringConcatenation:
249
+ Exclude:
250
+ - 'lib/serialbench/ruby_build_manager.rb'
251
+
252
+ # Offense count: 12
253
+ # This cop supports safe autocorrection (--autocorrect).
254
+ # Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
255
+ # SupportedStyles: single_quotes, double_quotes
256
+ Style/StringLiterals:
257
+ Exclude:
258
+ - 'lib/serialbench/cli/ruby_build_cli.rb'
259
+ - 'lib/serialbench/config_manager.rb'
260
+
261
+ # Offense count: 2
262
+ # This cop supports unsafe autocorrection (--autocorrect-all).
263
+ # Configuration parameters: AllowMethodsWithArguments, AllowedMethods, AllowedPatterns, AllowComments.
264
+ # AllowedMethods: define_method
265
+ Style/SymbolProc:
266
+ Exclude:
267
+ - 'lib/serialbench/serializers.rb'
268
+
269
+ # Offense count: 4
270
+ # This cop supports safe autocorrection (--autocorrect).
271
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns, SplitStrings.
272
+ # URISchemes: http, https
273
+ Layout/LineLength:
274
+ Max: 163
data/Gemfile CHANGED
@@ -1,9 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gemspec
4
6
 
7
+ # Platform-specific dependencies
8
+ # nokogiri and libxml-ruby fail to compile on Windows ARM due to libxml2
9
+ # compilation issues, but work on other platforms
10
+ unless Gem.win_platform? && RUBY_PLATFORM.include?('aarch64')
11
+ gem 'nokogiri'
12
+ gem 'libxml-ruby'
13
+ end
14
+
15
+ gem 'base64' # Required for Ruby 3.4+
16
+ gem 'lutaml-model', '~> 0.7'
17
+ gem 'octokit'
5
18
  gem 'rake'
6
19
  gem 'rspec'
7
20
  gem 'rubocop'
8
- gem 'rubocop-rspec'
9
21
  gem 'rubocop-performance'
22
+ gem 'rubocop-rspec'