Skip to content
Snippets Groups Projects
Commit 316022ac authored by Julian Thome's avatar Julian Thome :keyboard: Committed by Fabien Catteau
Browse files

Fix, improve vrange CLIs, add test cases from gemnasium-db

parent 31297bda
No related branches found
No related tags found
1 merge request!25Connect to gemnasium-db repo
Showing
with 4754 additions and 171 deletions
# frozen_string_literal: true
source 'https://rubygems.org'
gem 'test-unit'
# frozen_string_literal: true
require 'rake/testtask'
task default: 'test'
Rake::TestTask.new do |task|
task.pattern = 'test_vrange.rb'
task.loader = :direct
task.libs.push 'test', 'spec', Dir.pwd
end
require 'rake/clean'
# frozen_string_literal: true
# can be executed with `rake test`
require 'test/unit'
require 'open3'
require 'logger'
class TestRangecheck < Test::Unit::TestCase
def setup
@logger = Logger.new(STDOUT)
@executable = './vrange.rb'
end
def cleanupstr(str)
str.gsub(/[^0-9A-Za-z{}"]/, '')
end
def test_wellformed_json_file
expect = File.read('tests/simple_out.json')
stdout, stderr, status = Open3.capture3("#{@executable} tests/simple_in.json")
result = stdout.empty? ? stderr : stdout
assert_equal(cleanupstr(result), cleanupstr(expect))
assert(status.success?)
end
def test_dictionary_json_file
stdout, stderr, status = Open3.capture3("#{@executable} tests/dictionary.json")
expect = <<~EXPECT
785: unexpected token at '{
{"range": "==2.0.1", "version": "2.0.0"}
}
'
EXPECT
result = stdout.empty? ? stderr : stdout
assert_equal(cleanupstr(result), cleanupstr(expect))
assert(!status.success?)
end
def test_empty_json_file
stdout, stderr, status = Open3.capture3("#{@executable} tests/empty.json")
result = stdout.empty? ? stderr : stdout
assert_equal(result, "JSON Array expected\n")
assert(!status.success?)
end
def test_nonexistent_json_file
stdout, stderr, status = Open3.capture3("#{@executable} tests/empty00.json")
result = stdout.empty? ? stderr : stdout
assert_equal(result, "No such file or directory @ rb_sysopen - tests/empty00.json\n")
assert(!status.success?)
end
def test_gemnasium_db_advisory_ranges
expect = File.read('tests/adb_ranges_out.json')
stdout, stderr, status = Open3.capture3("#{@executable} tests/adb_ranges_in.json")
result = stdout.empty? ? stderr : stdout
assert_equal(cleanupstr(result), cleanupstr(expect))
assert(status.success?)
end
end
[
{
"range": "<1.12.3||>2.0.0a <3.0.4",
"version": "4.5.1"
},
{
"range": ">=3.2.0a <3.2.20||>=4.0.0a <4.0.11||>=4.1.0a <4.1.7||>=4.2.0.a <4.2.0.beta3",
"version": "4.5.1"
},
{
"range": ">=3.2.0.0.alpha <3.2.22.2||>=4.0.0.0.alpha <4.1.14.2||>=4.2.0.0.alpha <4.2.5.2",
"version": "4.5.1"
},
{
"range": ">=5.0.0.alpha <5.0.0.beta1.1||>=4.2.0.alpha <4.2.5.1||>=4.0.0.alpha <4.1.14.1||<3.2.22.1",
"version": "4.5.1"
},
{
"range": "<2.3.18 || >=2.4.0 <3.1.12 || >=3.2.0 <3.2.13",
"version": "4.5.1"
},
{
"range": ">=3.0.0 <3.0.17 || >=3.1.0 <3.1.8 || >=3.2.0 <3.2.8",
"version": "4.5.1"
},
{
"range": "<2.3.15 || >=2.4.0 <3.0.19 || >=3.1.0 <3.1.10 || >=3.2.0 <3.2.11",
"version": "4.5.1"
},
{
"range": ">=3.0.0.alpha <3.2.22.3",
"version": "4.5.1"
},
{
"range": "<3.0.17 || >=3.1.0 <3.1.8 || >=3.2.0 <3.2.8",
"version": "4.5.1"
},
{
"range": ">=2.3.0.alpha0 <2.3.13",
"version": "4.5.1"
},
{
"range": ">=3.0.6 <3.2.16||>=4.0.0.beta1 <4.0.2",
"version": "4.5.1"
},
{
"range": ">=3.0.0.alpha0 <3.0.12||>=3.1.0.alpha0 <3.1.4||>=3.2.0.alpha0 <3.2.2",
"version": "4.5.1"
},
{
"range": "<3.2.22.1",
"version": "4.5.1"
},
{
"range": ">=4.2.0.alpha <4.2.5.1||>=4.0.0.alpha <4.1.14.1",
"version": "4.5.1"
},
{
"range": ">=2.0.0 <3.2.16||>=4.0.0.beta1 <4.0.2",
"version": "4.5.1"
},
{
"range": ">=3.2.0.0.alpha <3.2.22.2",
"version": "4.5.1"
},
{
"range": ">=4.0.0 <4.0.2",
"version": "4.5.1"
},
{
"range": ">=3.0.0 <3.0.16 || >=3.1.0 <3.1.7 || >=3.2.0 <3.2.7",
"version": "4.5.1"
},
{
"range": ">=3.0.0.alpha0 <3.0.11||>=3.1.0.alpha0 <3.1.2",
"version": "4.5.1"
},
{
"range": ">=3.2.0a <3.2.21||>=4.0.0a <4.0.11.1||>=4.1.0a <4.1.7.1",
"version": "4.5.1"
},
{
"range": "<3.2.16||>=4.0.0 <4.0.2",
"version": "4.5.1"
},
{
"range": "<2.3.16 || >=2.4.0 <3.0.20",
"version": "4.5.1"
},
{
"range": ">=3.0.0 <3.1.12 || >=3.2.0 <3.2.13",
"version": "4.5.1"
},
{
"range": ">=3.0.0 <3.0.12||>=3.1.0 <3.1.4||>=3.2.0 <3.2.2",
"version": "4.5.1"
},
{
"range": "<3.2.22||>=4.0.0a <4.1.11||>=4.2.0a <4.2.2",
"version": "4.5.1"
},
{
"range": ">=4.1.0a <4.1.11||>=4.2.0a <4.2.2",
"version": "4.5.1"
},
{
"range": "<2.5.1",
"version": "4.5.1"
},
{
"range": "<0.12.1",
"version": "4.5.1"
},
{
"range": ">=0.0.0 <0.12.1",
"version": "4.5.1"
},
{
"range": ">0.11.0 <0.13.3",
"version": "4.5.1"
},
{
"range": "<0.13.6",
"version": "4.5.1"
},
{
"range": "<1.5.3||>2.0.0 <2.0.5",
"version": "4.5.1"
},
{
"range": "<1.0.3 || >=1.1.0 <1.1.4 || >=1.2.0 <2.0.2",
"version": "4.5.1"
},
{
"range": "<2.0.2",
"version": "4.5.1"
},
{
"range": "<1.4.1||>2.0.0a <2.0.0rc3",
"version": "4.5.1"
},
{
"range": ">=2.1.0 <4.2.6",
"version": "4.5.1"
},
{
"range": ">2.0.0a <2.1.2||<1.4.2",
"version": "4.5.1"
},
{
"range": "<4.2.0",
"version": "4.5.1"
},
{
"range": "<0.6.1",
"version": "4.5.1"
},
{
"range": "<1.3.4",
"version": "4.5.1"
},
{
"range": "=3.0.28",
"version": "4.5.1"
},
{
"range": "=0.0.1",
"version": "4.5.1"
},
{
"range": ">=5.0.0.alpha <5.0.0.beta1.1||>=4.2.0.alpha <4.2.5.1||>=4.1.0.alpha <4.1.14.1",
"version": "4.5.1"
},
{
"range": ">=3.0.0 <3.1.11 || >=3.2.0 <3.2.12",
"version": "4.5.1"
},
{
"range": "<3.1.3||>=4.0.0a <4.0.4",
"version": "4.5.1"
},
{
"range": "<0.6",
"version": "4.5.1"
},
{
"range": "<1.1.8",
"version": "4.5.1"
},
{
"range": ">=0",
"version": "4.5.1"
},
{
"range": "<2.2.1",
"version": "4.5.1"
},
{
"range": "<0.3.3",
"version": "4.5.1"
},
{
"range": "<0.9.6",
"version": "4.5.1"
},
{
"range": "<1.0.7",
"version": "4.5.1"
},
{
"range": ">=0.7.0 <0.9.13",
"version": "4.5.1"
},
{
"range": "<0.1.1",
"version": "4.5.1"
},
{
"range": ">=2.0.0 <2.2.5 || >=3.0.0 <3.0.1",
"version": "4.5.1"
},
{
"range": ">=1.4.0 <1.5.4 || >=1.6 <2.0.5 || >=2.1.0 <2.1.3 || >=2.2.0 <2.2.3",
"version": "4.5.1"
},
{
"range": "<3.5.4",
"version": "4.5.1"
},
{
"range": "<4.3.0",
"version": "4.5.1"
},
{
"range": "<4.2.2",
"version": "4.5.1"
},
{
"range": ">=4.2.2 <4.3.6",
"version": "4.5.1"
},
{
"range": ">=3.1.4 <5.2.0",
"version": "4.5.1"
},
{
"range": "<3.0.5",
"version": "4.5.1"
},
{
"range": "<4.3.1",
"version": "4.5.1"
},
{
"range": "<=1.5.0",
"version": "4.5.1"
},
{
"range": "1.4.1",
"version": "4.5.1"
},
{
"range": "<0.21.3||>0.22a",
"version": "4.5.1"
},
{
"range": "<0.3.2",
"version": "4.5.1"
},
{
"range": ">=0.0.0a",
"version": "4.5.1"
},
{
"range": "=1.0.0",
"version": "4.5.1"
},
{
"range": ">=2.3.8",
"version": "4.5.1"
},
{
"range": "<0.9.16",
"version": "4.5.1"
},
{
"range": "<=0.2.2",
"version": "4.5.1"
},
{
"range": ">=3.0.0a <3.0.0.beta.3||>=2.12.0a <2.12.3||>=2.11.0a <2.11.3||>=2.10.0a <2.10.2||>=2.9.0a <2.9.4||>=2.8.0a <2.8.3||>=2.7.0a <2.7.1||>=2.5.0a <2.5.1||>=2.4.0a <2.4.6||>=2.3.0a <2.3.3||>=2.2.0a <2.2.3||>=2.1.0a <2.1.4||>=2.0.0 <2.0.5",
"version": "4.5.1"
},
{
"range": "=2.1.1",
"version": "4.5.1"
},
{
"range": "<1.3.0",
"version": "4.5.1"
},
{
"range": "<1.0.0",
"version": "4.5.1"
},
{
"range": "<1.6.2",
"version": "4.5.1"
},
{
"range": "<0.8.2",
"version": "4.5.1"
},
{
"range": ">=0.5.0 <0.5.4",
"version": "4.5.1"
},
{
"range": "<0.6.0",
"version": "4.5.1"
},
{
"range": "<0.5.0",
"version": "4.5.1"
},
{
"range": "<0.16.0",
"version": "4.5.1"
},
{
"range": "<3.4.0",
"version": "4.5.1"
},
{
"range": "<3.4.2",
"version": "4.5.1"
},
{
"range": ">=1.2.6 <1.2.8",
"version": "4.5.1"
},
{
"range": "=0.0.7",
"version": "4.5.1"
},
{
"range": "<3.0.0",
"version": "4.5.1"
},
{
"range": "<1.7.3",
"version": "4.5.1"
},
{
"range": ">=1.6.1 <1.8.0",
"version": "4.5.1"
},
{
"range": "<2.2.0",
"version": "4.5.1"
},
{
"range": ">=1.0.0 <1.2.0",
"version": "4.5.1"
},
{
"range": "<1.2.4",
"version": "4.5.1"
},
{
"range": ">0.0.0",
"version": "4.5.1"
},
{
"range": "<5.0.0.beta1",
"version": "4.5.1"
},
{
"range": "=4.2.0.beta1",
"version": "4.5.1"
},
{
"range": "<=0.8.2",
"version": "4.5.1"
},
{
"range": ">0",
"version": "4.5.1"
},
{
"range": ">=0.4.0 <=0.5.2",
"version": "4.5.1"
},
{
"range": ">=0.0.0",
"version": "4.5.1"
},
{
"range": "<0.14.5",
"version": "4.5.1"
},
{
"range": ">=0.2.0 <0.2.2||>=0.4.0 <0.4.2",
"version": "4.5.1"
},
{
"range": ">=1.1.0 <4.6.3",
"version": "4.5.1"
},
{
"range": "<0.10.1",
"version": "4.5.1"
},
{
"range": "<1.0.4",
"version": "4.5.1"
},
{
"range": "<1.0.3",
"version": "4.5.1"
},
{
"range": "1.0.2",
"version": "4.5.1"
},
{
"range": "<3.3.2",
"version": "4.5.1"
},
{
"range": "<3.2.3",
"version": "4.5.1"
},
{
"range": "<2.5.5.rc1||>=2.6.0.alpha0 <2.6.6.rc1||>=2.7.0.alpha0 <2.7.0.rc1",
"version": "4.5.1"
},
{
"range": "<=0.4.14",
"version": "4.5.1"
},
{
"range": "<=0.0.12",
"version": "4.5.1"
},
{
"range": "<3.3.0",
"version": "4.5.1"
},
{
"range": "=0.1.4",
"version": "4.5.1"
},
{
"range": "<=3.5.0",
"version": "4.5.1"
},
{
"range": "<=1.0.5.3",
"version": "4.5.1"
},
{
"range": ">=0.7.0",
"version": "4.5.1"
},
{
"range": "<0.1.5",
"version": "4.5.1"
},
{
"range": "=3.0.23",
"version": "4.5.1"
},
{
"range": ">=2.0.x <2.0.1.rc1||<1.5.4",
"version": "4.5.1"
},
{
"range": "<1.5.5||2.0.0.beta1",
"version": "4.5.1"
},
{
"range": ">=0.3.0",
"version": "4.5.1"
},
{
"range": "<=0.2.0",
"version": "4.5.1"
},
{
"range": "<1.2.9",
"version": "4.5.1"
},
{
"range": "<0.5.3",
"version": "4.5.1"
},
{
"range": ">=3.2.0 <3.5.2",
"version": "4.5.1"
},
{
"range": "<=0.0.4",
"version": "4.5.1"
},
{
"range": "<0.12.2",
"version": "4.5.1"
},
{
"range": ">=1.11.0a <1.11.4||>=1.12.0a <1.12.2||>=1.13.0a <1.13.12||>=2.0.0a <2.0.3||>=2.1.0a <2.1.2||>=2.2.0a <2.2.1",
"version": "4.5.1"
},
{
"range": ">=1.2.0.alpha0 <1.2.2||>=1.3.0.alpha0 <1.3.2",
"version": "4.5.1"
},
{
"range": "<1.0.0.rc1.1||1.0.0.rc1.0.0||1.0.0.rc2.0||1.0.0.rc3||1.0.0.rc4||1.0.0.rc5||1.0.0.rc6",
"version": "4.5.1"
},
{
"range": "<1.0.1||>=1.1.0 <1.1.2||1.2.0||1.3.0||1.4.0.beta.1",
"version": "4.5.1"
},
{
"range": ">=1.10.0a <1.10.1||>=1.11.0a <1.11.2||>=1.12.0a <1.12.0",
"version": "4.5.1"
},
{
"range": "<1.0.1||>=1.1.0.alpha0 <1.1.2||>=1.2.0.alpha0 <1.2.1.1||>=1.3.0.alpha0 <1.3.1||1.4.0.beta.1",
"version": "4.5.1"
},
{
"range": "<2.0.0",
"version": "4.5.1"
},
{
"range": "<1.1.1",
"version": "4.5.1"
},
{
"range": "<0.2.3",
"version": "4.5.1"
},
{
"range": "<=0.5.4",
"version": "4.5.1"
},
{
"range": "<2.7.2",
"version": "4.5.1"
},
{
"range": "<=0.1.4",
"version": "4.5.1"
},
{
"range": "<=0.0.2",
"version": "4.5.1"
},
{
"range": "=2.1.6",
"version": "4.5.1"
},
{
"range": "<0.7.8",
"version": "4.5.1"
},
{
"range": "<1.2.1",
"version": "4.5.1"
},
{
"range": "<=0.0.9",
"version": "4.5.1"
},
{
"range": ">=1.3.0 <1.3.1 || >=1.2.0 <1.2.2 || >=1.1.0 <1.1.1 || >=1.0.0 <1.0.4",
"version": "4.5.1"
},
{
"range": "<2.1.4",
"version": "4.5.1"
},
{
"range": "<1.3.1",
"version": "4.5.1"
},
{
"range": "<1.5.5 || >=1.6.0 <1.6.8 || >=1.7.0 <1.7.7",
"version": "4.5.1"
},
{
"range": "<1.1.0",
"version": "4.5.1"
},
{
"range": "<1.0.1",
"version": "4.5.1"
},
{
"range": "=0.2",
"version": "4.5.1"
},
{
"range": "<0.0.24",
"version": "4.5.1"
},
{
"range": "<3.2.0",
"version": "4.5.1"
},
{
"range": "<=1.0.2",
"version": "4.5.1"
},
{
"range": "<=0.2.1",
"version": "4.5.1"
},
{
"range": "<1.0.5",
"version": "4.5.1"
},
{
"range": "<2.0.3",
"version": "4.5.1"
},
{
"range": "<=0.6.0",
"version": "4.5.1"
},
{
"range": ">0.0.0a <0.6.4||>0.7.0a <0.7.3",
"version": "4.5.1"
},
{
"range": "=0.3.8",
"version": "4.5.1"
},
{
"range": ">=0.0",
"version": "4.5.1"
},
{
"range": ">=2.0.0 <2.0.13||>=2.1.0 <2.1.11||>=2.2.0 <2.2.5||>=2.3.0 <2.3.10||>=2.4.0 <2.4.11||>=2.5.0 <2.5.3||>=2.6.0 <2.6.3||>=2.7.0 <2.7.8||>=2.8.0 <2.8.2||>=2.9.0 <2.10.4||>=2.11.0 <2.11.2",
"version": "4.5.1"
},
{
"range": "<2.2.10||>=2.3.0a <2.3.8||>=3.0.0a <3.0.0.rc4||>=2.4.0a <2.4.5",
"version": "4.5.1"
},
{
"range": ">=1.0.0.rc1 <=1.3.2",
"version": "4.5.1"
},
{
"range": "<1.3.2",
"version": "4.5.1"
},
{
"range": ">=0.1.33 <=1.1.2",
"version": "4.5.1"
},
{
"range": "<4.0.0",
"version": "4.5.1"
},
{
"range": "<0.10.0",
"version": "4.5.1"
},
{
"range": "<0.49.1",
"version": "4.5.1"
},
{
"range": ">=0.3.0 <1.2",
"version": "4.5.1"
},
{
"range": "=3.2.0.3",
"version": "4.5.1"
},
{
"range": "=2.0.0.beta3",
"version": "4.5.1"
},
{
"range": "<2.1.3",
"version": "4.5.1"
},
{
"range": "<0.6.29",
"version": "4.5.1"
},
{
"range": "<1.1.3||>=1.2.0 <1.2.5||>=1.3.0.beta <1.3.6",
"version": "4.5.1"
},
{
"range": "<1.4.6||>=1.5.0a <1.5.4||>=1.6.0a <1.6.2",
"version": "4.5.1"
},
{
"range": ">=1.4.0 <1.4.5 || >=1.5.0 <1.5.2",
"version": "4.5.1"
},
{
"range": ">=1.1.0 <1.1.6 || >=1.2.0 <1.2.8 || >=1.3.0 <1.3.10 || >=1.4.0 <1.4.5 || >=1.5.0 <1.5.2",
"version": "4.5.1"
},
{
"range": ">=2.0.2 <=3.1.1",
"version": "4.5.1"
},
{
"range": "<4.0.1",
"version": "4.5.1"
},
{
"range": ">=5.0.0.alpha <5.0.0.beta1.1||>=4.2.0.alpha <4.2.5.1||>=4.0.0.alpha <4.1.14.1||>=3.1.0.alpha <3.2.22.1",
"version": "4.5.1"
},
{
"range": ">4.0.0 <4.0.9||>4.1.0 <4.1.5",
"version": "4.5.1"
},
{
"range": ">=4.0.0.alpha <4.2.7.1",
"version": "4.5.1"
},
{
"range": "<2.3.18 || >=2.4.0 <3.0.0 || >=3.1.0 <3.1.12 || >=3.2.0 <3.2.13",
"version": "4.5.1"
},
{
"range": "<3.0.19 || >=3.1.0 <3.1.10 || >=3.2.0 <3.2.11",
"version": "4.5.1"
},
{
"range": ">=3.0.0 <3.0.18||>=3.1.0 <3.1.9||>=3.2.0 <3.2.10",
"version": "4.5.1"
},
{
"range": "<2.3.17",
"version": "4.5.1"
},
{
"range": "<2.3.17 || >=2.4.0 <3.1.0",
"version": "4.5.1"
},
{
"range": ">=3.0.0 <3.0.13||>=3.1.0 <3.1.5||>=3.2.0 <3.2.4",
"version": "4.5.1"
},
{
"range": ">2.0.0 <3.2.19",
"version": "4.5.1"
},
{
"range": ">4.0.0 <4.0.7||>4.1.0 <4.1.3",
"version": "4.5.1"
},
{
"range": "<=0.7",
"version": "4.5.1"
},
{
"range": "<=0.1.5",
"version": "4.5.1"
},
{
"range": "<=1.0.8",
"version": "4.5.1"
},
{
"range": "<0.5.2",
"version": "4.5.1"
},
{
"range": "<1.0.0.beta",
"version": "4.5.1"
},
{
"range": ">=1.6.0 <=1.6.7",
"version": "4.5.1"
},
{
"range": "<1.10.4",
"version": "4.5.1"
},
{
"range": "<1.10.3",
"version": "4.5.1"
},
{
"range": "<1.6.6.4||>=1.6.7.rc1 <1.6.7.rc4",
"version": "4.5.1"
},
{
"range": "<1.8.2",
"version": "4.5.1"
},
{
"range": "<1.6.6.3||>=1.6.7.rc2 <1.6.7.rc4",
"version": "4.5.1"
},
{
"range": "<1.6.6.4 ||>=1.6.7.rc2 <1.6.7.rc4",
"version": "4.5.1"
},
{
"range": "<1.5.4",
"version": "4.5.1"
},
{
"range": "<1.6.3",
"version": "4.5.1"
},
{
"range": "<1.7.1",
"version": "4.5.1"
},
{
"range": ">=1.6.0.rc1 <1.6.7.1",
"version": "4.5.1"
},
{
"range": ">=1.6.0.0a <1.6.7.2",
"version": "4.5.1"
},
{
"range": "<1.6.8",
"version": "4.5.1"
},
{
"range": "<1.8.1",
"version": "4.5.1"
},
{
"range": ">=1.5.x <1.5.11 || >=1.6.x <1.6.1",
"version": "4.5.1"
},
{
"range": "<1.7.2",
"version": "4.5.1"
},
{
"range": ">=4.0.0.alpha <4.2.7.1||>=5.0.0.alpha <5.0.0.1",
"version": "4.5.1"
},
{
"range": ">=5.0.0.alpha <5.0.0.beta1.1||>=4.2.0.alpha <4.2.5.1||<4.1.14.1",
"version": "4.5.1"
},
{
"range": ">=4.0.0.0.alpha <4.1.14.2",
"version": "4.5.1"
},
{
"range": "<0.5.1||>=0.6.0 <0.6.6",
"version": "4.5.1"
},
{
"range": ">=3.0.0 <3.0.21 || >=4.0.0 <4.0.5",
"version": "4.5.1"
},
{
"range": "<4.0.38",
"version": "4.5.1"
},
{
"range": ">=4.0.5 <4.0.33",
"version": "4.5.1"
},
{
"range": "<5.1.0",
"version": "4.5.1"
},
{
"range": "<4.0.8",
"version": "4.5.1"
},
{
"range": ">=4.0.0a <4.0.60||>=5.0.0a <5.0.22",
"version": "4.5.1"
},
{
"range": ">=2.0.0.rc3 <2.0.2",
"version": "4.5.1"
},
{
"range": "=0.1.5",
"version": "4.5.1"
},
{
"range": "<2.1.2",
"version": "4.5.1"
},
{
"range": ">=3.0.0 <3.2.15",
"version": "4.5.1"
},
{
"range": ">=2.3.0 <3.9.5 || >=3.10 <3.12 || >=4.0.0.preview2 <4.0.0.rc.2",
"version": "4.5.1"
},
{
"range": "<=1.0.1",
"version": "4.5.1"
},
{
"range": "<2.6.1",
"version": "4.5.1"
},
{
"range": ">=1.1.0.rc1 <1.1.0.rc5",
"version": "4.5.1"
},
{
"range": "<2.8.0",
"version": "4.5.1"
},
{
"range": "<2.2.2",
"version": "4.5.1"
},
{
"range": "<=0.0.3",
"version": "4.5.1"
},
{
"range": ">=1.19 <1.22",
"version": "4.5.1"
},
{
"range": ">=1.0.0-alpha0 <1.1.1",
"version": "4.5.1"
},
{
"range": "<=0.6.2",
"version": "4.5.1"
},
{
"range": "<1.12.1",
"version": "4.5.1"
},
{
"range": "4.2.3",
"version": "4.5.1"
},
{
"range": "<1.7.0",
"version": "4.5.1"
},
{
"range": "<1.1.rc",
"version": "4.5.1"
},
{
"range": "<1.3.0.pre.8",
"version": "4.5.1"
},
{
"range": ">0.0.0a",
"version": "4.5.1"
},
{
"range": "=3.0.0",
"version": "4.5.1"
},
{
"range": ">=2.0.4 <4.0.0.beta1",
"version": "4.5.1"
},
{
"range": "<=0.5.0",
"version": "4.5.1"
},
{
"range": "=1.3.2.1",
"version": "4.5.1"
},
{
"range": ">=0.8.0 <0.8.7.1",
"version": "4.5.1"
},
{
"range": "<0.9.11",
"version": "4.5.1"
},
{
"range": ">=4.1 <4.1.1 || >4.0 <4.0.5 || >=0.0 <3.2.18",
"version": "4.5.1"
},
{
"range": ">=3.0.0.beta <3.2.17",
"version": "4.5.1"
},
{
"range": "<3.2.17 || >=4.0.0.beta <4.0.3 || =4.1.0.beta1",
"version": "4.5.1"
},
{
"range": ">4.0.0.beta <4.0.3 || =4.1.0.beta1",
"version": "4.5.1"
},
{
"range": ">=3.0.0 <3.2.16||>=4.0.0.beta1 <4.0.2",
"version": "4.5.1"
},
{
"range": "<2.6.2",
"version": "4.5.1"
}
]
This diff is collapsed.
{
{"range": "==2.0.1", "version": "2.0.0"}
}
{}
[
{"range": "", "version": ""},
{"range": "==2.0.1", "version": ""},
{"range": ">=0.6.3&&<1.0.1", "version": "1.0.0"},
{"range": ">=1.2.3", "version": "1.3.3"},
{"range": ">=1.2.3", "version": "0.0.5"},
{"range": ">=1.3.2,<2.4.11", "version": "1.3.3"},
{"range": ">=1.3.2,<2.4.11", "version": "4.5.7"},
{"range": ">=1.4 <1.4.11||>=1.5 <1.5.6||>=1.6 <1.6.3", "version": "1.6.1"},
{"range": ">=1.4 <1.4.11||>=1.5 <1.5.6||>=1.6 <1.6.3", "version": "1.0"},
{"range": ">=1.4 <1.4.11rc1||>=1.5 <1.5.6||>=1.6 <1.6.3", "version": "1.4.10rc2"},
{"range": ">=1.4 <1.4.11rc1||>=1.5 <1.5.6||>=1.6 <1.6.3", "version": "1.4.11rc2"}
]
[
{
"range": "",
"version": "",
"error": "Missing version"
},
{
"range": "==2.0.1",
"version": "",
"error": "Missing version"
},
{
"range": ">=0.6.3&&<1.0.1",
"version": "1.0.0",
"error": "Illformed requirement [\">=0.6.3&&<1.0.1\"]"
},
{
"range": ">=1.2.3",
"version": "1.3.3",
"satisfies": true
},
{
"range": ">=1.2.3",
"version": "0.0.5",
"satisfies": false
},
{
"range": ">=1.3.2,<2.4.11",
"version": "1.3.3",
"error": "Illformed requirement [\">=1.3.2,<2.4.11\"]"
},
{
"range": ">=1.3.2,<2.4.11",
"version": "4.5.7",
"error": "Illformed requirement [\">=1.3.2,<2.4.11\"]"
},
{
"range": ">=1.4 <1.4.11||>=1.5 <1.5.6||>=1.6 <1.6.3",
"version": "1.6.1",
"satisfies": true
},
{
"range": ">=1.4 <1.4.11||>=1.5 <1.5.6||>=1.6 <1.6.3",
"version": "1.0",
"satisfies": false
},
{
"range": ">=1.4 <1.4.11rc1||>=1.5 <1.5.6||>=1.6 <1.6.3",
"version": "1.4.10rc2",
"satisfies": true
},
{
"range": ">=1.4 <1.4.11rc1||>=1.5 <1.5.6||>=1.6 <1.6.3",
"version": "1.4.11rc2",
"satisfies": false
}
]
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'json'
EXIT_CODE_BAD_ARGS = 2
if ARGV.size != 1
puts <<-EOS
SYNOPSIS
vrange.rb - evaluate versions and ranges
filename = File.basename($PROGRAM_NAME)
puts <<~EOS
SYNOPSIS
#{filename} - evaluate versions and ranges
SYNOPSIS
vrange.rb <queries>
SYNOPSIS
./#{filename} <queries>
DESCRIPTION
Evaluate a JSON document containing versions and version ranges (queries)
and generate a JSON document telling if the version is in range.
EOS
DESCRIPTION
Evaluate a JSON document containing versions and version ranges (queries)
and generate a JSON document telling if the version is in range.
EOS
exit EXIT_CODE_BAD_ARGS
end
......@@ -26,31 +28,40 @@ def eval_queries(queries)
end
def eval_query(query)
version = parse_version query["version"]
parse_range(query["range"]).each do |req|
if req.satisfied_by?(version)
return query.merge({"satisfies": true})
end
version = parse_version query['version']
parse_range(query['range']).each do |req|
return query.merge("satisfies": true) if req.satisfied_by?(version)
end
return query.merge({"satisfies": false})
rescue => e
return query.merge({"error": e.to_s})
query.merge("satisfies": false)
rescue StandardError => e
query.merge("error": e.to_s)
end
def parse_version(version)
if version == nil || version == ""
raise "Missing version"
end
raise 'Missing version' if version.nil? || version == ''
Gem::Version.new version
end
def parse_range(range)
if range == nil || range == ""
raise "Missing requirement"
end
range.split("||").map do |requirements|
Gem::Requirement.new(requirements.split(%r{\s+}).map{|req| req.strip})
raise 'Missing requirement' if range.nil? || range == ''
range.split('||').map do |requirements|
Gem::Requirement.new(requirements.strip.split(/\s+/).map(&:strip))
end
end
puts JSON.pretty_generate eval_queries JSON.parse File.read ARGV[0]
input_file = ARGV[0]
begin
json_object = JSON.parse(File.read(input_file))
if json_object.instance_of?(Array)
puts JSON.pretty_generate eval_queries json_object
else
puts "JSON Array expected"
exit(1)
end
rescue StandardError => e
puts e
exit(1)
end
......@@ -9,6 +9,7 @@
"private": true,
"dependencies": {
"path": "^0.12.7",
"read-file": "^0.2.0",
"semver": "^6.3.0",
"test": "^0.6.0",
"testing": "^1.1.2"
......
......@@ -3,7 +3,7 @@
let documents;
const bail = (error) => {
console.log(JSON.stringify({success: false, error: error.message}))
console.log(error.message)
process.exit(1);
}
......
......@@ -3,16 +3,16 @@ const semver = require('semver');
module.exports = {
processDocument(item) {
try {
if (!semver.validRange(item.range)) {
if (!semver.validRange(item.range, true)) {
throw new Error('malformed range string');
}
if (!semver.validRange(item.range)) {
if (!semver.valid(item.version, true)) {
throw new Error('malformed version string');
}
const satisfies = semver.satisfies(item.version, item.range, {
includePrerelease: true,
includePrerelease: true, loose: true
});
return {success: true, 'range': item.range, 'version': item.version, satisfies};
return {'range': item.range, 'version': item.version, satisfies};
} catch (e) {
return {'range': item.range, 'version': item.version, 'error': e.message};
}
......
......@@ -3,156 +3,72 @@
// run with ./test_rangecheck.js
function clean_string(str) {
return str.replace(/[^a-zA-Z ]/g, "")
return str.replace(/[^a-zA-Z0-9]/g, "")
}
var testing = require('testing');
const { spawn } = require( 'child_process' );
var fs = require("fs");
function testWellFormedJsonFile(callback) {
const ls = spawn('./rangecheck.js', ['tests/input.json']);
var expect = `
[
{
"success": true,
"range": "^2.0.0",
"version": "2.0.0",
"satisfies": true
},
{
"success": true,
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"success": true,
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"success": true,
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"success": true,
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"success": true,
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"success": true,
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"success": true,
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"success": true,
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"range": "Y.Z.YZ",
"version": "1.1.0",
"error": "malformed range string"
},
{
"success": true,
"range": "^2.0.0 || ^3.0.0",
"version": "2.0.0",
"satisfies": true
},
{
"success": true,
"range": "^2.0.0-alpha.1",
"version": "2.0.0",
"satisfies": true
},
{
"success": true,
"range": "^2.0.0-alpha.1",
"version": "2.0.0",
"satisfies": true
},
{
"success": true,
"range": "< 2.0.0",
"version": "1.0.0-alpha.1",
"satisfies": true
}
]`
ls.stdout.on('data', data => {
datastr = data.toString()
datastr = clean_string(datastr)
expect = clean_string(expect)
testing.assertEquals(datastr, expect)
});
ls.on('exit', function(code){
testing.assertEquals(code, 0);
});
var expect = String(fs.readFileSync('tests/simple_out.json'));
var spawn = require('child_process').spawnSync;
var command = spawn('./rangecheck.js', ['tests/simple_in.json']);
var out = String(command.stdout);
var status = command.status;
expect = clean_string(expect);
out = clean_string(out);
testing.assertEquals(status, 0);
testing.assertEquals(out, expect);
testing.success(callback);
}
function testDictionaryJsonFile(callback) {
const ls = spawn('./rangecheck.js', ['tests/dictionary.json']);
ls.stderr.on('data', (data) => {
testing.assertEquals(data, "Unexpected token { in JSON at position 2\n");
});
ls.on('exit', function(code){
testing.assertEquals(code, 1);
});
var spawn = require('child_process').spawnSync;
const command = spawn('./rangecheck.js', ['tests/dictionary.json']);
var out = String(command.stderr);
testing.assertEquals(out, "Unexpected token { in JSON at position 2\n");
testing.assertEquals(command.status, 1);
testing.success(callback);
}
function testEmptyJsonFile(callback) {
const ls = spawn('./rangecheck.js', ['tests/empty.json']);
ls.stderr.on('data', (data) => {
testing.assertEquals(data, "File input is not a JSON array.\n");
});
ls.on('exit', function(code){
testing.assertEquals(code, 1);
});
var spawn = require('child_process').spawnSync;
const command = spawn('./rangecheck.js', ['tests/empty.json']);
testing.assertEquals(String(command.stderr), "File input is not a JSON array.\n");
testing.assertEquals(command.status, 1);
testing.success(callback);
}
function testNonExistentJsonFile(callback) {
const ls = spawn('./rangecheck.js', ['tests/empty00.json']);
ls.stderr.on('data', (data) => {
testing.assertEquals(data, "ENOENT: no such file or directory, open 'tests/empty00.json'\n");
});
ls.on('exit', function(code){
testing.assertEquals(code, 1);
});
var spawn = require('child_process').spawnSync;
const command = spawn('./rangecheck.js', ['tests/empty00.json']);
testing.assertEquals(String(command.stderr), "ENOENT: no such file or directory, open 'tests/empty00.json'\n");
testing.assertEquals(command.status, 1);
testing.success(callback);
}
function testGemnasiumDbAdvisoryRanges(callback) {
var expect = String(fs.readFileSync('tests/adb_ranges_out.json'));
var spawn = require('child_process').spawnSync;
var command = spawn('./rangecheck.js', ['tests/adb_ranges_in.json']);
var out = String(command.stdout);
var status = command.status
expect = clean_string(expect);
out = clean_string(out)
testing.assertEquals(status, 0);
testing.assertEquals(out, expect);
testing.success(callback);
}
exports.test = function(callback)
{
var tests = [
testWellFormedJsonFile,
testDictionaryJsonFile,
testEmptyJsonFile,
testNonExistentJsonFile
testNonExistentJsonFile,
testGemnasiumDbAdvisoryRanges
];
testing.run(tests, callback);
};
......
[
{
"range": "<3.0.1",
"version": "4.5.1"
},
{
"range": ">=0.0.0-alpha",
"version": "4.5.1"
},
{
"range": "<3.0.0",
"version": "4.5.1"
},
{
"range": "<5.1.3",
"version": "4.5.1"
},
{
"range": "<1.0.4",
"version": "4.5.1"
},
{
"range": ">=0.44.0 <=0.49.3",
"version": "4.5.1"
},
{
"range": "<1.1.2",
"version": "4.5.1"
},
{
"range": ">=0.0.0",
"version": "4.5.1"
},
{
"range": ">= 0.0.10 <= 0.0.14",
"version": "4.5.1"
},
{
"range": "<0.1.1",
"version": "4.5.1"
},
{
"range": "<4.17.5",
"version": "4.5.1"
},
{
"range": "<=0.0.1",
"version": "4.5.1"
},
{
"range": ">=0.0.0-a",
"version": "4.5.1"
},
{
"range": "<2.3.1",
"version": "4.5.1"
},
{
"range": "<1.4.0",
"version": "4.5.1"
},
{
"range": "<0.0.18",
"version": "4.5.1"
},
{
"range": "<3.9.0",
"version": "4.5.1"
},
{
"range": ">=3.0.0 <3.10.0||=3.10.2",
"version": "4.5.1"
},
{
"range": "<0.3.2",
"version": "4.5.1"
},
{
"range": "<=3.0.0",
"version": "4.5.1"
},
{
"range": "<0.9.3",
"version": "4.5.1"
},
{
"range": "<0.0.3",
"version": "4.5.1"
},
{
"range": "<=5.2.1",
"version": "4.5.1"
},
{
"range": "<1.0.29",
"version": "4.5.1"
},
{
"range": "<=2.6.3",
"version": "4.5.1"
},
{
"range": "<1.3.1",
"version": "4.5.1"
},
{
"range": "<2.1.12",
"version": "4.5.1"
},
{
"range": "<=0.0.10",
"version": "4.5.1"
},
{
"range": "<=0.8.1",
"version": "4.5.1"
},
{
"range": "<=1.0.1",
"version": "4.5.1"
},
{
"range": "0.5.1",
"version": "4.5.1"
},
{
"range": "<=0.7.0",
"version": "4.5.1"
},
{
"range": "<=0.5.2",
"version": "4.5.1"
},
{
"range": "<0.8.0",
"version": "4.5.1"
},
{
"range": "<=6.4.0",
"version": "4.5.1"
},
{
"range": "<1.1.5",
"version": "4.5.1"
},
{
"range": "<1.3.0",
"version": "4.5.1"
},
{
"range": "<3.22.1",
"version": "4.5.1"
},
{
"range": "<2.0.0",
"version": "4.5.1"
},
{
"range": "<0.1.3",
"version": "4.5.1"
},
{
"range": "< 1.1.1",
"version": "4.5.1"
},
{
"range": "<=0.8.4",
"version": "4.5.1"
},
{
"range": "<=1.3.3",
"version": "4.5.1"
},
{
"range": ">=1.0.0",
"version": "4.5.1"
},
{
"range": "<1.0.2",
"version": "4.5.1"
},
{
"range": "<2.19.3",
"version": "4.5.1"
},
{
"range": "<9.0.0",
"version": "4.5.1"
},
{
"range": "<0.1.6",
"version": "4.5.1"
},
{
"range": "<1.8.8",
"version": "4.5.1"
},
{
"range": "<3.11.0 || >=4.0.0-rc1 <4.5.0",
"version": "4.5.1"
},
{
"range": "<11.1.3",
"version": "4.5.1"
},
{
"range": "<11.1.4",
"version": "4.5.1"
},
{
"range": "<11.0.0",
"version": "4.5.1"
},
{
"range": ">=8.0.0-rc4 <13.4.2",
"version": "4.5.1"
},
{
"range": "2.0.x || 2.1.x",
"version": "4.5.1"
},
{
"range": "< 6.1.0",
"version": "4.5.1"
},
{
"range": ">=15.0.0 <16.1.1",
"version": "4.5.1"
},
{
"range": "<=0.9.73",
"version": "4.5.1"
},
{
"range": "< 2.3.3",
"version": "4.5.1"
},
{
"range": ">=0.2.20",
"version": "4.5.1"
},
{
"range": "<=1.1.3",
"version": "4.5.1"
},
{
"range": "<0.2.3",
"version": "4.5.1"
},
{
"range": "<=0.30.0 || <=0.21.0-pre.1",
"version": "4.5.1"
},
{
"range": "<0.6.1",
"version": "4.5.1"
},
{
"range": "<=0.3.3",
"version": "4.5.1"
},
{
"range": "<1.1.4",
"version": "4.5.1"
},
{
"range": "<5.0.2",
"version": "4.5.1"
},
{
"range": "<1.10.10",
"version": "4.5.1"
},
{
"range": "2.1.0-M1 || 2.1.0-M2",
"version": "4.5.1"
},
{
"range": "<2.1.5-M1 >=2.1.4-M1",
"version": "4.5.1"
},
{
"range": "<2.1.5 >=2.1.2-M2",
"version": "4.5.1"
},
{
"range": "<2.2.1",
"version": "4.5.1"
},
{
"range": "<=0.3.0",
"version": "4.5.1"
},
{
"range": "<=0.3.2",
"version": "4.5.1"
},
{
"range": "<0.3.9",
"version": "4.5.1"
},
{
"range": "<0.3.4",
"version": "4.5.1"
},
{
"range": "<0.3.6",
"version": "4.5.1"
},
{
"range": "<= 1.6.8",
"version": "4.5.1"
},
{
"range": "<= 0.0.1",
"version": "4.5.1"
},
{
"range": "<4.2.2",
"version": "4.5.1"
},
{
"range": "<=2.2.0",
"version": "4.5.1"
},
{
"range": ">=1.1.0 <=1.1.1",
"version": "4.5.1"
},
{
"range": "<1.4.5",
"version": "4.5.1"
},
{
"range": "<1.1.1",
"version": "4.5.1"
},
{
"range": ">=1.7.1 <=1.8.3",
"version": "4.5.1"
},
{
"range": "<1.12.0||>1.12.2 <3.0.0-beta1",
"version": "4.5.1"
},
{
"range": "<=2.2.4",
"version": "4.5.1"
},
{
"range": "< 0.5.2",
"version": "4.5.1"
},
{
"range": ">=12.0.0 <=12.0.7",
"version": "4.5.1"
},
{
"range": "<2.0.7",
"version": "4.5.1"
},
{
"range": "<1.0.0",
"version": "4.5.1"
},
{
"range": "< 2.0.5",
"version": "4.5.1"
},
{
"range": "<1.1.0",
"version": "4.5.1"
},
{
"range": "<=1.0.3",
"version": "4.5.1"
},
{
"range": "<1.6.3",
"version": "4.5.1"
},
{
"range": "<1.2.30",
"version": "4.5.1"
},
{
"range": "<1.5.9",
"version": "4.5.1"
},
{
"range": "<1.6.5",
"version": "4.5.1"
},
{
"range": "<1.6.9",
"version": "4.5.1"
},
{
"range": ">=0.0.0alpha",
"version": "4.5.1"
},
{
"range": "<=3.0.5",
"version": "4.5.1"
},
{
"range": "<=1.6.2",
"version": "4.5.1"
},
{
"range": "<=1.7.1",
"version": "4.5.1"
},
{
"range": "<1.4.1",
"version": "4.5.1"
},
{
"range": "<3.7.0",
"version": "4.5.1"
},
{
"range": ">= 0.2.0 <= 0.9.6",
"version": "4.5.1"
},
{
"range": "<0.3.16",
"version": "4.5.1"
},
{
"range": "<=1.1.1",
"version": "4.5.1"
},
{
"range": ">=3.0.0a <=3.0.1 || <= 2.4.2",
"version": "4.5.1"
},
{
"range": "<1.11.4",
"version": "4.5.1"
},
{
"range": "<=1.2.2",
"version": "4.5.1"
},
{
"range": "<=1.4.2",
"version": "4.5.1"
},
{
"range": "<3.2.1",
"version": "4.5.1"
},
{
"range": ">=0.10.0 <=0.10.8",
"version": "4.5.1"
},
{
"range": "<=1.1.4",
"version": "4.5.1"
},
{
"range": "<0.4.7",
"version": "4.5.1"
},
{
"range": "<=0.9.11",
"version": "4.5.1"
},
{
"range": "<1.10.100",
"version": "4.5.1"
},
{
"range": "<=2.4.2",
"version": "4.5.1"
},
{
"range": "<1.8.10",
"version": "4.5.1"
},
{
"range": ">=2.0.0-alpha.0 <=3.4.3",
"version": "4.5.1"
},
{
"range": "<=1.10.2",
"version": "4.5.1"
},
{
"range": "<0.6.5",
"version": "4.5.1"
},
{
"range": "<0.2.5",
"version": "4.5.1"
},
{
"range": "<=1.2.1",
"version": "4.5.1"
},
{
"range": "<1.4.4",
"version": "4.5.1"
},
{
"range": "<= 1.0.2 || < 2.3.10",
"version": "4.5.1"
},
{
"range": "<=1.1.6",
"version": "4.5.1"
},
{
"range": "< 2.11.2 || >= 3.0.0 < 3.6.4 || >= 4.0.0 < 4.5.7 || >= 5.0.0 < 5.2.1 || >= 6.0.0 < 6.0.5 || >= 6.1.0 < 6.1.6 || >= 6.2.0 < 6.2.5 || >= 6.3.0 < 6.3.3 || >= 6.4.0 < 6.4.2 || >= 7.0.0 < 7.0.2 || >= 7.1.0 < 7.1.2",
"version": "4.5.1"
},
{
"range": "<0.5.5",
"version": "4.5.1"
},
{
"range": "<=1.2.4",
"version": "4.5.1"
},
{
"range": "<=2.12.3",
"version": "4.5.1"
},
{
"range": "<4.3.2",
"version": "4.5.1"
},
{
"range": "<0.5.0",
"version": "4.5.1"
},
{
"range": "<0.3.1",
"version": "4.5.1"
},
{
"range": ">= 5.2.1 <= 6.0.0 || >=6.0.0 <= 6.0.2",
"version": "4.5.1"
},
{
"range": ">=2.0.1 <3.0.2",
"version": "4.5.1"
},
{
"range": "<=3.0.1",
"version": "4.5.1"
},
{
"range": "5.1.1",
"version": "4.5.1"
},
{
"range": ">=0.0.2",
"version": "4.5.1"
},
{
"range": "<0.9.14",
"version": "4.5.1"
},
{
"range": "<=0.9.6",
"version": "4.5.1"
},
{
"range": "<=0.10.0",
"version": "4.5.1"
},
{
"range": "<2.3.22",
"version": "4.5.1"
},
{
"range": ">=0.0.0 <1.0.12",
"version": "4.5.1"
},
{
"range": "<3.12.0",
"version": "4.5.1"
},
{
"range": "<=1.0.5",
"version": "4.5.1"
},
{
"range": "< 0.1.2",
"version": "4.5.1"
},
{
"range": "<2.3.2",
"version": "4.5.1"
},
{
"range": "<4.0.0",
"version": "4.5.1"
},
{
"range": "<= 0.6.0",
"version": "4.5.1"
},
{
"range": "<2.4.2",
"version": "4.5.1"
},
{
"range": "<1.6.1",
"version": "4.5.1"
},
{
"range": "< 2.0.0",
"version": "4.5.1"
},
{
"range": "<= 3.16.0",
"version": "4.5.1"
},
{
"range": "<= 1.7.0-alpha2",
"version": "4.5.1"
},
{
"range": "<3.23.5",
"version": "4.5.1"
},
{
"range": "<= 2.1.3",
"version": "4.5.1"
},
{
"range": "<=3.19.3",
"version": "4.5.1"
},
{
"range": "<=2.0.0-rc7",
"version": "4.5.1"
},
{
"range": "<=1.6.0",
"version": "4.5.1"
},
{
"range": "<=2.0.0-alpha7",
"version": "4.5.1"
},
{
"range": "<1.10.2",
"version": "4.5.1"
},
{
"range": "<2.9.4",
"version": "4.5.1"
},
{
"range": "<1.6.5||>=1.7.0 <1.7.2",
"version": "4.5.1"
},
{
"range": "<2.2.0",
"version": "4.5.1"
},
{
"range": "<=2.1.1",
"version": "4.5.1"
},
{
"range": "<=1.3.0",
"version": "4.5.1"
},
{
"range": ">=0.2.0 <=0.4.2",
"version": "4.5.1"
},
{
"range": "<=1.20.0",
"version": "4.5.1"
},
{
"range": "<=v0.9.7",
"version": "4.5.1"
},
{
"range": "<0.26.0",
"version": "4.5.1"
},
{
"range": "<1.4.1 || >= 2.0.0 < 2.0.3",
"version": "4.5.1"
},
{
"range": ">=2.2.6 <2.47.0 || >2.51.0 <=2.67.0",
"version": "4.5.1"
},
{
"range": "0.5.0",
"version": "4.5.1"
},
{
"range": "<1.2.4",
"version": "4.5.1"
},
{
"range": "<1.10.4||>=1.11.0 <1.16.0",
"version": "4.5.1"
},
{
"range": ">=1.0.0 <1.4.6||>=2.0.0 <2.0.1",
"version": "4.5.1"
},
{
"range": "<0.4.11",
"version": "4.5.1"
},
{
"range": "<3.17.0",
"version": "4.5.1"
},
{
"range": "<1.5.0",
"version": "4.5.1"
},
{
"range": "<13.0.8",
"version": "4.5.1"
},
{
"range": "< 3.1.3 || >= 4.0.0 <4.1.1",
"version": "4.5.1"
},
{
"range": ">=0.0.1",
"version": "4.5.1"
},
{
"range": "<2.26.1",
"version": "4.5.1"
},
{
"range": "<=0.1.1",
"version": "4.5.1"
},
{
"range": "<0.2.4",
"version": "4.5.1"
},
{
"range": "<=0.3.13",
"version": "4.5.1"
},
{
"range": ">=2.0.0 <=2.14.0",
"version": "4.5.1"
},
{
"range": "<3.2.2",
"version": "4.5.1"
},
{
"range": "<2.6.0",
"version": "4.5.1"
},
{
"range": "<2.4.24",
"version": "4.5.1"
},
{
"range": "<=0.3.8",
"version": "4.5.1"
},
{
"range": ">=0.2.0",
"version": "4.5.1"
},
{
"range": "<=6.4.8",
"version": "4.5.1"
},
{
"range": "<3.15.7",
"version": "4.5.1"
},
{
"range": "<=2.3.5",
"version": "4.5.1"
},
{
"range": "<3.5.0",
"version": "4.5.1"
},
{
"range": ">=2.0.0 <=4.0.4",
"version": "4.5.1"
},
{
"range": "<=2.8.0",
"version": "4.5.1"
},
{
"range": "<1.6.16 || >=1.7.0-alpha <1.7.11 || >= 1.8.0-alpha <1.8.2-beta.4",
"version": "4.5.1"
},
{
"range": "< 1.6.14 || >= 1.7.0 < 1.7.8",
"version": "4.5.1"
},
{
"range": "<= 1.7.12 || >=1.8.0 <= 1.8.3 || >=2.0.0-beta.1 <= 2.0.0-beta.3",
"version": "4.5.1"
},
{
"range": "<0.4.4",
"version": "4.5.1"
},
{
"range": "<0.11.1",
"version": "4.5.1"
},
{
"range": "<0.8.4",
"version": "4.5.1"
},
{
"range": "<1.0.1",
"version": "4.5.1"
},
{
"range": "<=3.2.0",
"version": "4.5.1"
},
{
"range": "<1.6.5 || < 2.1.7 >=2.0.0-beta0",
"version": "4.5.1"
},
{
"range": "<1.6.6 || < 2.2.4 >=2.0.0-beta0",
"version": "4.5.1"
},
{
"range": "<4.2.1 || >= 5.0.0alpha0 < 5.0.3",
"version": "4.5.1"
},
{
"range": "<=0.6.6",
"version": "4.5.1"
},
{
"range": "<= 1.12.11",
"version": "4.5.1"
},
{
"range": ">=0.9.7 <=2.2.2",
"version": "4.5.1"
},
{
"range": "<2.3.3",
"version": "4.5.1"
},
{
"range": "<=0.0.5",
"version": "4.5.1"
},
{
"range": "<=0.19.0-beta.1",
"version": "4.5.1"
},
{
"range": "<=6.0.4",
"version": "4.5.1"
},
{
"range": "<1.2.8000",
"version": "4.5.1"
},
{
"range": ">=3.0.0alpha <= 3.8.2 || <= 2.15.0",
"version": "4.5.1"
},
{
"range": ">=1.4.0-alpha <2.0.0",
"version": "4.5.1"
},
{
"range": "<=2.4.3",
"version": "4.5.1"
},
{
"range": "<= 0.3.3",
"version": "4.5.1"
},
{
"range": "<0.0.19",
"version": "4.5.1"
},
{
"range": "<1.5.2",
"version": "4.5.1"
},
{
"range": "<3.5.1 || >=4.0.0 && <4.1.3 || >=5.0.0 && <5.6.1 || >=6.0.0 && <6.1.2",
"version": "4.5.1"
},
{
"range": "<3.4.6 || >=4.0.0 <4.0.5",
"version": "4.5.1"
},
{
"range": "<0.12.7",
"version": "4.5.1"
},
{
"range": "<=1.1.0",
"version": "4.5.1"
},
{
"range": "<= 1.0.0",
"version": "4.5.1"
},
{
"range": "<3.3.1",
"version": "4.5.1"
},
{
"range": "<0.1.4",
"version": "4.5.1"
},
{
"range": "<2.25.1",
"version": "4.5.1"
},
{
"range": "<2.2.5",
"version": "4.5.1"
},
{
"range": "<=1.11.4",
"version": "4.5.1"
},
{
"range": "<1.12.4||>=2.0.0 <2.0.2",
"version": "4.5.1"
},
{
"range": "<2.6.9 || >= 3.0.0 <3.1.0",
"version": "4.5.1"
},
{
"range": "<=0.37.0",
"version": "4.5.1"
}
]
This diff is collapsed.
File moved
[
{
"range": "^2.0.0",
"version": "2.0.0",
"satisfies": true
},
{
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"range": "^2.0.0",
"version": "1.1.0",
"satisfies": false
},
{
"range": "Y.Z.YZ",
"version": "1.1.0",
"error": "malformed range string"
},
{
"range": "^2.0.0 || ^3.0.0",
"version": "2.0.0",
"satisfies": true
},
{
"range": "^2.0.0-alpha.1",
"version": "2.0.0",
"satisfies": true
},
{
"range": "^2.0.0-alpha.1",
"version": "2.0.0",
"satisfies": true
},
{
"range": "< 2.0.0",
"version": "1.0.0-alpha.1",
"satisfies": true
}
]
......@@ -12,22 +12,8 @@ final class RangeCheckTest extends TestCase
{
$output = "";
$exitcode = 0;
exec('./rangecheck.php tests/input.json', $output, $exitcode);
$expectation = <<<'EXPECT'
[
{"range":"","error":"version not specified","version":""},
{"range":"==2.0.1","version":"","error":"version not specified"},
{"range":">=0.6.3&&<1.0.1","error":"Could not parse version constraint >=0.6.3&&<1.0.1: Invalid version string \"0.6.3&&<1.0.1\"","version":"1.0.0"},
{"range":">=1.2.3","version":"1.3.3","satisfies":true},
{"range":">=1.2.3","version":"0.0.5","satisfies":false},
{"range":">=1.3.2,<2.4.11","version":"1.3.3","satisfies":true},
{"range":">=1.3.2,<2.4.11","version":"4.5.7","satisfies":false},
{"range":">=1.4,<1.4.11||>=1.5,<1.5.6||>=1.6,<1.6.3","version":"1.6.1","satisfies":true},
{"range":">=1.4,<1.4.11||>=1.5,<1.5.6||>=1.6,<1.6.3","version":"1.0","satisfies":false},
{"range":">=1.4,<1.4.11rc1||>=1.5,<1.5.6||>=1.6,<1.6.3","version":"1.4.10rc2","satisfies":true},
{"range":">=1.4,<1.4.11rc1||>=1.5,<1.5.6||>=1.6,<1.6.3","version":"1.4.11rc2","satisfies":true}
]
EXPECT;
exec('./rangecheck.php tests/simple_in.json', $output, $exitcode);
$expectation = file_get_contents('tests/simple_out.json');
$this->assertEquals(implode("\n", $output), $expectation);
$this->assertEquals($exitcode, 0);
}
......@@ -58,4 +44,14 @@ EXPECT;
$this->assertEquals(implode("\n", $output), "tests/empty00.json does not exist");
$this->assertEquals($exitcode, 1);
}
public function testGemnasiumDbAdvisoryRanges(): void
{
$output = "";
$exitcode = 0;
exec('./rangecheck.php tests/adb_ranges_in.json', $output, $exitcode);
$expectation = file_get_contents('tests/adb_ranges_out.json');
$this->assertEquals(implode("\n", $output), $expectation);
$this->assertEquals($exitcode, 0);
}
}
......@@ -63,7 +63,7 @@ class JsonListener extends \JsonStreamingParser\Listener\IdleListener
if (strlen($value) == 0) {
$this->dict['error'] = 'version not specified';
} else {
$this->version = new Constraint('==', $value);
$this->version = self::$parser->parseConstraints("== $value");
}
}
$this->ctx = "";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment