opal-rspec 1.1.0.alpha1 → 1.1.0.alpha3
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/.github/workflows/build.yml +6 -3
- data/CHANGELOG.md +18 -0
- data/Gemfile +1 -1
- data/lib/opal/rspec/configuration_parser.rb +13 -2
- data/lib/opal/rspec/locator.rb +2 -1
- data/lib/opal/rspec/runner.rb +5 -0
- data/lib/opal/rspec/util.rb +15 -0
- data/lib/opal/rspec/version.rb +7 -5
- data/lib/opal/rspec.rb +0 -1
- data/lib-opal/opal/rspec/fixes/rspec/core/configuration.rb +35 -13
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ade995b0c6d3f286e1fab0a744a29747a9404af45a8379dacbd30a42a04521d
|
4
|
+
data.tar.gz: c2e8c3252227413b183f0c0aaad68de756cb933b182aa250d92d565ffe4d8a71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c785be231521c658867c6fbe412066199feaab7ebb1f5fd28966f96f828bc5f783950f9ea1e8b27f2a973b46897809def87904e1f71105485881f8c03c436f33
|
7
|
+
data.tar.gz: 9ef0711790bcd41452f75f5d7a721f7db2194f30f88e17abbcc25a931d9a1424a88d65d70d4803a274778cfd295824ac8bc44531029103bf906e9a5bc2b45398
|
data/.github/workflows/build.yml
CHANGED
@@ -13,10 +13,11 @@ on:
|
|
13
13
|
jobs:
|
14
14
|
build:
|
15
15
|
strategy:
|
16
|
+
fail-fast: false
|
16
17
|
matrix:
|
17
18
|
os: [ 'ubuntu-latest' ]
|
18
|
-
ruby: [ ruby-head, 3.1, "3.0", 2.7 ]
|
19
|
-
opal: [ master, 1.
|
19
|
+
ruby: [ ruby-head, 3.2, 3.1, "3.0", 2.7 ]
|
20
|
+
opal: [ master, 1.7, 1.8 ]
|
20
21
|
|
21
22
|
runs-on: ${{ matrix.os }}
|
22
23
|
|
@@ -24,7 +25,9 @@ jobs:
|
|
24
25
|
OPAL_VERSION: ${{ matrix.opal }}
|
25
26
|
|
26
27
|
steps:
|
27
|
-
- uses: actions/checkout@
|
28
|
+
- uses: actions/checkout@v4
|
29
|
+
with:
|
30
|
+
submodules: true
|
28
31
|
- uses: ruby/setup-ruby@v1
|
29
32
|
with:
|
30
33
|
ruby-version: ${{ matrix.ruby }}
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# Opal-RSpec Changelog
|
2
2
|
|
3
|
+
## 1.1.0.alpha3 - 2023-09-26
|
4
|
+
|
5
|
+
- Refactor glob_to_re into a robust implementation
|
6
|
+
|
7
|
+
- Add `--opal-opt` CLI option
|
8
|
+
|
9
|
+
- Add `--rbrequire` CLI option
|
10
|
+
|
11
|
+
|
12
|
+
## 1.1.0.alpha2 - 2023-09-20
|
13
|
+
|
14
|
+
- Drop advertised support for Opal v1.6
|
15
|
+
|
16
|
+
- Fix support for Ruby 2.7+
|
17
|
+
|
18
|
+
- Drop requirement of Opal-Sprockets
|
19
|
+
|
20
|
+
|
3
21
|
## 1.1.0.alpha1 - 2023-09-16
|
4
22
|
|
5
23
|
- Support Opal headless browser runners
|
data/Gemfile
CHANGED
@@ -18,7 +18,7 @@ case ENV['OPAL_VERSION']
|
|
18
18
|
when 'local'
|
19
19
|
gem 'opal', path: '../opal'
|
20
20
|
when /^[0-9]/
|
21
|
-
gem 'opal', ENV['OPAL_VERSION']
|
21
|
+
gem 'opal', "~> #{ENV['OPAL_VERSION']}.0a"
|
22
22
|
when String
|
23
23
|
gem 'opal', git: 'https://github.com/opal/opal.git', branch: ENV['OPAL_VERSION']
|
24
24
|
end
|
@@ -1,10 +1,11 @@
|
|
1
|
+
require 'opal/rspec/util'
|
1
2
|
require 'optparse'
|
2
3
|
|
3
4
|
module Opal; module RSpec; module Core; end; end; end
|
4
5
|
# Load necessary files under Opal's namespace, so as not to conflict with RSpec if it's being loaded too.
|
5
6
|
# Later, we will monkey-patch those methods.
|
6
|
-
|
7
|
-
|
7
|
+
::Opal::RSpec.load_namespaced __dir__ + "/../../../rspec-core/upstream/lib/rspec/core/invocations.rb", ::Opal
|
8
|
+
::Opal::RSpec.load_namespaced __dir__ + "/../../../rspec-core/upstream/lib/rspec/core/option_parser.rb", ::Opal
|
8
9
|
|
9
10
|
class Opal::RSpec::Core::Parser
|
10
11
|
alias parser_before_opal parser
|
@@ -21,6 +22,16 @@ class Opal::RSpec::Core::Parser
|
|
21
22
|
options[:runner] = name
|
22
23
|
end
|
23
24
|
|
25
|
+
parser.on('-q', '--rbrequire FILE', 'Require a file in MRI context before running Opal') do |name|
|
26
|
+
options[:opal_rbrequires] ||= []
|
27
|
+
options[:opal_rbrequires] << name
|
28
|
+
end
|
29
|
+
|
30
|
+
parser.on('-O', '--opal-opt FLAG', 'Run Opal with additional options (separate by `,` or specify multiple times)') do |name|
|
31
|
+
options[:opal_options] ||= []
|
32
|
+
options[:opal_options] += name.split(",")
|
33
|
+
end
|
34
|
+
|
24
35
|
parser.separator ''
|
25
36
|
parser.separator ' **** Help ****'
|
26
37
|
parser.separator ''
|
data/lib/opal/rspec/locator.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
require 'opal/rspec/util'
|
1
2
|
require 'pathname'
|
2
3
|
require 'rake'
|
3
4
|
# require the bundled RSpec's file and don't rely on the load path in case opal-rspec is included in a project's
|
4
5
|
# Gemfile without rspec also being in the Gemfile
|
5
|
-
|
6
|
+
::Opal::RSpec.load_namespaced __dir__+'/../../../rspec-core/upstream/lib/rspec/core/ruby_project.rb', ::Opal
|
6
7
|
|
7
8
|
module Opal
|
8
9
|
module RSpec
|
data/lib/opal/rspec/runner.rb
CHANGED
@@ -117,6 +117,10 @@ module Opal
|
|
117
117
|
options << '--missing-require=ignore'
|
118
118
|
options += @legacy_server_proxy.to_cli_options
|
119
119
|
|
120
|
+
spec_opts.delete(:opal_rbrequires) { [] }.each do |r|
|
121
|
+
require r
|
122
|
+
end
|
123
|
+
|
120
124
|
load_paths = [Opal.paths, locator.get_spec_load_paths, self.libs].compact.sum([]).uniq
|
121
125
|
|
122
126
|
load_paths.each { |p| options << "-I#{p}" }
|
@@ -125,6 +129,7 @@ module Opal
|
|
125
129
|
::Opal::Config.stubbed_files.each { |p| options << "-s#{p}" }
|
126
130
|
|
127
131
|
options += @cli_options if @cli_options
|
132
|
+
options += spec_opts.delete(:opal_options) { [] }
|
128
133
|
|
129
134
|
bootstrap_code = ::Opal::RSpec.spec_opts_code(spec_opts)
|
130
135
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module ::Opal
|
2
|
+
module RSpec
|
3
|
+
def self.load_namespaced(file, mod)
|
4
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.1")
|
5
|
+
load file, mod
|
6
|
+
else
|
7
|
+
str = ""
|
8
|
+
str += "module ::#{mod.name};"
|
9
|
+
str += File.read(file)
|
10
|
+
str += ";end"
|
11
|
+
eval(str)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/opal/rspec/version.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
require 'opal/rspec/util'
|
2
|
+
|
1
3
|
module Opal
|
2
4
|
module RSpec
|
3
|
-
VERSION = '1.1.0.
|
5
|
+
VERSION = '1.1.0.alpha3'
|
4
6
|
end
|
5
7
|
end
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
::Opal::RSpec.load_namespaced __dir__ + "/../../../rspec-core/upstream/lib/rspec/core/version.rb", ::Opal
|
10
|
+
::Opal::RSpec.load_namespaced __dir__ + "/../../../rspec-expectations/upstream/lib/rspec/expectations/version.rb", ::Opal
|
11
|
+
::Opal::RSpec.load_namespaced __dir__ + "/../../../rspec-mocks/upstream/lib/rspec/mocks/version.rb", ::Opal
|
12
|
+
::Opal::RSpec.load_namespaced __dir__ + "/../../../rspec-support/upstream/lib/rspec/support/version.rb", ::Opal
|
data/lib/opal/rspec.rb
CHANGED
@@ -23,27 +23,49 @@ module ::RSpec; module Core; class Configuration
|
|
23
23
|
str.gsub(/(?:\.js)?\.(?:rb|opal|\{rb,opal\})\z/, '')
|
24
24
|
end
|
25
25
|
|
26
|
+
def glob_to_re_expand_alternatives(glob)
|
27
|
+
# If there are no braces, just return the string as an array
|
28
|
+
return [glob] unless glob =~ /(.*)\{([^\{\}]*?)\}(.*)/
|
29
|
+
|
30
|
+
prefix, contents, suffix = $1, $2, $3
|
31
|
+
|
32
|
+
alternatives = contents.split(',')
|
33
|
+
|
34
|
+
expanded_patterns = alternatives.map do |alternative|
|
35
|
+
"#{prefix}#{alternative}#{suffix}"
|
36
|
+
end
|
37
|
+
|
38
|
+
# Recursively expand for the rest of the pattern
|
39
|
+
return expanded_patterns.flat_map { |pattern| glob_to_re_expand_alternatives(pattern) }
|
40
|
+
end
|
41
|
+
|
26
42
|
def glob_to_re(path, pattern)
|
27
43
|
pattern = remove_ruby_ext(pattern)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
re =
|
37
|
-
|
38
|
-
|
44
|
+
if pattern.start_with?(path)
|
45
|
+
path = ""
|
46
|
+
else
|
47
|
+
path += "/" unless path.end_with?("/")
|
48
|
+
end
|
49
|
+
pattern = path + pattern
|
50
|
+
patterns = glob_to_re_expand_alternatives(pattern)
|
51
|
+
re = patterns.map { |i| Regexp.escape(i) }.join("|").then { |i| "(?:#{i})" }
|
52
|
+
re = re.gsub('\/\*\*\/', '(?:/|/.*?/)')
|
53
|
+
.gsub('\*', '[^/]*?')
|
54
|
+
.gsub('\?', '[^/]')
|
55
|
+
re = '(?:^|/)' + re + "$"
|
56
|
+
# Strip multiple '/'s
|
57
|
+
re = re.gsub(%r{(\\/|/)+}, '/')
|
39
58
|
# Strip the `/./`
|
40
|
-
re = re.gsub(
|
41
|
-
re = re.gsub(
|
59
|
+
re = re.gsub('/\./', '/')
|
60
|
+
re = re.gsub('(?:^|/)\./', '(?:^|/)')
|
42
61
|
Regexp.new(re)
|
43
62
|
end
|
44
63
|
|
45
64
|
# Only load from loaded files
|
46
65
|
def get_matching_files(path, pattern)
|
66
|
+
if pattern.is_a?(Array)
|
67
|
+
return pattern.map { |pat| get_matching_files(path, pat) }.flatten.sort.uniq
|
68
|
+
end
|
47
69
|
`Object.keys(Opal.modules)`.grep(glob_to_re(path, pattern)).sort
|
48
70
|
end
|
49
71
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opal-rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.0.
|
4
|
+
version: 1.1.0.alpha3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Beynon
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-09-
|
13
|
+
date: 2023-09-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: opal
|
@@ -303,6 +303,7 @@ files:
|
|
303
303
|
- lib/opal/rspec/runner.rb
|
304
304
|
- lib/opal/rspec/sprockets.rb
|
305
305
|
- lib/opal/rspec/sprockets_environment.rb
|
306
|
+
- lib/opal/rspec/util.rb
|
306
307
|
- lib/opal/rspec/version.rb
|
307
308
|
- opal-rspec.gemspec
|
308
309
|
- rspec-core/upstream/.document
|