aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Reiter2017-02-18 16:59:13 +0100
committerGitHub2017-02-18 16:59:13 +0100
commitc4cb1dd5813e5a2413238593d00d4475d4ba1a73 (patch)
treef652047e46aab627589b9b1b65b35aad1a63c205
parent481d7229b3b2945c8d6b9f8d9fdb4cf7bb628d51 (diff)
parent779d9ce60fd931b5ac1819209bf00470703f6a55 (diff)
downloadbrew-c4cb1dd5813e5a2413238593d00d4475d4ba1a73.tar.bz2
Merge pull request #2035 from reitermarkus/spec-pkgversion
Convert PkgVersion test to spec.
-rw-r--r--Library/Homebrew/test/pkg_version_spec.rb81
-rw-r--r--Library/Homebrew/test/pkg_version_test.rb51
2 files changed, 81 insertions, 51 deletions
diff --git a/Library/Homebrew/test/pkg_version_spec.rb b/Library/Homebrew/test/pkg_version_spec.rb
new file mode 100644
index 000000000..b1cceb32c
--- /dev/null
+++ b/Library/Homebrew/test/pkg_version_spec.rb
@@ -0,0 +1,81 @@
+require "pkg_version"
+
+describe PkgVersion do
+ describe "::parse" do
+ it "parses versions from a string" do
+ expect(described_class.parse("1.0_1")).to eq(described_class.new(Version.create("1.0"), 1))
+ expect(described_class.parse("1.0_1")).to eq(described_class.new(Version.create("1.0"), 1))
+ expect(described_class.parse("1.0")).to eq(described_class.new(Version.create("1.0"), 0))
+ expect(described_class.parse("1.0_0")).to eq(described_class.new(Version.create("1.0"), 0))
+ expect(described_class.parse("2.1.4_0")).to eq(described_class.new(Version.create("2.1.4"), 0))
+ expect(described_class.parse("1.0.1e_1")).to eq(described_class.new(Version.create("1.0.1e"), 1))
+ end
+ end
+
+ specify "#==" do
+ expect(described_class.parse("1.0_0")).to be == described_class.parse("1.0")
+ expect(described_class.parse("1.0_1")).to be == described_class.parse("1.0_1")
+ end
+
+ describe "#>" do
+ it "returns true if the left version is bigger than the right" do
+ expect(described_class.parse("1.1")).to be > described_class.parse("1.0_1")
+ end
+
+ it "returns true if the left version is HEAD" do
+ expect(described_class.parse("HEAD")).to be > described_class.parse("1.0")
+ end
+
+ it "raises an error if the other side isn't of the same class" do
+ expect {
+ described_class.new(Version.create("1.0"), 0) > Object.new
+ }.to raise_error(ArgumentError)
+ end
+
+ it "is not compatible with Version" do
+ expect {
+ described_class.new(Version.create("1.0"), 0) > Version.create("1.0")
+ }.to raise_error(ArgumentError)
+ end
+ end
+
+ describe "#<" do
+ it "returns true if the left version is smaller than the right" do
+ expect(described_class.parse("1.0_1")).to be < described_class.parse("2.0_1")
+ end
+
+ it "returns true if the right version is HEAD" do
+ expect(described_class.parse("1.0")).to be < described_class.parse("HEAD")
+ end
+ end
+
+ describe "#<=>" do
+ it "returns nil if the comparison fails" do
+ expect(described_class.new(Version.create("1.0"), 0) <=> Object.new).to be nil
+ end
+ end
+
+ describe "#to_s" do
+ it "returns a string of the form 'version_revision'" do
+ expect(described_class.new(Version.create("1.0"), 0).to_s).to eq("1.0")
+ expect(described_class.new(Version.create("1.0"), 1).to_s).to eq("1.0_1")
+ expect(described_class.new(Version.create("1.0"), 0).to_s).to eq("1.0")
+ expect(described_class.new(Version.create("1.0"), 0).to_s).to eq("1.0")
+ expect(described_class.new(Version.create("HEAD"), 1).to_s).to eq("HEAD_1")
+ expect(described_class.new(Version.create("HEAD-ffffff"), 1).to_s).to eq("HEAD-ffffff_1")
+ end
+ end
+
+ describe "#hash" do
+ let(:p1) { described_class.new(Version.create("1.0"), 1) }
+ let(:p2) { described_class.new(Version.create("1.0"), 1) }
+ let(:p3) { described_class.new(Version.create("1.1"), 1) }
+ let(:p4) { described_class.new(Version.create("1.0"), 0) }
+
+ it "returns a hash based on the version and revision" do
+ expect(p1.hash).to eq(p2.hash)
+ expect(p1.hash).not_to eq(p3.hash)
+ expect(p1.hash).not_to eq(p4.hash)
+ end
+ end
+end
diff --git a/Library/Homebrew/test/pkg_version_test.rb b/Library/Homebrew/test/pkg_version_test.rb
deleted file mode 100644
index ff7896f8b..000000000
--- a/Library/Homebrew/test/pkg_version_test.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require "testing_env"
-require "pkg_version"
-
-class PkgVersionTests < Homebrew::TestCase
- def v(version)
- PkgVersion.parse(version)
- end
-
- def test_parse
- assert_equal PkgVersion.new(Version.create("1.0"), 1), PkgVersion.parse("1.0_1")
- assert_equal PkgVersion.new(Version.create("1.0"), 1), PkgVersion.parse("1.0_1")
- assert_equal PkgVersion.new(Version.create("1.0"), 0), PkgVersion.parse("1.0")
- assert_equal PkgVersion.new(Version.create("1.0"), 0), PkgVersion.parse("1.0_0")
- assert_equal PkgVersion.new(Version.create("2.1.4"), 0), PkgVersion.parse("2.1.4_0")
- assert_equal PkgVersion.new(Version.create("1.0.1e"), 1), PkgVersion.parse("1.0.1e_1")
- end
-
- def test_comparison
- assert_operator v("1.0_0"), :==, v("1.0")
- assert_operator v("1.0_1"), :==, v("1.0_1")
- assert_operator v("1.1"), :>, v("1.0_1")
- assert_operator v("1.0_0"), :==, v("1.0")
- assert_operator v("1.0_1"), :<, v("2.0_1")
- assert_operator v("HEAD"), :>, v("1.0")
- assert_operator v("1.0"), :<, v("HEAD")
-
- v = PkgVersion.new(Version.create("1.0"), 0)
- assert_nil v <=> Object.new
- assert_raises(ArgumentError) { v > Object.new }
- assert_raises(ArgumentError) { v > Version.create("1.0") }
- end
-
- def test_to_s
- assert_equal "1.0", PkgVersion.new(Version.create("1.0"), 0).to_s
- assert_equal "1.0_1", PkgVersion.new(Version.create("1.0"), 1).to_s
- assert_equal "1.0", PkgVersion.new(Version.create("1.0"), 0).to_s
- assert_equal "1.0", PkgVersion.new(Version.create("1.0"), 0).to_s
- assert_equal "HEAD_1", PkgVersion.new(Version.create("HEAD"), 1).to_s
- assert_equal "HEAD-ffffff_1", PkgVersion.new(Version.create("HEAD-ffffff"), 1).to_s
- end
-
- def test_hash
- p1 = PkgVersion.new(Version.create("1.0"), 1)
- p2 = PkgVersion.new(Version.create("1.0"), 1)
- p3 = PkgVersion.new(Version.create("1.1"), 1)
- p4 = PkgVersion.new(Version.create("1.0"), 0)
- assert_equal p1.hash, p2.hash
- refute_equal p1.hash, p3.hash
- refute_equal p1.hash, p4.hash
- end
-end