expressir 1.3.0.pre.5-arm64-darwin → 1.3.2-arm64-darwin
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.cross_rubies +8 -0
- data/.github/workflows/codeql.yml +47 -0
- data/.github/workflows/rake.yml +152 -17
- data/.github/workflows/release.yml +14 -10
- data/.github/workflows/stress.yml +53 -0
- data/.gitignore +1 -1
- data/.gitmodules +2 -2
- data/exe/generate-parser +1 -1
- data/expressir.gemspec +5 -5
- data/lib/expressir/express/2.7/express_parser.bundle +0 -0
- data/lib/expressir/express/3.0/express_parser.bundle +0 -0
- data/lib/expressir/express/3.1/express_parser.bundle +0 -0
- data/lib/expressir/express/3.2/express_parser.bundle +0 -0
- data/lib/expressir/express/parser.rb +0 -1
- data/lib/expressir/express/visitor.rb +11 -8
- data/lib/expressir/model/declarations/schema.rb +3 -3
- data/lib/expressir/model/model_element.rb +4 -4
- data/lib/expressir/version.rb +1 -1
- data/lib/expressir.rb +20 -0
- data/rakelib/antlr4-native.rake +24 -12
- data/rakelib/cross-ruby.rake +40 -21
- data/spec/acceptance/version_spec.rb +3 -0
- data/spec/expressir/express/cache_spec.rb +2 -2
- data/spec/expressir/express/formatter_spec.rb +0 -2
- metadata +10 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14c845e7ff989ff6fd579ec4dd2a0387da92a089955c01b8f8b92be84f9e4216
|
4
|
+
data.tar.gz: 65d821e16366aef97ed212e831030ad5f9fc699cd9a1b74089664d8edd8e45ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbf20c7784c913fa15099952f1fec474fdf0097add1a1202af9ca8e62522e65a8c0adc3f2fabb25c0b9b1eb781ec2fbbaf927bdb0d18bfc9fcbdf6a0b1e747b7
|
7
|
+
data.tar.gz: e6fcfe824eaa26cbd881dac7f88ecf1b8000cb04676175b4ad19912b08497dd83c757072bde434f5b16490916e9dcc4559844aacf95bbd8ea5a1db1db229905f
|
data/.cross_rubies
CHANGED
@@ -1,20 +1,28 @@
|
|
1
1
|
3.2.0:x86_64-w64-mingw32
|
2
2
|
3.2.0:x86_64-linux-gnu
|
3
|
+
3.2.0:x86_64-linux-musl
|
3
4
|
3.2.0:aarch64-linux-gnu
|
5
|
+
3.2.0:aarch64-linux-musl
|
4
6
|
3.2.0:x86_64-darwin
|
5
7
|
3.2.0:arm64-darwin
|
6
8
|
3.1.0:x86_64-w64-mingw32
|
7
9
|
3.1.0:x86_64-linux-gnu
|
10
|
+
3.1.0:x86_64-linux-musl
|
8
11
|
3.1.0:aarch64-linux-gnu
|
12
|
+
3.1.0:aarch64-linux-musl
|
9
13
|
3.1.0:x86_64-darwin
|
10
14
|
3.1.0:arm64-darwin
|
11
15
|
3.0.0:x86_64-w64-mingw32
|
12
16
|
3.0.0:x86_64-linux-gnu
|
17
|
+
3.0.0:x86_64-linux-musl
|
13
18
|
3.0.0:aarch64-linux-gnu
|
19
|
+
3.0.0:aarch64-linux-musl
|
14
20
|
3.0.0:x86_64-darwin
|
15
21
|
3.0.0:arm64-darwin
|
16
22
|
2.7.0:x86_64-w64-mingw32
|
17
23
|
2.7.0:x86_64-linux-gnu
|
24
|
+
2.7.0:x86_64-linux-musl
|
18
25
|
2.7.0:aarch64-linux-gnu
|
26
|
+
2.7.0:aarch64-linux-musl
|
19
27
|
2.7.0:x86_64-darwin
|
20
28
|
2.7.0:arm64-darwin
|
@@ -0,0 +1,47 @@
|
|
1
|
+
name: "CodeQL"
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ main ]
|
6
|
+
schedule:
|
7
|
+
- cron: '0 23 * * 3'
|
8
|
+
workflow_dispatch:
|
9
|
+
|
10
|
+
concurrency:
|
11
|
+
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
|
12
|
+
cancel-in-progress: true
|
13
|
+
|
14
|
+
env:
|
15
|
+
BUNDLER_VER: 2.4.22
|
16
|
+
|
17
|
+
jobs:
|
18
|
+
analyze:
|
19
|
+
name: Analyze
|
20
|
+
runs-on: ubuntu-latest
|
21
|
+
|
22
|
+
steps:
|
23
|
+
- name: Checkout
|
24
|
+
uses: actions/checkout@v4
|
25
|
+
with:
|
26
|
+
submodules: recursive
|
27
|
+
|
28
|
+
- name: Install Ruby
|
29
|
+
uses: ruby/setup-ruby@master
|
30
|
+
with:
|
31
|
+
ruby-version: 3.1
|
32
|
+
bundler: ${{ env.BUNDLER_VER }}
|
33
|
+
bundler-cache: false
|
34
|
+
|
35
|
+
- name: Bundle
|
36
|
+
run: bundle install --jobs 4 --retry 3
|
37
|
+
|
38
|
+
- name: Initialize CodeQL
|
39
|
+
uses: github/codeql-action/init@v2
|
40
|
+
with:
|
41
|
+
languages: "ruby, cpp"
|
42
|
+
|
43
|
+
- name: Build native extension
|
44
|
+
run: bundle exec rake compile
|
45
|
+
|
46
|
+
- name: Perform CodeQL Analysis
|
47
|
+
uses: github/codeql-action/analyze@v2
|
data/.github/workflows/rake.yml
CHANGED
@@ -8,6 +8,7 @@ on:
|
|
8
8
|
- '**.adoc'
|
9
9
|
- '**.md'
|
10
10
|
- .github/workflows/release.yml
|
11
|
+
- .github/workflows/codeql.yml
|
11
12
|
pull_request:
|
12
13
|
workflow_dispatch:
|
13
14
|
|
@@ -16,6 +17,7 @@ concurrency:
|
|
16
17
|
cancel-in-progress: true
|
17
18
|
|
18
19
|
env:
|
20
|
+
RUBYGEM_VER: 3.4.22
|
19
21
|
BUNDLER_VER: 2.4.22
|
20
22
|
# Forcing bundler version to ensure that it is consistent everywhere and
|
21
23
|
# does not cause bundler gem reinstalls
|
@@ -77,11 +79,54 @@ jobs:
|
|
77
79
|
run: bundle install --jobs 4 --retry 3
|
78
80
|
|
79
81
|
- name: Process cache
|
80
|
-
uses: actions/cache@
|
82
|
+
uses: actions/cache@v4
|
81
83
|
id: cache
|
82
84
|
with:
|
83
85
|
path: lib/expressir/express/express_parser.*
|
84
|
-
key: v4-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('ext/
|
86
|
+
key: v4-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('ext/express_parser/extconf.rb', 'ext/express_parser/antlrgen/**', 'ext/express_parser/express_parser.cpp', '.git/modules/ext/express_parser/antlr4-upstream/HEAD') }}
|
87
|
+
|
88
|
+
- name: Build native extension
|
89
|
+
if: steps.cache.outputs.cache-hit != 'true'
|
90
|
+
run: bundle exec rake compile
|
91
|
+
|
92
|
+
- name: Run tests
|
93
|
+
run: |
|
94
|
+
bundle exec rake
|
95
|
+
cat .rspec_status
|
96
|
+
|
97
|
+
rake-alpine:
|
98
|
+
name: test on ruby-${{ matrix.ruby }} alpine container
|
99
|
+
runs-on: ubuntu-latest
|
100
|
+
strategy:
|
101
|
+
fail-fast: false
|
102
|
+
matrix:
|
103
|
+
ruby: [ '3.2', '3.1', '3.0', '2.7' ]
|
104
|
+
container: ruby:${{ matrix.ruby }}-alpine
|
105
|
+
steps:
|
106
|
+
- name: Install packages
|
107
|
+
run: |
|
108
|
+
apk --no-cache --upgrade add build-base git bash tar
|
109
|
+
|
110
|
+
- name: Checkout
|
111
|
+
uses: actions/checkout@v4
|
112
|
+
with:
|
113
|
+
submodules: recursive
|
114
|
+
|
115
|
+
- name: Upgrade RubyGems
|
116
|
+
if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
|
117
|
+
run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
|
118
|
+
|
119
|
+
- name: Bundle
|
120
|
+
run: |
|
121
|
+
git config --global --add safe.directory $PWD
|
122
|
+
bundle install --jobs 4 --retry 3
|
123
|
+
|
124
|
+
- name: Process cache
|
125
|
+
uses: actions/cache@v4
|
126
|
+
id: cache
|
127
|
+
with:
|
128
|
+
path: lib/expressir/express/express_parser.*
|
129
|
+
key: v4-alpine-${{ matrix.ruby }}-${{ hashFiles('ext/express_parser/extconf.rb', 'ext/express_parser/antlrgen/**', 'ext/express_parser/express_parser.cpp', '.git/modules/ext/express_parser/antlr4-upstream/HEAD') }}
|
85
130
|
|
86
131
|
- name: Build native extension
|
87
132
|
if: steps.cache.outputs.cache-hit != 'true'
|
@@ -115,7 +160,7 @@ jobs:
|
|
115
160
|
run: gem build expressir.gemspec
|
116
161
|
|
117
162
|
- name: Package gem without native extension
|
118
|
-
uses: actions/upload-artifact@
|
163
|
+
uses: actions/upload-artifact@v4
|
119
164
|
with:
|
120
165
|
name: pkg-ruby
|
121
166
|
path: expressir-*.gem
|
@@ -125,7 +170,7 @@ jobs:
|
|
125
170
|
strategy:
|
126
171
|
fail-fast: false
|
127
172
|
matrix:
|
128
|
-
platform: [ linux-gnu, windows, darwin ]
|
173
|
+
platform: [ linux-gnu, linux-musl, windows, darwin ]
|
129
174
|
steps:
|
130
175
|
- name: Checkout
|
131
176
|
uses: actions/checkout@v4
|
@@ -154,7 +199,7 @@ jobs:
|
|
154
199
|
run: bundle exec rake gem:${{ matrix.platform }}
|
155
200
|
|
156
201
|
- name: Package gem with native extension
|
157
|
-
uses: actions/upload-artifact@
|
202
|
+
uses: actions/upload-artifact@v4
|
158
203
|
with:
|
159
204
|
name: pkg-${{ matrix.platform }}
|
160
205
|
path: pkg/*.gem
|
@@ -173,7 +218,7 @@ jobs:
|
|
173
218
|
uses: ruby/setup-ruby@master
|
174
219
|
with:
|
175
220
|
ruby-version: ${{ matrix.ruby }}
|
176
|
-
bundler-cache:
|
221
|
+
bundler-cache: false
|
177
222
|
bundler: ${{ env.BUNDLER_VER }}
|
178
223
|
|
179
224
|
- name: Checkout
|
@@ -185,7 +230,7 @@ jobs:
|
|
185
230
|
run: bundle install --jobs 4 --retry 3
|
186
231
|
|
187
232
|
- name: Download packaged gem
|
188
|
-
uses: actions/download-artifact@
|
233
|
+
uses: actions/download-artifact@v4
|
189
234
|
with:
|
190
235
|
name: pkg-ruby
|
191
236
|
path: pkg
|
@@ -195,7 +240,50 @@ jobs:
|
|
195
240
|
|
196
241
|
- name: Verify
|
197
242
|
run: |
|
198
|
-
cd $(ruby -e "puts
|
243
|
+
cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
|
244
|
+
ruby bin/rspec
|
245
|
+
cat .rspec_status || echo ".rspec_status was not found"
|
246
|
+
|
247
|
+
verify-ruby-linux-musl:
|
248
|
+
name: verify ruby gem on ruby-${{ matrix.ruby }} on alpine container
|
249
|
+
needs: pack-ruby
|
250
|
+
runs-on: ubuntu-latest
|
251
|
+
strategy:
|
252
|
+
fail-fast: false
|
253
|
+
matrix:
|
254
|
+
ruby: [ '3.2', '3.1', '3.0', '2.7' ]
|
255
|
+
container: ruby:${{ matrix.ruby }}-alpine
|
256
|
+
steps:
|
257
|
+
- name: Install packages
|
258
|
+
run: |
|
259
|
+
apk --no-cache --upgrade add build-base git bash tar
|
260
|
+
|
261
|
+
- name: Checkout
|
262
|
+
uses: actions/checkout@v4
|
263
|
+
with:
|
264
|
+
submodules: recursive
|
265
|
+
|
266
|
+
- name: Upgrade RubyGems
|
267
|
+
if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
|
268
|
+
run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
|
269
|
+
|
270
|
+
- name: Bundle
|
271
|
+
run: |
|
272
|
+
git config --global --add safe.directory $PWD
|
273
|
+
bundle install --jobs 4 --retry 3
|
274
|
+
|
275
|
+
- name: Download packaged gem
|
276
|
+
uses: actions/download-artifact@v4
|
277
|
+
with:
|
278
|
+
name: pkg-ruby
|
279
|
+
path: pkg
|
280
|
+
|
281
|
+
- name: Install gem
|
282
|
+
run: gem install -l pkg/expressir-*.gem
|
283
|
+
|
284
|
+
- name: Verify
|
285
|
+
run: |
|
286
|
+
cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
|
199
287
|
ruby bin/rspec
|
200
288
|
cat .rspec_status || echo ".rspec_status was not found"
|
201
289
|
|
@@ -212,7 +300,7 @@ jobs:
|
|
212
300
|
uses: ruby/setup-ruby@master
|
213
301
|
with:
|
214
302
|
ruby-version: ${{ matrix.ruby }}
|
215
|
-
bundler-cache:
|
303
|
+
bundler-cache: false
|
216
304
|
bundler: ${{ env.BUNDLER_VER }}
|
217
305
|
|
218
306
|
- name: Checkout
|
@@ -222,7 +310,7 @@ jobs:
|
|
222
310
|
run: bundle install --jobs 4 --retry 3
|
223
311
|
|
224
312
|
- name: Download packaged gem
|
225
|
-
uses: actions/download-artifact@
|
313
|
+
uses: actions/download-artifact@v4
|
226
314
|
with:
|
227
315
|
name: pkg-darwin
|
228
316
|
path: pkg
|
@@ -233,7 +321,7 @@ jobs:
|
|
233
321
|
|
234
322
|
- name: Verify
|
235
323
|
run: |
|
236
|
-
cd $(ruby -e "puts
|
324
|
+
cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
|
237
325
|
ruby bin/rspec
|
238
326
|
cat .rspec_status || echo ".rspec_status was not found"
|
239
327
|
|
@@ -250,9 +338,13 @@ jobs:
|
|
250
338
|
uses: ruby/setup-ruby@master
|
251
339
|
with:
|
252
340
|
ruby-version: ${{ matrix.ruby }}
|
253
|
-
bundler-cache:
|
341
|
+
bundler-cache: false
|
254
342
|
bundler: ${{ env.BUNDLER_VER }}
|
255
343
|
|
344
|
+
- name: Upgrade RubyGems
|
345
|
+
if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
|
346
|
+
run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
|
347
|
+
|
256
348
|
- name: Checkout
|
257
349
|
uses: actions/checkout@v4
|
258
350
|
|
@@ -260,7 +352,7 @@ jobs:
|
|
260
352
|
run: bundle install --jobs 4 --retry 3
|
261
353
|
|
262
354
|
- name: Download packaged gem
|
263
|
-
uses: actions/download-artifact@
|
355
|
+
uses: actions/download-artifact@v4
|
264
356
|
with:
|
265
357
|
name: pkg-linux-gnu
|
266
358
|
path: pkg
|
@@ -270,7 +362,7 @@ jobs:
|
|
270
362
|
|
271
363
|
- name: Verify
|
272
364
|
run: |
|
273
|
-
cd $(ruby -e "puts
|
365
|
+
cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
|
274
366
|
ruby bin/rspec
|
275
367
|
cat .rspec_status || echo ".rspec_status was not found"
|
276
368
|
|
@@ -288,7 +380,7 @@ jobs:
|
|
288
380
|
uses: ruby/setup-ruby@master
|
289
381
|
with:
|
290
382
|
ruby-version: ${{ matrix.ruby }}
|
291
|
-
bundler-cache:
|
383
|
+
bundler-cache: false
|
292
384
|
bundler: ${{ env.BUNDLER_VER }}
|
293
385
|
|
294
386
|
- name: Checkout
|
@@ -298,7 +390,7 @@ jobs:
|
|
298
390
|
run: bundle install --jobs 4 --retry 3
|
299
391
|
|
300
392
|
- name: Download packaged gem
|
301
|
-
uses: actions/download-artifact@
|
393
|
+
uses: actions/download-artifact@v4
|
302
394
|
with:
|
303
395
|
name: pkg-windows
|
304
396
|
path: pkg
|
@@ -308,6 +400,49 @@ jobs:
|
|
308
400
|
|
309
401
|
- name: Verify
|
310
402
|
run: |
|
311
|
-
cd $(ruby -e "puts
|
403
|
+
cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
|
404
|
+
ruby bin/rspec
|
405
|
+
cat .rspec_status || echo ".rspec_status was not found"
|
406
|
+
|
407
|
+
verify-linux-musl:
|
408
|
+
name: verify Linux (musl) binary gem on ruby-${{ matrix.ruby }}
|
409
|
+
needs: pack
|
410
|
+
runs-on: ubuntu-latest
|
411
|
+
strategy:
|
412
|
+
fail-fast: false
|
413
|
+
matrix:
|
414
|
+
ruby: [ '3.2', '3.1', '3.0', '2.7' ]
|
415
|
+
container: ruby:${{ matrix.ruby }}-alpine
|
416
|
+
steps:
|
417
|
+
- name: Install packages
|
418
|
+
run: |
|
419
|
+
apk --no-cache --upgrade add build-base git bash tar
|
420
|
+
|
421
|
+
- name: Checkout
|
422
|
+
uses: actions/checkout@v4
|
423
|
+
with:
|
424
|
+
submodules: recursive
|
425
|
+
|
426
|
+
- name: Upgrade RubyGems
|
427
|
+
if: matrix.ruby == '3.0' || matrix.ruby == '2.7'
|
428
|
+
run: gem update --system ${{ env.RUBYGEM_VER }} --no-document
|
429
|
+
|
430
|
+
- name: Bundle
|
431
|
+
run: |
|
432
|
+
git config --global --add safe.directory $PWD
|
433
|
+
bundle install --jobs 4 --retry 3
|
434
|
+
|
435
|
+
- name: Download packaged gem
|
436
|
+
uses: actions/download-artifact@v4
|
437
|
+
with:
|
438
|
+
name: pkg-linux-musl
|
439
|
+
path: pkg
|
440
|
+
|
441
|
+
- name: Install binary gem
|
442
|
+
run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem
|
443
|
+
|
444
|
+
- name: Verify
|
445
|
+
run: |
|
446
|
+
cd $(ruby -e "puts Gem::Specification.find_by_name('expressir').gem_dir")
|
312
447
|
ruby bin/rspec
|
313
448
|
cat .rspec_status || echo ".rspec_status was not found"
|
@@ -15,6 +15,9 @@ concurrency:
|
|
15
15
|
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
|
16
16
|
cancel-in-progress: true
|
17
17
|
|
18
|
+
env:
|
19
|
+
BUNDLER_VER: 2.4.22
|
20
|
+
|
18
21
|
jobs:
|
19
22
|
bump:
|
20
23
|
runs-on: ubuntu-latest
|
@@ -46,7 +49,7 @@ jobs:
|
|
46
49
|
- uses: actions/checkout@v4
|
47
50
|
with:
|
48
51
|
submodules: recursive
|
49
|
-
|
52
|
+
ref: main # https://github.com/actions/checkout/issues/439#issuecomment-830862188
|
50
53
|
|
51
54
|
- uses: ruby/setup-ruby@master
|
52
55
|
with:
|
@@ -62,13 +65,13 @@ jobs:
|
|
62
65
|
gem build expressir.gemspec | grep -o 'Version: .*' | awk '{print $2}' > version
|
63
66
|
|
64
67
|
- if: matrix.platform == 'linux-gnu'
|
65
|
-
uses: actions/upload-artifact@
|
68
|
+
uses: actions/upload-artifact@v4
|
66
69
|
with:
|
67
70
|
name: pkg-ruby
|
68
71
|
path: expressir-*.gem
|
69
72
|
|
70
73
|
- if: matrix.platform == 'linux-gnu'
|
71
|
-
uses: actions/upload-artifact@
|
74
|
+
uses: actions/upload-artifact@v4
|
72
75
|
with:
|
73
76
|
name: version
|
74
77
|
path: version
|
@@ -84,7 +87,7 @@ jobs:
|
|
84
87
|
# build gem WITH pre-built native extension
|
85
88
|
- run: bundle exec rake gem:${{ matrix.platform }}
|
86
89
|
|
87
|
-
- uses: actions/upload-artifact@
|
90
|
+
- uses: actions/upload-artifact@v4
|
88
91
|
with:
|
89
92
|
name: pkg-${{ matrix.platform }}
|
90
93
|
path: pkg/*.gem
|
@@ -93,22 +96,22 @@ jobs:
|
|
93
96
|
runs-on: ubuntu-latest
|
94
97
|
needs: pack
|
95
98
|
steps:
|
96
|
-
- uses: actions/download-artifact@
|
99
|
+
- uses: actions/download-artifact@v4
|
97
100
|
with:
|
98
101
|
name: pkg-ruby
|
99
102
|
path: pkg
|
100
103
|
|
101
|
-
- uses: actions/download-artifact@
|
104
|
+
- uses: actions/download-artifact@v4
|
102
105
|
with:
|
103
106
|
name: pkg-linux-gnu
|
104
107
|
path: pkg
|
105
108
|
|
106
|
-
- uses: actions/download-artifact@
|
109
|
+
- uses: actions/download-artifact@v4
|
107
110
|
with:
|
108
111
|
name: pkg-windows
|
109
112
|
path: pkg
|
110
113
|
|
111
|
-
- uses: actions/download-artifact@
|
114
|
+
- uses: actions/download-artifact@v4
|
112
115
|
with:
|
113
116
|
name: pkg-darwin
|
114
117
|
path: pkg
|
@@ -130,6 +133,7 @@ jobs:
|
|
130
133
|
chmod 0600 ~/.gem/credentials
|
131
134
|
gem signin
|
132
135
|
for gem in pkg/*.gem; do gem push $gem -V; done
|
136
|
+
sleep 15
|
133
137
|
|
134
138
|
verify:
|
135
139
|
name: Verify published gem on ${{ matrix.os }}
|
@@ -148,7 +152,7 @@ jobs:
|
|
148
152
|
bundler: ${{ env.BUNDLER_VER }}
|
149
153
|
|
150
154
|
- name: Download version
|
151
|
-
uses: actions/download-artifact@
|
155
|
+
uses: actions/download-artifact@v4
|
152
156
|
with:
|
153
157
|
name: version
|
154
158
|
|
@@ -169,7 +173,7 @@ jobs:
|
|
169
173
|
run: apk --no-cache add bash build-base git ruby-dev gcc g++ automake
|
170
174
|
|
171
175
|
- name: Download version
|
172
|
-
uses: actions/download-artifact@
|
176
|
+
uses: actions/download-artifact@v4
|
173
177
|
with:
|
174
178
|
name: version
|
175
179
|
|
@@ -0,0 +1,53 @@
|
|
1
|
+
name: stress
|
2
|
+
|
3
|
+
on:
|
4
|
+
workflow_dispatch:
|
5
|
+
|
6
|
+
concurrency:
|
7
|
+
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
|
8
|
+
cancel-in-progress: true
|
9
|
+
|
10
|
+
env:
|
11
|
+
BUNDLER_VER: 2.4.22
|
12
|
+
GC_STRESS: true
|
13
|
+
|
14
|
+
jobs:
|
15
|
+
rake:
|
16
|
+
name: test on ruby-${{ matrix.ruby }} ${{ matrix.os }}
|
17
|
+
runs-on: ${{ matrix.os }}
|
18
|
+
strategy:
|
19
|
+
fail-fast: false
|
20
|
+
matrix:
|
21
|
+
ruby: [ '3.2', '3.1', '3.0', '2.7' ]
|
22
|
+
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
23
|
+
|
24
|
+
steps:
|
25
|
+
- name: Checkout
|
26
|
+
uses: actions/checkout@v4
|
27
|
+
with:
|
28
|
+
submodules: recursive
|
29
|
+
|
30
|
+
- name: Setup packages
|
31
|
+
if: startsWith(matrix.os, 'macos')
|
32
|
+
run: brew install autoconf automake libtool
|
33
|
+
|
34
|
+
- name: Install Ruby
|
35
|
+
uses: ruby/setup-ruby@master
|
36
|
+
with:
|
37
|
+
ruby-version: ${{ matrix.ruby }}
|
38
|
+
bundler: ${{ env.BUNDLER_VER }}
|
39
|
+
# Rice gem has issues with bundler cache
|
40
|
+
# more info https://github.com/lutaml/expressir/runs/2097658383?check_suite_focus=true#step:7:2126
|
41
|
+
# but it is not the only issue
|
42
|
+
bundler-cache: false
|
43
|
+
|
44
|
+
- name: Bundle
|
45
|
+
run: bundle install --jobs 4 --retry 3
|
46
|
+
|
47
|
+
- name: Build native extension
|
48
|
+
run: bundle exec rake compile
|
49
|
+
|
50
|
+
- name: Run tests
|
51
|
+
run: |
|
52
|
+
bundle exec rake
|
53
|
+
cat .rspec_status
|
data/.gitignore
CHANGED
data/.gitmodules
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
[submodule "ext/
|
2
|
-
path = ext/
|
1
|
+
[submodule "ext/express_parser/antlr4-upstream"]
|
2
|
+
path = ext/express_parser/antlr4-upstream
|
3
3
|
url = https://github.com/antlr/antlr4
|
4
4
|
[submodule "ext/express-grammar"]
|
5
5
|
path = ext/express-grammar
|
data/exe/generate-parser
CHANGED
@@ -18,7 +18,7 @@ generator = Antlr4Native::Generator.new(
|
|
18
18
|
generator.generate
|
19
19
|
|
20
20
|
# fix issues with generated parser
|
21
|
-
parser_source_file = File.join("ext", "
|
21
|
+
parser_source_file = File.join("ext", "express_parser", "express_parser.cpp")
|
22
22
|
parser_source_lines = File.read(parser_source_file).split("\n")
|
23
23
|
|
24
24
|
# - add ParserProxy tokens method, simple compensation for missing exposed BufferedTokenStream
|
data/expressir.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
21
21
|
|
22
22
|
spec.files = `git ls-files`.split("\n")\
|
23
|
-
+ Dir.glob("ext/
|
23
|
+
+ Dir.glob("ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/**/*")
|
24
24
|
|
25
25
|
spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
26
26
|
|
@@ -28,18 +28,18 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.require_paths = ["lib"]
|
29
29
|
spec.executables = %w[expressir]
|
30
30
|
|
31
|
-
spec.extensions = File.join(*%w(ext
|
31
|
+
spec.extensions = File.join(*%w(ext express_parser extconf.rb))
|
32
32
|
|
33
|
-
spec.add_runtime_dependency "rice", "~> 4.
|
33
|
+
spec.add_runtime_dependency "rice", "~> 4.2"
|
34
34
|
spec.add_runtime_dependency "thor", "~> 1.0"
|
35
|
-
spec.add_development_dependency "antlr4-native", "~> 2.
|
35
|
+
spec.add_development_dependency "antlr4-native", "~> 2.2"
|
36
36
|
spec.add_development_dependency "asciidoctor", "~> 2.0.13"
|
37
37
|
spec.add_development_dependency "bundler", "~> 2.3"
|
38
38
|
spec.add_development_dependency "byebug", "~> 11.1"
|
39
39
|
spec.add_development_dependency "pry", "~> 0.12.2"
|
40
40
|
spec.add_development_dependency "rake", "~> 13.0"
|
41
41
|
spec.add_development_dependency "rake-compiler", "~> 1.2"
|
42
|
-
spec.add_development_dependency "rake-compiler-dock", "~> 1.
|
42
|
+
spec.add_development_dependency "rake-compiler-dock", "~> 1.5"
|
43
43
|
spec.add_development_dependency "rspec", "~> 3.11"
|
44
44
|
spec.add_development_dependency "rubocop", "1.58"
|
45
45
|
spec.add_development_dependency "rubocop-performance", "~> 1.19"
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -39,7 +39,6 @@ module Expressir
|
|
39
39
|
# so in this class we keep those C++ structure marked for GC so they are not freed
|
40
40
|
@parser = ::ExpressParser::ParserExt.new(file.to_s)
|
41
41
|
@parse_tree = @parser.syntax()
|
42
|
-
|
43
42
|
@visitor = Visitor.new(@parser.tokens, include_source: include_source)
|
44
43
|
@repository = @visitor.visit(@parse_tree)
|
45
44
|
|
@@ -40,7 +40,7 @@ module Expressir
|
|
40
40
|
|
41
41
|
private_constant :REMARK_CHANNEL
|
42
42
|
|
43
|
-
# @param [
|
43
|
+
# @param [::ExpressParser::TokenVector] Rice-wrapped std::vector<TokenProxy>
|
44
44
|
# @param [Boolean] include_source attach original source code to model elements
|
45
45
|
def initialize(tokens, include_source: nil)
|
46
46
|
@tokens = tokens
|
@@ -101,7 +101,11 @@ module Expressir
|
|
101
101
|
[ctx.start.token_index, ctx.stop.token_index]
|
102
102
|
end
|
103
103
|
|
104
|
-
|
104
|
+
selected_tokens = []
|
105
|
+
(start_index..stop_index).each do |i|
|
106
|
+
selected_tokens << @tokens[i]
|
107
|
+
end
|
108
|
+
selected_tokens
|
105
109
|
end
|
106
110
|
|
107
111
|
def attach_source(ctx, node)
|
@@ -150,15 +154,14 @@ module Expressir
|
|
150
154
|
end
|
151
155
|
|
152
156
|
def attach_remarks(ctx, node)
|
153
|
-
|
154
|
-
|
155
|
-
}
|
157
|
+
remark_tokens = get_tokens(ctx)
|
158
|
+
remark_tokens = remark_tokens.select{ |x| x.channel == REMARK_CHANNEL }
|
156
159
|
|
157
160
|
# skip already attached remarks
|
158
|
-
|
161
|
+
remark_tokens = remark_tokens.select{|x| !@attached_remark_tokens.include?(x.token_index)}
|
159
162
|
|
160
163
|
# parse remarks, find remark targets
|
161
|
-
tagged_remark_tokens =
|
164
|
+
tagged_remark_tokens = remark_tokens.map do |remark_token|
|
162
165
|
_, remark_tag, remark_text = if remark_token.text.start_with?('--')
|
163
166
|
remark_token.text.match(/^--"([^"]*)"(.*)$/).to_a
|
164
167
|
else
|
@@ -181,7 +184,7 @@ module Expressir
|
|
181
184
|
remark_target.remarks << remark_text
|
182
185
|
|
183
186
|
# mark remark as attached, so that it is not attached again at higher nesting level
|
184
|
-
@attached_remark_tokens << remark_token
|
187
|
+
@attached_remark_tokens << remark_token.token_index
|
185
188
|
end
|
186
189
|
end
|
187
190
|
|
@@ -90,13 +90,13 @@ module Expressir
|
|
90
90
|
return [] unless parent
|
91
91
|
|
92
92
|
interfaces.flat_map do |interface|
|
93
|
-
schema = parent.children_by_id[interface.schema.id.
|
93
|
+
schema = parent.children_by_id[interface.schema.id.safe_downcase]
|
94
94
|
if schema
|
95
95
|
schema_safe_children = schema.safe_children
|
96
|
-
schema_safe_children_by_id = schema_safe_children.select{|x| x.id}.map{|x| [x.id.
|
96
|
+
schema_safe_children_by_id = schema_safe_children.select{|x| x.id}.map{|x| [x.id.safe_downcase, x]}.to_h
|
97
97
|
if interface.items.length > 0
|
98
98
|
interface.items.map do |interface_item|
|
99
|
-
base_item = schema_safe_children_by_id[interface_item.ref.id.
|
99
|
+
base_item = schema_safe_children_by_id[interface_item.ref.id.safe_downcase]
|
100
100
|
if base_item
|
101
101
|
id = interface_item.id || base_item.id
|
102
102
|
create_interfaced_item(id, base_item)
|
@@ -46,7 +46,7 @@ module Expressir
|
|
46
46
|
def find(path)
|
47
47
|
return self if path.empty?
|
48
48
|
|
49
|
-
path_parts = path.
|
49
|
+
path_parts = path.safe_downcase.split(/\./).map do |current_path|
|
50
50
|
_, _, current_path = current_path.rpartition(":") # ignore prefix
|
51
51
|
current_path
|
52
52
|
end
|
@@ -82,7 +82,7 @@ module Expressir
|
|
82
82
|
|
83
83
|
# @return [Hash<String, Declaration>]
|
84
84
|
def children_by_id
|
85
|
-
@children_by_id ||= children.select{|x| x.id}.map{|x| [x.id.
|
85
|
+
@children_by_id ||= children.select{|x| x.id}.map{|x| [x.id.safe_downcase, x]}.to_h
|
86
86
|
end
|
87
87
|
|
88
88
|
# @return [nil]
|
@@ -90,7 +90,7 @@ module Expressir
|
|
90
90
|
@children_by_id = nil
|
91
91
|
nil
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
94
|
# @param [String] root_path
|
95
95
|
# @param [Express::Formatter] formatter
|
96
96
|
# @param [Boolean] include_empty
|
@@ -131,7 +131,7 @@ module Expressir
|
|
131
131
|
|
132
132
|
hash
|
133
133
|
end
|
134
|
-
|
134
|
+
|
135
135
|
# @param [Hash] hash
|
136
136
|
# @param [String] root_path
|
137
137
|
# @return [ModelElement]
|
data/lib/expressir/version.rb
CHANGED
data/lib/expressir.rb
CHANGED
@@ -7,6 +7,26 @@ Dir[File.join(__dir__, "expressir", "express", "*.rb")].sort.each do |fea|
|
|
7
7
|
require fea
|
8
8
|
end
|
9
9
|
|
10
|
+
# ..........................................................
|
11
|
+
# https://bugs.ruby-lang.org/issues/19319
|
12
|
+
# The issue is that this bug is fixed for 3.1 and above,
|
13
|
+
# but not for 3.0 or 2.7, so we need a "safe" function
|
14
|
+
# ..........................................................
|
15
|
+
|
16
|
+
if RUBY_VERSION < "3.1"
|
17
|
+
class String
|
18
|
+
def safe_downcase
|
19
|
+
each_char.map(&:downcase).join
|
20
|
+
end
|
21
|
+
end
|
22
|
+
else
|
23
|
+
class String
|
24
|
+
def safe_downcase
|
25
|
+
downcase
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
10
30
|
module Expressir
|
11
31
|
class Error < StandardError; end
|
12
32
|
|
data/rakelib/antlr4-native.rake
CHANGED
@@ -72,12 +72,12 @@ def create_pp_class_definition(parser_source_lines)
|
|
72
72
|
return detail::To_Ruby<SyntaxContextProxy>().convert(proxy);
|
73
73
|
}
|
74
74
|
|
75
|
-
|
76
|
-
|
75
|
+
Object getTokens() {
|
76
|
+
std::vector<TokenProxy> tk;
|
77
77
|
for (auto token : tokens -> getTokens()) {
|
78
|
-
|
78
|
+
tk.push_back(TokenProxy(token));
|
79
79
|
}
|
80
|
-
return
|
80
|
+
return detail::To_Ruby<std::vector<TokenProxy>>().convert(tk);
|
81
81
|
}
|
82
82
|
|
83
83
|
Object visit(VisitorProxy* visitor) {
|
@@ -88,8 +88,8 @@ def create_pp_class_definition(parser_source_lines)
|
|
88
88
|
|
89
89
|
try {
|
90
90
|
return std::any_cast<Object>(result);
|
91
|
-
} catch(std::
|
92
|
-
|
91
|
+
} catch(std::bad_any_cast) {
|
92
|
+
return Qnil;
|
93
93
|
}
|
94
94
|
}
|
95
95
|
|
@@ -105,7 +105,7 @@ def create_pp_class_definition(parser_source_lines)
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def create_class_api(parser_source_lines)
|
108
|
-
i = parser_source_lines.index { |x| x == " .define_method(\"visit\", &ParserProxy::visit
|
108
|
+
i = parser_source_lines.index { |x| x == " .define_method(\"visit\", &ParserProxy::visit);" }
|
109
109
|
parser_source_lines[i] += <<~CPP.split("\n").map { |x| x == "" ? x : " #{x}" }.join("\n")
|
110
110
|
|
111
111
|
|
@@ -116,17 +116,29 @@ def create_class_api(parser_source_lines)
|
|
116
116
|
|
117
117
|
rb_cParserExt = define_class_under<ParserProxyExt>(rb_mExpressParser, "ParserExt")
|
118
118
|
.define_constructor(Constructor<ParserProxyExt, string>())
|
119
|
-
.define_method("syntax", &ParserProxyExt::syntax
|
120
|
-
.define_method("tokens", &ParserProxyExt::getTokens)
|
121
|
-
.define_method("visit", &ParserProxyExt::visit
|
119
|
+
.define_method("syntax", &ParserProxyExt::syntax)
|
120
|
+
.define_method("tokens", &ParserProxyExt::getTokens, Return().keepAlive())
|
121
|
+
.define_method("visit", &ParserProxyExt::visit);
|
122
|
+
|
123
|
+
define_vector<std::vector<TokenProxy>>("TokenVector");
|
124
|
+
|
125
|
+
CPP
|
126
|
+
end
|
127
|
+
|
128
|
+
def create_vector_definition(parser_source_lines)
|
129
|
+
i = parser_source_lines.index { |x| x == " .define_method(\"visit\", &ParserProxy::visit);" }
|
130
|
+
parser_source_lines[i] += <<~CPP.split("\n").map { |x| x == "" ? x : " #{x}" }.join("\n")
|
122
131
|
|
123
132
|
CPP
|
124
133
|
end
|
125
134
|
|
126
135
|
def generate_extended_parser
|
127
136
|
# Generate extended parser that provide Ruby access to token stream
|
128
|
-
parser_source_file = File.join("ext", "
|
129
|
-
parser_source_lines = File.read(parser_source_file)
|
137
|
+
parser_source_file = File.join("ext", "express_parser", "express_parser.cpp")
|
138
|
+
parser_source_lines = File.read(parser_source_file)
|
139
|
+
.gsub!("bad_cast", "bad_any_cast")
|
140
|
+
.gsub!("return detail::To_Ruby<Token*>().convert(token)", "return detail::To_Ruby<TokenProxy>().convert(TokenProxy(token))")
|
141
|
+
.split("\n")
|
130
142
|
create_class_declarations(parser_source_lines)
|
131
143
|
create_tp_class_definition(parser_source_lines)
|
132
144
|
create_pp_class_definition(parser_source_lines)
|
data/rakelib/cross-ruby.rake
CHANGED
@@ -3,6 +3,7 @@ require "shellwords"
|
|
3
3
|
|
4
4
|
WINDOWS_PLATFORM_REGEX = /mingw|mswin/.freeze
|
5
5
|
LINUX_GNU_PLATFORM_REGEX = /linux-gnu/.freeze
|
6
|
+
LINUX_MUSL_PLATFORM_REGEX = /linux-musl/.freeze
|
6
7
|
DARWIN_PLATFORM_REGEX = /darwin/.freeze
|
7
8
|
GLIBC_MIN_VERSION = "2.17".freeze
|
8
9
|
|
@@ -11,16 +12,20 @@ CrossRuby = Struct.new(:version, :host) do
|
|
11
12
|
"tmp/#{platform}/stage/lib/expressir/express/#{minor_ver}/express_parser.#{dll_ext}"
|
12
13
|
end
|
13
14
|
|
14
|
-
def
|
15
|
-
!!(platform =~
|
15
|
+
def darwin?
|
16
|
+
!!(platform =~ DARWIN_PLATFORM_REGEX)
|
16
17
|
end
|
17
18
|
|
18
19
|
def linux_gnu?
|
19
20
|
!!(platform =~ LINUX_GNU_PLATFORM_REGEX)
|
20
21
|
end
|
21
22
|
|
22
|
-
def
|
23
|
-
!!(platform =~
|
23
|
+
def linux_musl?
|
24
|
+
!!(platform =~ LINUX_MUSL_PLATFORM_REGEX)
|
25
|
+
end
|
26
|
+
|
27
|
+
def windows?
|
28
|
+
!!(platform =~ WINDOWS_PLATFORM_REGEX)
|
24
29
|
end
|
25
30
|
|
26
31
|
def ver
|
@@ -63,6 +68,10 @@ CrossRuby = Struct.new(:version, :host) do
|
|
63
68
|
"x86_64-linux-gnu"
|
64
69
|
when "aarch64-linux-gnu"
|
65
70
|
"aarch64-linux-gnu"
|
71
|
+
when "x86_64-linux-musl"
|
72
|
+
"x86_64-linux-musl"
|
73
|
+
when "aarch64-linux-musl"
|
74
|
+
"aarch64-linux-musl"
|
66
75
|
when /\Ax86_64-darwin/
|
67
76
|
"x86_64-darwin"
|
68
77
|
when /\Aarm64-darwin/
|
@@ -89,7 +98,7 @@ CrossRuby = Struct.new(:version, :host) do
|
|
89
98
|
case platform
|
90
99
|
when /x64-mingw(32|-ucrt)/
|
91
100
|
"x86_64-w64-mingw32-"
|
92
|
-
when /(x86_64|aarch64)-linux-gnu/
|
101
|
+
when /(x86_64|aarch64)-linux-(gnu|musl)/
|
93
102
|
# We do believe that we are on Linux and can use native tools
|
94
103
|
""
|
95
104
|
when /x86_64.*darwin/
|
@@ -105,9 +114,9 @@ CrossRuby = Struct.new(:version, :host) do
|
|
105
114
|
case platform
|
106
115
|
when /64-mingw(32|-ucrt)/
|
107
116
|
"pei-x86-64"
|
108
|
-
when
|
117
|
+
when /x86_64-linux-(gnu|musl)/
|
109
118
|
"elf64-x86-64"
|
110
|
-
when
|
119
|
+
when /aarch64-linux-(gnu|musl)/
|
111
120
|
"elf64-little"
|
112
121
|
when "x86_64-darwin"
|
113
122
|
"Mach-O 64-bit x86-64"
|
@@ -154,7 +163,7 @@ CrossRuby = Struct.new(:version, :host) do
|
|
154
163
|
case platform
|
155
164
|
when WINDOWS_PLATFORM_REGEX
|
156
165
|
verify_entry_windows(dump, dll)
|
157
|
-
when LINUX_GNU_PLATFORM_REGEX
|
166
|
+
when LINUX_GNU_PLATFORM_REGEX, LINUX_MUSL_PLATFORM_REGEX
|
158
167
|
verify_entry_linux(dll)
|
159
168
|
when DARWIN_PLATFORM_REGEX
|
160
169
|
verify_entry_darwin(dll)
|
@@ -199,7 +208,7 @@ CrossRuby = Struct.new(:version, :host) do
|
|
199
208
|
end
|
200
209
|
end
|
201
210
|
|
202
|
-
def
|
211
|
+
def allowed_dlls_linux_gnu
|
203
212
|
suffix = (platform == "x86_64-linux-gnu" ? "x86-64" : "aarch64")
|
204
213
|
[
|
205
214
|
"ld-linux-#{suffix}.so",
|
@@ -211,6 +220,16 @@ CrossRuby = Struct.new(:version, :host) do
|
|
211
220
|
]
|
212
221
|
end
|
213
222
|
|
223
|
+
def allowed_dlls_linux_musl
|
224
|
+
suffix = (platform == "x86_64-linux-gnu" ? "x86-64" : "aarch64")
|
225
|
+
[
|
226
|
+
"ld-linux-#{suffix}.so",
|
227
|
+
"libstdc++.so",
|
228
|
+
"libc.so",
|
229
|
+
"libgcc_s.so",
|
230
|
+
]
|
231
|
+
end
|
232
|
+
|
214
233
|
def allowed_dlls_darwin
|
215
234
|
[
|
216
235
|
"/usr/lib/libSystem.B.dylib",
|
@@ -218,12 +237,14 @@ CrossRuby = Struct.new(:version, :host) do
|
|
218
237
|
]
|
219
238
|
end
|
220
239
|
|
221
|
-
def allowed_dlls
|
240
|
+
def allowed_dlls # rubocop:disable Metrics/MethodLength
|
222
241
|
case platform
|
223
242
|
when WINDOWS_PLATFORM_REGEX
|
224
243
|
allowed_dlls_windows
|
225
244
|
when LINUX_GNU_PLATFORM_REGEX
|
226
|
-
|
245
|
+
allowed_dlls_linux_gnu
|
246
|
+
when LINUX_MUSL_PLATFORM_REGEX
|
247
|
+
allowed_dlls_linux_musl
|
227
248
|
when DARWIN_PLATFORM_REGEX
|
228
249
|
allowed_dlls_darwin
|
229
250
|
else
|
@@ -248,7 +269,7 @@ CrossRuby = Struct.new(:version, :host) do
|
|
248
269
|
case platform
|
249
270
|
when DARWIN_PLATFORM_REGEX
|
250
271
|
actual_dlls_darwin(dll)
|
251
|
-
when LINUX_GNU_PLATFORM_REGEX
|
272
|
+
when LINUX_GNU_PLATFORM_REGEX, LINUX_MUSL_PLATFORM_REGEX
|
252
273
|
actual_dlls_linux(dump)
|
253
274
|
when WINDOWS_PLATFORM_REGEX
|
254
275
|
actual_dlls_windows(dump)
|
@@ -335,15 +356,10 @@ def pre_req(plat)
|
|
335
356
|
end
|
336
357
|
|
337
358
|
namespace "gem" do
|
338
|
-
CROSS_RUBIES.find_all { |cr| cr.windows? || cr.linux_gnu? || cr.darwin? }
|
339
|
-
.map { |cr| { platform: cr.platform, tag: cr.tag } }
|
340
|
-
.uniq { |hash| hash[:platform] }.each do |hash|
|
341
|
-
plat = hash[:platform]
|
342
|
-
tag = hash[:tag]
|
343
|
-
|
359
|
+
CROSS_RUBIES.find_all { |cr| cr.windows? || cr.linux_gnu? || cr.linux_musl? || cr.darwin? }.map(&:platform).uniq.each do |plat|
|
344
360
|
desc "build native gem for #{plat} platform"
|
345
361
|
task plat do
|
346
|
-
RakeCompilerDock.sh <<~RCD, platform:
|
362
|
+
RakeCompilerDock.sh <<~RCD, platform: plat
|
347
363
|
#{pre_req(plat)} && gem install bundler --no-document &&
|
348
364
|
bundle && bundle exec rake gem:#{plat}:builder MAKE="nice make -j`nproc`"
|
349
365
|
RCD
|
@@ -360,9 +376,12 @@ namespace "gem" do
|
|
360
376
|
desc "build native gems for windows"
|
361
377
|
multitask "windows" => CROSS_RUBIES.find_all(&:windows?).map(&:platform).uniq
|
362
378
|
|
363
|
-
desc "build native gems for linux"
|
379
|
+
desc "build native gems for linux-gnu"
|
364
380
|
multitask "linux-gnu" => CROSS_RUBIES.find_all(&:linux_gnu?).map(&:platform).uniq
|
365
381
|
|
382
|
+
desc "build native gems for linux-musl"
|
383
|
+
multitask "linux-musl" => CROSS_RUBIES.find_all(&:linux_musl?).map(&:platform).uniq
|
384
|
+
|
366
385
|
desc "build native gems for darwin"
|
367
386
|
multitask "darwin" => CROSS_RUBIES.find_all(&:darwin?).map(&:platform).uniq
|
368
387
|
end
|
@@ -370,7 +389,7 @@ end
|
|
370
389
|
require "rake/extensiontask"
|
371
390
|
|
372
391
|
Rake::ExtensionTask.new("express_parser", GEMSPEC) do |ext|
|
373
|
-
ext.ext_dir = "ext/
|
392
|
+
ext.ext_dir = "ext/express_parser"
|
374
393
|
ext.lib_dir = File.join(*["lib", "expressir", "express", ENV.fetch("FAT_DIR", nil)].compact)
|
375
394
|
ext.config_options << ENV.fetch("EXTOPTS", nil)
|
376
395
|
ext.cross_compile = true
|
@@ -3,6 +3,9 @@ require "spec_helper"
|
|
3
3
|
RSpec.describe "Expressir" do
|
4
4
|
describe "version" do
|
5
5
|
it "has a version number" do |example|
|
6
|
+
GC.stress = ENV["GC_STRESS"] == "true"
|
7
|
+
puts "Running tests in GC stress mode. It may take a couple of hours ..." if GC.stress
|
8
|
+
|
6
9
|
print "\n[#{example.description}] "
|
7
10
|
expect(Expressir::VERSION).not_to be nil
|
8
11
|
|
@@ -40,7 +40,7 @@ RSpec.describe Expressir::Express::Cache do
|
|
40
40
|
end.to raise_error(Errno::ENOENT)
|
41
41
|
end
|
42
42
|
|
43
|
-
it "
|
43
|
+
it "loads a cache file" do |example|
|
44
44
|
print "\n[#{example.description}] "
|
45
45
|
temp_file = Tempfile.new
|
46
46
|
|
@@ -63,7 +63,7 @@ RSpec.describe Expressir::Express::Cache do
|
|
63
63
|
GC.verify_internal_consistency
|
64
64
|
end
|
65
65
|
|
66
|
-
it "fails parsing a
|
66
|
+
it "fails parsing a cache from a different Expressir version" do |example|
|
67
67
|
print "\n[#{example.description}] "
|
68
68
|
temp_file = Tempfile.new
|
69
69
|
|
@@ -11,9 +11,7 @@ RSpec.describe Expressir::Express::Formatter do
|
|
11
11
|
print "\n[#{example.description}] "
|
12
12
|
exp_file = Expressir.root_path.join("spec", "syntax", "single.exp")
|
13
13
|
formatted_exp_file = Expressir.root_path.join("spec", "syntax", "single_formatted.exp")
|
14
|
-
|
15
14
|
repo = Expressir::Express::Parser.from_file(exp_file)
|
16
|
-
|
17
15
|
result = Expressir::Express::Formatter.format(repo)
|
18
16
|
# File.write(formatted_exp_file, result)
|
19
17
|
expected_result = File.read(formatted_exp_file)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: expressir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: arm64-darwin
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
33
|
+
version: '2.2'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.
|
40
|
+
version: '2.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: asciidoctor
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +128,14 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '1.
|
131
|
+
version: '1.5'
|
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: '1.
|
138
|
+
version: '1.5'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: rspec
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -216,8 +216,10 @@ extensions: []
|
|
216
216
|
extra_rdoc_files: []
|
217
217
|
files:
|
218
218
|
- ".cross_rubies"
|
219
|
+
- ".github/workflows/codeql.yml"
|
219
220
|
- ".github/workflows/rake.yml"
|
220
221
|
- ".github/workflows/release.yml"
|
222
|
+
- ".github/workflows/stress.yml"
|
221
223
|
- ".gitignore"
|
222
224
|
- ".gitmodules"
|
223
225
|
- ".hound.yml"
|
@@ -379,9 +381,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
379
381
|
version: 3.3.dev
|
380
382
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
381
383
|
requirements:
|
382
|
-
- - "
|
384
|
+
- - ">="
|
383
385
|
- !ruby/object:Gem::Version
|
384
|
-
version:
|
386
|
+
version: '0'
|
385
387
|
requirements: []
|
386
388
|
rubygems_version: 3.3.26
|
387
389
|
signing_key:
|