|
3 | 3 | require "spec_helper" |
4 | 4 |
|
5 | 5 | describe Tetra::VersionMatcher do |
6 | | - let(:version_matcher) { Tetra::VersionMatcher.new } |
| 6 | + let(:v_matcher) { Tetra::VersionMatcher.new } |
7 | 7 |
|
8 | 8 | describe "#split_version" do |
9 | 9 | it "splits full names into names and version numbers" do |
10 | | - expect(version_matcher.split_version("moio-3.2beta1")).to eq(["moio", "3.2beta1"]) |
11 | | - expect(version_matcher.split_version("3.2beta1")).to eq(["", "3.2beta1"]) |
12 | | - expect(version_matcher.split_version("v3.2beta1")).to eq(["v", "3.2beta1"]) |
| 10 | + expect(v_matcher.split_version("moio-3.2beta1")).to eq(["moio", "3.2beta1"]) |
| 11 | + expect(v_matcher.split_version("3.2beta1")).to eq(["", "3.2beta1"]) |
| 12 | + expect(v_matcher.split_version("v3.2beta1")).to eq(["v", "3.2beta1"]) |
| 13 | + end |
| 14 | + |
| 15 | + it "returns the full name and nil version when no version is found" do |
| 16 | + # This triggers the 'else' block where the variable name bug was |
| 17 | + expect(v_matcher.split_version("simple-package-name")).to eq(["simple-package-name", nil]) |
| 18 | + expect(v_matcher.split_version("mypackage")).to eq(["mypackage", nil]) |
| 19 | + end |
| 20 | + |
| 21 | + it "handles version strings with different separators" do |
| 22 | + expect(v_matcher.split_version("package_name-1.0")).to eq(["package_name", "1.0"]) |
| 23 | + expect(v_matcher.split_version("package.name.1.0")).to eq(["package.name", "1.0"]) |
| 24 | + expect(v_matcher.split_version("package name 1.0")).to eq(["package name", "1.0"]) |
13 | 25 | end |
14 | 26 | end |
15 | 27 |
|
16 | 28 | describe "#chunk_distance" do |
17 | 29 | it "computes chunk distances" do |
18 | | - expect(version_matcher.chunk_distance(nil, "1")).to eq(1) |
19 | | - expect(version_matcher.chunk_distance("alpha", nil)).to eq(5) |
| 30 | + expect(v_matcher.chunk_distance(nil, "1")).to eq(1) |
| 31 | + expect(v_matcher.chunk_distance("alpha", nil)).to eq(5) |
20 | 32 |
|
21 | | - expect(version_matcher.chunk_distance("1", "1")).to eq(0) |
22 | | - expect(version_matcher.chunk_distance("1", "9")).to eq(8) |
23 | | - expect(version_matcher.chunk_distance("1", "999")).to eq(99) |
| 33 | + expect(v_matcher.chunk_distance("1", "1")).to eq(0) |
| 34 | + expect(v_matcher.chunk_distance("1", "9")).to eq(8) |
| 35 | + expect(v_matcher.chunk_distance("1", "999")).to eq(99) |
24 | 36 |
|
25 | | - expect(version_matcher.chunk_distance("snap", "SNAP")).to eq(0) |
26 | | - expect(version_matcher.chunk_distance("snap", "snippete")).to eq(5) |
27 | | - expect(version_matcher.chunk_distance("snap", "l" * 999)).to eq(99) |
| 37 | + expect(v_matcher.chunk_distance("snap", "SNAP")).to eq(0) |
| 38 | + expect(v_matcher.chunk_distance("snap", "snippete")).to eq(5) |
| 39 | + expect(v_matcher.chunk_distance("snap", "l" * 999)).to eq(99) |
28 | 40 |
|
29 | | - expect(version_matcher.chunk_distance("1", "SNAP")).to eq(4) |
| 41 | + expect(v_matcher.chunk_distance("1", "SNAP")).to eq(4) |
30 | 42 |
|
31 | | - expect(version_matcher.chunk_distance("0", "10")).to eq(10) |
32 | | - expect(version_matcher.chunk_distance("0", "9")).to eq(9) |
| 43 | + expect(v_matcher.chunk_distance("0", "10")).to eq(10) |
| 44 | + expect(v_matcher.chunk_distance("0", "9")).to eq(9) |
33 | 45 | end |
34 | 46 | end |
35 | 47 |
|
36 | 48 | describe "#best_match" do |
37 | 49 | it "finds the best match" do |
38 | 50 | my_version = "1.0" |
39 | 51 | available_versions = ["1.0", "1", "2.0", "1.0.1", "4.5.6.7.8"] |
40 | | - expect(version_matcher.best_match(my_version, available_versions)).to eq("1.0") |
| 52 | + expect(v_matcher.best_match(my_version, available_versions)).to eq("1.0") |
41 | 53 |
|
42 | 54 | available_versions = ["3.0", "2.0", "1.0.1"] |
43 | | - expect(version_matcher.best_match(my_version, available_versions)).to eq("1.0.1") |
| 55 | + expect(v_matcher.best_match(my_version, available_versions)).to eq("1.0.1") |
44 | 56 |
|
45 | 57 | available_versions = ["1.snap", "2.0", "4.0.1"] |
46 | | - expect(version_matcher.best_match(my_version, available_versions)).to eq("1.snap") |
| 58 | + expect(v_matcher.best_match(my_version, available_versions)).to eq("1.snap") |
47 | 59 |
|
48 | 60 | available_versions = ["1.10", "1.9", "2.0", "3.0.1"] |
49 | | - expect(version_matcher.best_match(my_version, available_versions)).to eq("1.9") |
| 61 | + expect(v_matcher.best_match(my_version, available_versions)).to eq("1.9") |
50 | 62 |
|
51 | 63 | my_version = "1.snap" |
52 | 64 | available_versions = ["1.snap", "1"] |
53 | | - expect(version_matcher.best_match(my_version, available_versions)).to eq("1.snap") |
| 65 | + expect(v_matcher.best_match(my_version, available_versions)).to eq("1.snap") |
54 | 66 |
|
55 | 67 | my_version = "1.very-very_very_longish" |
56 | 68 | available_versions = ["1.snap", "1"] |
57 | | - expect(version_matcher.best_match(my_version, available_versions)).to eq("1.snap") |
| 69 | + expect(v_matcher.best_match(my_version, available_versions)).to eq("1.snap") |
58 | 70 |
|
59 | 71 | my_version = "1.snap" |
60 | 72 | available_versions = [] |
61 | | - expect(version_matcher.best_match(my_version, available_versions)).to be_nil |
| 73 | + expect(v_matcher.best_match(my_version, available_versions)).to be_nil |
62 | 74 | end |
63 | 75 | end |
64 | 76 | end |
0 commit comments