From e1e06d8fa17979d4bef4a38a31ab2d1d924a6837 Mon Sep 17 00:00:00 2001 From: lyn1001 Date: Thu, 20 Aug 2020 17:14:54 +0800 Subject: [PATCH] package init --- rubygem-timecop-0.7.1-Use-minitest.patch | 253 +++++++++++++++++++++++ rubygem-timecop.spec | 59 ++++++ rubygem-timecop.yaml | 5 + timecop-0.7.1.gem | Bin 0 -> 15360 bytes 4 files changed, 317 insertions(+) create mode 100644 rubygem-timecop-0.7.1-Use-minitest.patch create mode 100644 rubygem-timecop.spec create mode 100644 rubygem-timecop.yaml create mode 100644 timecop-0.7.1.gem diff --git a/rubygem-timecop-0.7.1-Use-minitest.patch b/rubygem-timecop-0.7.1-Use-minitest.patch new file mode 100644 index 0000000..e528db9 --- /dev/null +++ b/rubygem-timecop-0.7.1-Use-minitest.patch @@ -0,0 +1,253 @@ +From c30897f67ad90f0582c0ed0d7b78f46a7142f113 Mon Sep 17 00:00:00 2001 +From: Travis Jeffery +Date: Sat, 10 May 2014 01:16:30 -0500 +Subject: [PATCH] Use minitest + +--- + test/test_helper.rb | 6 ++-- + test/time_stack_item_test.rb | 10 ++----- + test/timecop_test.rb | 40 +++++++++++-------------- + test/timecop_without_date_but_with_time_test.rb | 10 ++--- + test/timecop_without_date_test.rb | 8 ++--- + 5 files changed, 32 insertions(+), 42 deletions(-) + +diff --git a/test/test_helper.rb b/test/test_helper.rb +index 2d7852e..e2b059a 100644 +--- a/test/test_helper.rb ++++ b/test/test_helper.rb +@@ -1,14 +1,14 @@ + require 'rubygems' + require 'bundler/setup' +-require 'test/unit' ++require 'minitest/autorun' ++ + begin + require 'mocha/setup' + rescue LoadError + require 'mocha' + end + +-class Test::Unit::TestCase +- ++class MiniTest::Unit::TestCase + private + # Tests to see that two times are within the given distance, + # in seconds, from each other. +diff --git a/test/time_stack_item_test.rb b/test/time_stack_item_test.rb +index f654fa1..3658127 100644 +--- a/test/time_stack_item_test.rb ++++ b/test/time_stack_item_test.rb +@@ -4,7 +4,7 @@ + + require 'active_support/all' + +-class TestTimeStackItem < Test::Unit::TestCase ++class TestTimeStackItem < MiniTest::Unit::TestCase + def teardown + Timecop.return + Time.zone = nil +@@ -204,16 +204,12 @@ def test_parse_only_string_with_active_support + end + + def test_parse_date +- assert_nothing_raised do +- Timecop.freeze(Date.new(2012, 6, 9)) +- end ++ Timecop.freeze(Date.new(2012, 6, 9)) + end + + def test_time_zone_returns_nil + Time.zone = nil +- assert_nothing_raised do +- Timecop.freeze +- end ++ Timecop.freeze + end + + def test_nsecs_are_set +diff --git a/test/timecop_test.rb b/test/timecop_test.rb +index e954329..e5f7d79 100644 +--- a/test/timecop_test.rb ++++ b/test/timecop_test.rb +@@ -2,7 +2,7 @@ + require File.join(File.dirname(__FILE__), "test_helper") + require File.join(File.dirname(__FILE__), '..', 'lib', 'timecop') + +-class TestTimecop < Test::Unit::TestCase ++class TestTimecop < MiniTest::Unit::TestCase + def teardown + Timecop.return + end +@@ -60,7 +60,7 @@ def test_travel_does_not_reduce_precision_of_datetime + # requires to_r on Float (>= 1.9) + if Float.method_defined?(:to_r) + Timecop.travel(1) +- assert_not_equal DateTime.now, DateTime.now ++ assert DateTime.now != DateTime.now + end + end + +@@ -113,7 +113,7 @@ def test_recursive_freeze + end + assert_equal t, Time.now + end +- assert_not_equal t, Time.now ++ assert t != Time.now + end + + def test_freeze_with_time_instance_works_as_expected +@@ -124,9 +124,9 @@ def test_freeze_with_time_instance_works_as_expected + assert_equal Date.new(2008, 10, 10), Date.today + end + +- assert_not_equal t, Time.now +- assert_not_equal DateTime.new(2008, 10, 10, 10, 10, 10, local_offset), DateTime.now +- assert_not_equal Date.new(2008, 10, 10), Date.today ++ assert t != Time.now ++ assert DateTime.new(2008, 10, 10, 10, 10, 10, local_offset) != DateTime.now ++ assert Date.new(2008, 10, 10) != Date.today + end + + def test_freeze_with_datetime_on_specific_timezone_during_dst +@@ -185,9 +185,9 @@ def test_freeze_with_date_instance_works_as_expected + assert_equal Time.local(2008, 10, 10, 0, 0, 0), Time.now + assert_date_times_equal DateTime.new(2008, 10, 10, 0, 0, 0, local_offset), DateTime.now + end +- assert_not_equal d, Date.today +- assert_not_equal Time.local(2008, 10, 10, 0, 0, 0), Time.now +- assert_not_equal DateTime.new(2008, 10, 10, 0, 0, 0, local_offset), DateTime.now ++ assert d != Date.today ++ assert Time.local(2008, 10, 10, 0, 0, 0) != Time.now ++ assert DateTime.new(2008, 10, 10, 0, 0, 0, local_offset) != DateTime.now + end + + def test_freeze_with_integer_instance_works_as_expected +@@ -202,9 +202,9 @@ def test_freeze_with_integer_instance_works_as_expected + assert_equal Date.new(2008, 10, 10), Date.today + end + end +- assert_not_equal t, Time.now +- assert_not_equal DateTime.new(2008, 10, 10, 10, 10, 10), DateTime.now +- assert_not_equal Date.new(2008, 10, 10), Date.today ++ assert t != Time.now ++ assert DateTime.new(2008, 10, 10, 10, 10, 10) != DateTime.now ++ assert Date.new(2008, 10, 10) != Date.today + end + + def test_exception_thrown_in_freeze_block_properly_resets_time +@@ -215,7 +215,7 @@ def test_exception_thrown_in_freeze_block_properly_resets_time + raise "blah exception" + end + rescue +- assert_not_equal t, Time.now ++ assert t != Time.now + assert_nil Time.send(:mock_time) + end + end +@@ -252,7 +252,7 @@ def test_mocked_date_time_now_is_local + if ENV['TZ'] == 'UTC' + assert_equal(local_offset, 0, "Local offset not be zero for #{ENV['TZ']}") + else +- assert_not_equal(local_offset, 0, "Local offset should not be zero for #{ENV['TZ']}") ++ assert(local_offset, 0 != "Local offset should not be zero for #{ENV['TZ']}") + end + assert_equal local_offset, DateTime.now.offset, "Failed for timezone: #{ENV['TZ']}" + end +@@ -442,7 +442,7 @@ def test_mock_time_new_same_as_now + end + + def test_not_callable_send_travel +- assert_raise NoMethodError do ++ assert_raises NoMethodError do + Timecop.send_travel(:travel, Time.now - 100) + end + end +@@ -466,7 +466,7 @@ def test_datetime_to_time_for_dst_to_non_dst + + def test_raises_when_safe_mode_and_no_block + with_safe_mode do +- assert_raise Timecop::SafeModeException do ++ assert_raises Timecop::SafeModeException do + Timecop.freeze + end + end +@@ -474,17 +474,13 @@ def test_raises_when_safe_mode_and_no_block + + def test_no_raise_when_safe_mode_and_block_used + with_safe_mode do +- assert_nothing_raised do +- Timecop.freeze {} +- end ++ Timecop.freeze {} + end + end + + def test_no_raise_when_not_safe_mode_and_no_block + with_safe_mode(false) do +- assert_nothing_raised do +- Timecop.freeze +- end ++ Timecop.freeze + end + end + +diff --git a/test/timecop_without_date_but_with_time_test.rb b/test/timecop_without_date_but_with_time_test.rb +index 9531afd..5f47a31 100644 +--- a/test/timecop_without_date_but_with_time_test.rb ++++ b/test/timecop_without_date_but_with_time_test.rb +@@ -1,12 +1,10 @@ +-require "test/unit" ++require File.join(File.dirname(__FILE__), "test_helper") + +-class TestTimecopWithoutDateButWithTime < Test::Unit::TestCase ++class TestTimecopWithoutDateButWithTime < MiniTest::Unit::TestCase + TIMECOP_LIB = File.join(File.dirname(__FILE__), '..', 'lib', 'timecop') + + def test_loads_properly_when_time_is_required_instead_of_date +- assert_nothing_raised do +- require "time" +- require TIMECOP_LIB +- end ++ require "time" ++ require TIMECOP_LIB + end + end +diff --git a/test/timecop_without_date_test.rb b/test/timecop_without_date_test.rb +index 018a2ff..a6f9a0e 100644 +--- a/test/timecop_without_date_test.rb ++++ b/test/timecop_without_date_test.rb +@@ -2,7 +2,7 @@ + require File.join(File.dirname(__FILE__), "test_helper") + require File.join(File.dirname(__FILE__), '..', 'lib', 'timecop') + +-class TestTimecopWithoutDate < Test::Unit::TestCase ++class TestTimecopWithoutDate < MiniTest::Unit::TestCase + + def setup + Object.send(:remove_const, :Date) if Object.const_defined?(:Date) +@@ -19,11 +19,11 @@ def test_freeze_changes_and_resets_time + assert !Time.respond_to?(:zone) || Time.zone.nil? + + t = Time.local(2008, 10, 10, 10, 10, 10) +- assert_not_equal t, Time.now ++ assert t != Time.now + Timecop.freeze(2008, 10, 10, 10, 10, 10) do + assert_equal t, Time.now + end +- assert_not_equal t, Time.now ++ assert t != Time.now + end + + def test_recursive_freeze +@@ -47,7 +47,7 @@ def test_exception_thrown_in_freeze_block_properly_resets_time + raise "blah exception" + end + rescue +- assert_not_equal t, Time.now ++ assert t != Time.now + assert_nil Time.send(:mock_time) + end + end +-- +1.9.3 + diff --git a/rubygem-timecop.spec b/rubygem-timecop.spec new file mode 100644 index 0000000..f06ad0a --- /dev/null +++ b/rubygem-timecop.spec @@ -0,0 +1,59 @@ +%global gem_name timecop +Summary: Provides a unified method to mock Time.now, Date.today in a single call +Name: rubygem-%{gem_name} +Version: 0.7.1 +Release: 1 +License: MIT +URL: https://github.com/travisjeffery/timecop +Source0: http://rubygems.org/downloads/timecop-%{version}.gem +Patch0: rubygem-timecop-0.7.1-Use-minitest.patch +BuildRequires: rubygems-devel rubygem(activesupport) rubygem(minitest) rubygem(mocha) +BuildArch: noarch +%description +A gem providing "time travel" and "time freezing" capabilities, making it dead +simple to test time-dependent code. It provides a unified method to mock +Time.now, Date.today, and DateTime.now in a single call. + +%package doc +Summary: Documentation for %{name} +Requires: %{name} = %{version}-%{release} +%description doc +Documentation for %{name}. + +%prep +%setup -q -c -T +%gem_install -n %{SOURCE0} +pushd .%{gem_instdir} +%patch0 -p1 +popd + +%build + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot}%{gem_dir} +cp -va ./%{gem_dir}/* %{buildroot}%{gem_dir} +chmod a+x %{buildroot}%{gem_instdir}/test/run_tests.sh + +%check +pushd .%{gem_instdir}/test +sed -i '/bundler\/setup/ s/^/#/' test_helper.rb +./run_tests.sh +popd + +%files +%dir %{gem_instdir} +%{gem_libdir} +%doc %{gem_instdir}/LICENSE +%doc %{gem_instdir}/README.markdown +%exclude %{gem_cache} +%{gem_spec} + +%files doc +%{gem_instdir}/test +%{gem_instdir}/Rakefile +%{gem_docdir} + +%changelog +* Fri Aug 7 2020 yanan li - 0.7.1-1 +- Package init diff --git a/rubygem-timecop.yaml b/rubygem-timecop.yaml new file mode 100644 index 0000000..4c593d3 --- /dev/null +++ b/rubygem-timecop.yaml @@ -0,0 +1,5 @@ +git_url: https://github.com/travisjeffery/timecop.git +version_control: github +src_repo: travisjeffery/timecop +tag_prefix: "^v" +seperator: "." diff --git a/timecop-0.7.1.gem b/timecop-0.7.1.gem new file mode 100644 index 0000000000000000000000000000000000000000..66866a045ed050355ec2d77fe6463b9e6b8a785a GIT binary patch literal 15360 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 literal 0 HcmV?d00001