Hello community, here is the log from the commit of package rubygem-execjs for openSUSE:Factory checked in at 2015-03-09 10:09:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-execjs (Old) and /work/SRC/openSUSE:Factory/.rubygem-execjs.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-execjs" Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-execjs/rubygem-execjs.changes 2015-02-11 16:45:32.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-execjs.new/rubygem-execjs.changes 2015-03-09 10:09:48.000000000 +0100 @@ -1,0 +2,5 @@ +Fri Mar 6 05:31:26 UTC 2015 - co...@suse.com + +- updated to version 2.4.0 + +------------------------------------------------------------------- Old: ---- execjs-2.3.0.gem New: ---- execjs-2.4.0.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-execjs.spec ++++++ --- /var/tmp/diff_new_pack.CG60zf/_old 2015-03-09 10:09:49.000000000 +0100 +++ /var/tmp/diff_new_pack.CG60zf/_new 2015-03-09 10:09:49.000000000 +0100 @@ -24,7 +24,7 @@ # Name: rubygem-execjs -Version: 2.3.0 +Version: 2.4.0 Release: 0 %define mod_name execjs %define mod_full_name %{mod_name}-%{version} ++++++ execjs-2.3.0.gem -> execjs-2.4.0.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.md new/README.md --- old/README.md 2015-02-03 22:53:33.000000000 +0100 +++ new/README.md 2015-03-05 20:41:51.000000000 +0100 @@ -64,7 +64,7 @@ only count on ES3 features being available. Prefer feature checking these APIs rather than hard coding support for specific runtimes. -**Can I ExecJS be used to sandbox scripts?** +**Can ExecJS be used to sandbox scripts?** No, ExecJS shouldn't be used for any security related sandboxing. Since runtimes are automatically detected, each runtime has different sandboxing properties. Files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/execjs/external_runtime.rb new/lib/execjs/external_runtime.rb --- old/lib/execjs/external_runtime.rb 2015-02-03 22:53:33.000000000 +0100 +++ new/lib/execjs/external_runtime.rb 2015-03-05 20:41:51.000000000 +0100 @@ -24,12 +24,12 @@ def exec(source, options = {}) source = encode(source) - source = "#{@source}\n#{source}" if @source + source = "#{@source}\n#{source}" if @source != "" source = @runtime.compile_source(source) tmpfile = write_to_tempfile(source) begin - extract_result(@runtime.exec_runtime(tmpfile.path)) + extract_result(@runtime.exec_runtime(tmpfile.path), tmpfile.path) ensure File.unlink(tmpfile) end @@ -57,14 +57,25 @@ tmpfile end - def extract_result(output) - status, value = output.empty? ? [] : ::JSON.parse(output, create_additions: false) + def extract_result(output, filename) + status, value, stack = output.empty? ? [] : ::JSON.parse(output, create_additions: false) if status == "ok" value - elsif value =~ /SyntaxError:/ - raise RuntimeError, value else - raise ProgramError, value + stack ||= "" + real_filename = File.realpath(filename) + stack = stack.split("\n").map do |line| + line.sub(" at ", "") + .sub(real_filename, "(execjs)") + .sub(filename, "(execjs)") + .strip + end + stack.reject! { |line| ["eval code", "eval@[native code]"].include?(line) } + stack.shift unless stack[0].to_s.include?("(execjs)") + error_class = value =~ /SyntaxError:/ ? RuntimeError : ProgramError + error = error_class.new(value) + error.set_backtrace(stack + caller) + raise error end end end @@ -158,7 +169,7 @@ if $?.success? output else - raise RuntimeError, output + raise exec_runtime_error(output) end end @@ -181,7 +192,7 @@ if $?.success? output else - raise RuntimeError, output + raise exec_runtime_error(output) end end else @@ -193,13 +204,22 @@ if $?.success? output else - raise RuntimeError, output + raise exec_runtime_error(output) end end end # Internally exposed for Context. public :exec_runtime + def exec_runtime_error(output) + error = RuntimeError.new(output) + lines = output.split("\n") + lineno = lines[0][/:(\d+)$/, 1] if lines[0] + lineno ||= 1 + error.set_backtrace(["(execjs):#{lineno}"] + caller) + error + end + def which(command) Array(command).find do |name| name, args = name.split(/\s+/, 2) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/execjs/ruby_racer_runtime.rb new/lib/execjs/ruby_racer_runtime.rb --- old/lib/execjs/ruby_racer_runtime.rb 2015-02-03 22:53:33.000000000 +0100 +++ new/lib/execjs/ruby_racer_runtime.rb 2015-03-05 20:41:51.000000000 +0100 @@ -12,11 +12,7 @@ begin @v8_context.eval(source) rescue ::V8::JSError => e - if e.value["name"] == "SyntaxError" - raise RuntimeError, e.value.to_s - else - raise ProgramError, e.value.to_s - end + raise wrap_error(e) end end end @@ -37,11 +33,7 @@ begin unbox @v8_context.eval("(#{source})") rescue ::V8::JSError => e - if e.value["name"] == "SyntaxError" - raise RuntimeError, e.value.to_s - else - raise ProgramError, e.value.to_s - end + raise wrap_error(e) end end end @@ -52,11 +44,7 @@ begin unbox @v8_context.eval(properties).call(*args) rescue ::V8::JSError => e - if e.value["name"] == "SyntaxError" - raise RuntimeError, e.value.to_s - else - raise ProgramError, e.value.to_s - end + raise wrap_error(e) end end end @@ -96,6 +84,20 @@ result end end + + def wrap_error(e) + error_class = e.value["name"] == "SyntaxError" ? RuntimeError : ProgramError + + stack = e.value["stack"] || "" + stack = stack.split("\n") + stack.shift + stack = [e.message[/<eval>:\d+:\d+/, 0]].compact if stack.empty? + stack = stack.map { |line| line.sub(" at ", "").sub("<eval>", "(execjs)").strip } + + error = error_class.new(e.value.to_s) + error.set_backtrace(stack + caller) + error + end end def name diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/execjs/ruby_rhino_runtime.rb new/lib/execjs/ruby_rhino_runtime.rb --- old/lib/execjs/ruby_rhino_runtime.rb 2015-02-03 22:53:33.000000000 +0100 +++ new/lib/execjs/ruby_rhino_runtime.rb 2015-03-05 20:41:51.000000000 +0100 @@ -10,7 +10,7 @@ fix_memory_limit! @rhino_context @rhino_context.eval(source) rescue Exception => e - reraise_error(e) + raise wrap_error(e) end def exec(source, options = {}) @@ -28,13 +28,13 @@ unbox @rhino_context.eval("(#{source})") end rescue Exception => e - reraise_error(e) + raise wrap_error(e) end def call(properties, *args) unbox @rhino_context.eval(properties).call(*args) rescue Exception => e - reraise_error(e) + raise wrap_error(e) end def unbox(value) @@ -58,17 +58,18 @@ end end - def reraise_error(e) - case e - when ::Rhino::JSError - if e.message == "syntax error" - raise RuntimeError, e.message - else - raise ProgramError, e.message - end - else - raise e - end + def wrap_error(e) + return e unless e.is_a?(::Rhino::JSError) + + error_class = e.message == "syntax error" ? RuntimeError : ProgramError + + stack = e.backtrace + stack = stack.map { |line| line.sub(" at ", "").sub("<eval>", "(execjs)").strip } + stack.unshift("(execjs):1") if e.javascript_backtrace.empty? + + error = error_class.new(e.value.to_s) + error.set_backtrace(stack) + error end private diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/execjs/support/jsc_runner.js new/lib/execjs/support/jsc_runner.js --- old/lib/execjs/support/jsc_runner.js 2015-02-03 22:53:33.000000000 +0100 +++ new/lib/execjs/support/jsc_runner.js 2015-03-05 20:41:51.000000000 +0100 @@ -9,10 +9,10 @@ try { print(JSON.stringify(['ok', result])); } catch (err) { - print('["err"]'); + print(JSON.stringify(['err', '' + err, err.stack])); } } } catch (err) { - print(JSON.stringify(['err', '' + err])); + print(JSON.stringify(['err', '' + err, err.stack])); } }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/execjs/support/jscript_runner.js new/lib/execjs/support/jscript_runner.js --- old/lib/execjs/support/jscript_runner.js 2015-02-03 22:53:33.000000000 +0100 +++ new/lib/execjs/support/jscript_runner.js 2015-03-05 20:41:51.000000000 +0100 @@ -13,10 +13,10 @@ try { print(JSON.stringify(['ok', result])); } catch (err) { - print('["err"]'); + print(JSON.stringify(['err', err.name + ': ' + err.message, err.stack])); } } } catch (err) { - print(JSON.stringify(['err', err.name + ': ' + err.message])); + print(JSON.stringify(['err', err.name + ': ' + err.message, err.stack])); } }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/execjs/support/node_runner.js new/lib/execjs/support/node_runner.js --- old/lib/execjs/support/node_runner.js 2015-02-03 22:53:33.000000000 +0100 +++ new/lib/execjs/support/node_runner.js 2015-03-05 20:41:51.000000000 +0100 @@ -11,10 +11,10 @@ try { print(JSON.stringify(['ok', result])); } catch (err) { - print('["err"]'); + print(JSON.stringify(['err', '' + err, err.stack])); } } } catch (err) { - print(JSON.stringify(['err', '' + err])); + print(JSON.stringify(['err', '' + err, err.stack])); } }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/execjs/support/spidermonkey_runner.js new/lib/execjs/support/spidermonkey_runner.js --- old/lib/execjs/support/spidermonkey_runner.js 2015-02-03 22:53:33.000000000 +0100 +++ new/lib/execjs/support/spidermonkey_runner.js 2015-03-05 20:41:51.000000000 +0100 @@ -9,10 +9,10 @@ try { print(JSON.stringify(['ok', result])); } catch (err) { - print('["err"]'); + print(JSON.stringify(['err', '' + err, err.stack])); } } } catch (err) { - print(JSON.stringify(['err', '' + err])); + print(JSON.stringify(['err', '' + err, err.stack])); } }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/execjs/version.rb new/lib/execjs/version.rb --- old/lib/execjs/version.rb 2015-02-03 22:53:33.000000000 +0100 +++ new/lib/execjs/version.rb 2015-03-05 20:41:51.000000000 +0100 @@ -1,3 +1,3 @@ module ExecJS - VERSION = "2.3.0" + VERSION = "2.4.0" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2015-02-03 22:53:33.000000000 +0100 +++ new/metadata 2015-03-05 20:41:51.000000000 +0100 @@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: execjs version: !ruby/object:Gem::Version - version: 2.3.0 + version: 2.4.0 platform: ruby authors: - Sam Stephenson @@ -9,7 +9,7 @@ autorequire: bindir: bin cert_chain: [] -date: 2015-02-03 00:00:00.000000000 Z +date: 2015-03-05 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: rake @@ -70,7 +70,7 @@ version: '0' requirements: [] rubyforge_project: -rubygems_version: 2.2.2 +rubygems_version: 2.4.5 signing_key: specification_version: 4 summary: Run JavaScript code from Ruby -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org