Hello community,
here is the log from the commit of package rubygem-power_assert for openSUSE:Factory checked in at 2016-05-29 03:11:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-power_assert (Old)
and /work/SRC/openSUSE:Factory/.rubygem-power_assert.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-power_assert"
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-power_assert/rubygem-power_assert.changes 2016-03-01 09:40:27.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.rubygem-power_assert.new/rubygem-power_assert.changes 2016-05-29 03:12:41.000000000 +0200
@@ -1,0 +2,6 @@
+Wed May 4 04:42:55 UTC 2016 - coolo@suse.com
+
+- updated to version 0.3.0
+ no changelog found
+
+-------------------------------------------------------------------
Old:
----
power_assert-0.2.7.gem
New:
----
power_assert-0.3.0.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-power_assert.spec ++++++
--- /var/tmp/diff_new_pack.SHzlrb/_old 2016-05-29 03:12:42.000000000 +0200
+++ /var/tmp/diff_new_pack.SHzlrb/_new 2016-05-29 03:12:42.000000000 +0200
@@ -24,7 +24,7 @@
#
Name: rubygem-power_assert
-Version: 0.2.7
+Version: 0.3.0
Release: 0
%define mod_name power_assert
%define mod_full_name %{mod_name}-%{version}
++++++ power_assert-0.2.7.gem -> power_assert-0.3.0.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.travis.yml new/.travis.yml
--- old/.travis.yml 2016-01-09 03:25:22.000000000 +0100
+++ new/.travis.yml 2016-05-03 07:41:31.000000000 +0200
@@ -1,9 +1,9 @@
language: ruby
rvm:
- - 2.0.0
- - 2.1
- - 2.2
- - 2.3.0
+ - 2.0.0-p648
+ - 2.1.10
+ - 2.2.5
+ - 2.3.1
- ruby-head
matrix:
allow_failures:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/BSDL new/BSDL
--- old/BSDL 2016-01-09 03:25:22.000000000 +0100
+++ new/BSDL 2016-05-03 07:41:31.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright (C) 2014-2015 Kazuki Tsujimoto, All rights reserved.
+Copyright (C) 2014-2016 Kazuki Tsujimoto, All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/COPYING new/COPYING
--- old/COPYING 2016-01-09 03:25:22.000000000 +0100
+++ new/COPYING 2016-05-03 07:41:31.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright (C) 2014-2015 Kazuki Tsujimoto, All rights reserved.
+Copyright (C) 2014-2016 Kazuki Tsujimoto, All rights reserved.
You can redistribute it and/or modify it under either the terms of the
2-clause BSDL (see the file BSDL), or the conditions below:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Rakefile new/Rakefile
--- old/Rakefile 2016-01-09 03:25:22.000000000 +0100
+++ new/Rakefile 2016-05-03 07:41:31.000000000 +0200
@@ -7,3 +7,10 @@
t.ruby_opts = ["-w", "-r./test/helper"]
t.test_files = FileList["test/test_*.rb"]
end
+
+desc "Run the benchmark suite"
+task('benchmark') do
+ Dir.glob('benchmarks/bm_*.rb').each do |f|
+ load(f)
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/benchmarks/bm_yhpg.rb new/benchmarks/bm_yhpg.rb
--- old/benchmarks/bm_yhpg.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/benchmarks/bm_yhpg.rb 2016-05-03 07:41:31.000000000 +0200
@@ -0,0 +1,59 @@
+# Yhpg
+# https://gist.github.com/yancya/37d79e02a91afcfdeed1
+#
+# Auhtor: yancya
+
+require_relative 'helper'
+
+class Yhpg
+ MAPPING = [*'0'..'9', *'A'..'Z', *'a'..'z']
+
+ def initialize(data)
+ @n, @list = data.split(":").tap { |n, list| break [n.to_i, list.split(",").map { |str| Yhpg.decode(str) }] }
+ x_nominee = @list.map { |x, _| x }.map { |x| [x, x + 1] }.flatten.tap { |a| a.push(*[0, 62])}.uniq
+ y_nominee = @list.map { |_, y| y }.map { |y| [y, y + 1] }.flatten.tap { |a| a.push(*[0, 62])}.uniq
+ x_range_patterns = x_nominee.combination(2).map { |a| (a.min..a.max) }
+ y_range_patterns = y_nominee.combination(2).map { |a| (a.min..a.max) }
+ squares = x_range_patterns.product(y_range_patterns)
+ targets = squares.select { |xrange, yrange| @list.select { |p| check(xrange, yrange, p) }.size == @n }
+ @areas = targets.map { |x, y| [(x.max - x.min) * (y.max - y.min), x, y] }
+ end
+
+ def debug
+ p [@areas.min_by(&:first), @areas.max_by(&:first)]
+ end
+
+ def Yhpg.decode(str)
+ str.chars.map { |w| MAPPING.index(w) }
+ end
+
+ def check(xrange, yrange, target)
+ x, y = target
+ (xrange.include?(x) && xrange.include?(x + 1)) &&
+ (yrange.include?(y) && yrange.include?(y + 1))
+ end
+
+ def output
+ case res = [@areas.map(&:first).min, @areas.map(&:first).max].join(',')
+ when ','
+ '-'
+ else
+ res
+ end
+ end
+end
+
+[
+ ["4:00,11,zz,yy,1y,y1", "3600,3721"], # /*05*/
+].each do |(actual, expect)|
+ Benchmark.bm(30) do |x|
+ x.report("expr") { Yhpg.new(actual).output == expect }
+ x.report("TracePoint.trace { expr }") { TracePoint.new(:return, :c_return) {}.enable { Yhpg.new(actual).output == expect } }
+ x.report("assertion_message { expr }") {
+ assertion_message { Yhpg.new(actual).output == expect }
+ }
+ x.report("assertion_message { !expr }") {
+ assertion_message { not Yhpg.new(actual).output == expect }
+ }
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/benchmarks/helper.rb new/benchmarks/helper.rb
--- old/benchmarks/helper.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/benchmarks/helper.rb 2016-05-03 07:41:31.000000000 +0200
@@ -0,0 +1,8 @@
+require 'benchmark'
+require 'power_assert'
+
+def assertion_message(source = nil, source_binding = TOPLEVEL_BINDING, &blk)
+ ::PowerAssert.start(source || blk, assertion_method: __callee__, source_binding: source_binding) do |pa|
+ pa.message unless pa.yield
+ end
+end
Files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/power_assert/version.rb new/lib/power_assert/version.rb
--- old/lib/power_assert/version.rb 2016-01-09 03:25:22.000000000 +0100
+++ new/lib/power_assert/version.rb 2016-05-03 07:41:31.000000000 +0200
@@ -1,3 +1,3 @@
module PowerAssert
- VERSION = "0.2.7"
+ VERSION = "0.3.0"
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/power_assert.rb new/lib/power_assert.rb
--- old/lib/power_assert.rb 2016-01-09 03:25:22.000000000 +0100
+++ new/lib/power_assert.rb 2016-05-03 07:41:31.000000000 +0200
@@ -1,6 +1,6 @@
# power_assert.rb
#
-# Copyright (C) 2014-2015 Kazuki Tsujimoto, All rights reserved.
+# Copyright (C) 2014-2016 Kazuki Tsujimoto, All rights reserved.
begin
captured = false
@@ -22,7 +22,7 @@
module PowerAssert
class << self
def configuration
- @configuration ||= Configuration[false]
+ @configuration ||= Configuration[false, false]
end
def configure
@@ -45,7 +45,7 @@
end
end
- Configuration = Struct.new(:lazy_inspection)
+ Configuration = Struct.new(:lazy_inspection, :_trace_alias_method)
private_constant :Configuration
module Empty
@@ -90,7 +90,7 @@
Ident = Struct.new(:type, :name, :column)
TARGET_CALLER_DIFF = {return: 5, c_return: 4}
- TARGET_INDEX_OFFSET = {bmethod: 3, method: 2}
+ TARGET_INDEX_OFFSET = 2
attr_reader :message_proc
@@ -111,40 +111,54 @@
@base_caller_length = -1
@assertion_method_name = assertion_method.to_s
@message_proc = -> {
- return nil if @base_caller_length < 0
+ raise RuntimeError, 'call #yield at first' if @base_caller_length < 0
@message ||= build_assertion_message(@line || '', methods || [], return_values, refs || [], @assertion_proc.binding).freeze
}
@proc_local_variables = @assertion_proc.binding.eval('local_variables').map(&:to_s)
target_thread = Thread.current
+ @trace_call = TracePoint.new(:call, :c_call) do |tp|
+ next if @base_caller_length < 0
+ locs = caller_locations
+ if locs.length >= @base_caller_length+TARGET_INDEX_OFFSET and Thread.current == target_thread
+ idx = -(@base_caller_length+TARGET_INDEX_OFFSET)
+ path = locs[idx].path
+ lineno = locs[idx].lineno
+ @line ||= open(path).each_line.drop(lineno - 1).first
+ idents = extract_idents(Ripper.sexp(@line))
+ methods, refs = idents.partition {|i| i.type == :method }
+ method_ids = methods.map(&:name).map(&:to_sym).each_with_object({}) {|i, h| h[i] = true }
+ @trace_call.disable
+ end
+ end
+ trace_alias_method = PowerAssert.configuration._trace_alias_method
@trace = TracePoint.new(:return, :c_return) do |tp|
- next if method_ids and ! method_ids.include?(tp.method_id)
+ method_id = (trace_alias_method &&
+ tp.event == :return &&
+ tp.binding.eval('::Kernel.__callee__')) || tp.method_id
+ next if method_ids and ! method_ids[method_id]
next unless tp.binding # workaround for ruby 2.2
+ if tp.event == :c_return
+ loc = tp.binding.eval('[__LINE__, __FILE__]')
+ next unless lineno == loc[0] and path == loc[1]
+ end
locs = tp.binding.eval('::Kernel.caller_locations')
current_diff = locs.length - @base_caller_length
- target_diff = TARGET_CALLER_DIFF[tp.event]
- is_target_bmethod = current_diff < target_diff
- if (is_target_bmethod or current_diff == target_diff) and Thread.current == target_thread
- idx = target_diff - TARGET_INDEX_OFFSET[is_target_bmethod ? :bmethod : :method]
- unless path
- path = locs[idx].path
- lineno = locs[idx].lineno
- @line ||= open(path).each_line.drop(lineno - 1).first
- idents = extract_idents(Ripper.sexp(@line))
- methods, refs = idents.partition {|i| i.type == :method }
- method_ids = methods.map(&:name).map(&:to_sym).uniq
- end
+ if current_diff <= TARGET_CALLER_DIFF[tp.event] and Thread.current == target_thread
+ idx = -(@base_caller_length+TARGET_INDEX_OFFSET)
if path == locs[idx].path and lineno == locs[idx].lineno
val = PowerAssert.configuration.lazy_inspection ?
tp.return_value :
InspectedValue.new(SafeInspectable.new(tp.return_value).inspect)
- return_values << Value[tp.method_id.to_s, val, nil]
+ return_values << Value[method_id.to_s, val, nil]
end
end
end
end
def yield
- do_yield(&@assertion_proc)
+ @trace_call.enable do
+ do_yield(&@assertion_proc)
+ end
end
def message
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2016-01-09 03:25:22.000000000 +0100
+++ new/metadata 2016-05-03 07:41:31.000000000 +0200
@@ -1,14 +1,14 @@
--- !ruby/object:Gem::Specification
name: power_assert
version: !ruby/object:Gem::Version
- version: 0.2.7
+ version: 0.3.0
platform: ruby
authors:
- Kazuki Tsujimoto
autorequire:
bindir: bin
cert_chain: []
-date: 2016-01-09 00:00:00.000000000 Z
+date: 2016-05-03 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: test-unit
@@ -70,6 +70,8 @@
- LEGAL
- README.rdoc
- Rakefile
+- benchmarks/bm_yhpg.rb
+- benchmarks/helper.rb
- lib/power_assert.rb
- lib/power_assert/enable_tracepoint_events.rb
- lib/power_assert/version.rb
@@ -99,7 +101,7 @@
version: '0'
requirements: []
rubyforge_project:
-rubygems_version: 2.5.1
+rubygems_version: 2.6.4
signing_key:
specification_version: 4
summary: Power Assert for Ruby
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/test_power_assert.rb new/test/test_power_assert.rb
--- old/test/test_power_assert.rb 2016-01-09 03:25:22.000000000 +0100
+++ new/test/test_power_assert.rb 2016-05-03 07:41:31.000000000 +0200
@@ -4,6 +4,13 @@
require 'set'
class TestPowerAssert < Test::Unit::TestCase
+ class << self
+ def t(msg='', &blk)
+ loc = caller_locations(1, 1)[0]
+ test("#{loc.path} --location #{loc.lineno} #{msg}", &blk)
+ end
+ end
+
EXTRACT_METHODS_TEST = [
[[[:method, "c", 4], [:method, "b", 2], [:method, "d", 8], [:method, "a", 0]],
'a(b(c), d)'],
@@ -148,194 +155,215 @@
false
end
- def test_lazy_inspection
- PowerAssert.configure do |c|
- assert !c.lazy_inspection
- end
- assert_equal <