[前][次][番号順一覧][スレッド一覧]

ruby-changes:49271

From: hsbt <ko1@a...>
Date: Thu, 21 Dec 2017 18:22:22 +0900 (JST)
Subject: [ruby-changes:49271] hsbt:r61388 (trunk): Merge release version of bundler-1.16.1 from upstream.

hsbt	2017-12-21 18:22:15 +0900 (Thu, 21 Dec 2017)

  New Revision: 61388

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=61388

  Log:
    Merge release version of bundler-1.16.1 from upstream.

  Modified files:
    trunk/lib/bundler/resolver.rb
    trunk/lib/bundler/version.rb
    trunk/lib/bundler.gemspec
    trunk/spec/bundler/commands/exec_spec.rb
    trunk/spec/bundler/commands/newgem_spec.rb
    trunk/spec/bundler/commands/pristine_spec.rb
    trunk/spec/bundler/commands/update_spec.rb
    trunk/spec/bundler/install/gemfile/sources_spec.rb
    trunk/spec/bundler/realworld/double_check_spec.rb
    trunk/spec/bundler/runtime/gem_tasks_spec.rb
    trunk/spec/bundler/runtime/require_spec.rb
    trunk/spec/bundler/runtime/setup_spec.rb
    trunk/spec/bundler/runtime/with_clean_env_spec.rb
    trunk/spec/bundler/spec_helper.rb
    trunk/spec/bundler/support/hax.rb
    trunk/spec/bundler/support/helpers.rb
Index: lib/bundler.gemspec
===================================================================
--- lib/bundler.gemspec	(revision 61387)
+++ lib/bundler.gemspec	(revision 61388)
@@ -1,10 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/lib/bundler.gemspec#L1
 # coding: utf-8
 # frozen_string_literal: true
 
-version = File.expand_path("../lib/bundler/version", __FILE__)
-if File.file?(version)
-  require version
-else # for Ruby core repository
+begin
+  require File.expand_path("../lib/bundler/version", __FILE__)
+rescue LoadError # for Ruby core repository
   require File.expand_path("../bundler/version", __FILE__)
 end
 require "shellwords"
Index: lib/bundler/version.rb
===================================================================
--- lib/bundler/version.rb	(revision 61387)
+++ lib/bundler/version.rb	(revision 61388)
@@ -7,7 +7,7 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/version.rb#L7
   # We're doing this because we might write tests that deal
   # with other versions of bundler and we are unsure how to
   # handle this better.
-  VERSION = "1.16.1.pre1" unless defined?(::Bundler::VERSION)
+  VERSION = "1.16.1" unless defined?(::Bundler::VERSION)
 
   def self.overwrite_loaded_gem_version
     begin
Index: lib/bundler/resolver.rb
===================================================================
--- lib/bundler/resolver.rb	(revision 61387)
+++ lib/bundler/resolver.rb	(revision 61388)
@@ -306,6 +306,8 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/resolver.rb#L306
         :solver_name => "Bundler",
         :possibility_type => "gem",
         :reduce_trees => lambda do |trees|
+          # bail out if tree size is too big for Array#combination to make any sense
+          return trees if trees.size > 15
           maximal = 1.upto(trees.size).map do |size|
             trees.map(&:last).flatten(1).combination(size).to_a
           end.flatten(1).select do |deps|
Index: spec/bundler/commands/update_spec.rb
===================================================================
--- spec/bundler/commands/update_spec.rb	(revision 61387)
+++ spec/bundler/commands/update_spec.rb	(revision 61388)
@@ -657,7 +657,7 @@ RSpec.describe "bundle update --bundler" https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/update_spec.rb#L657
       source "file:#{gem_repo4}"
       gem "rack"
     G
-    lockfile lockfile.sub(Bundler::VERSION, "1.0.0")
+    lockfile lockfile.sub(/(^\s*)#{Bundler::VERSION}($)/, '\11.0.0\2')
 
     FileUtils.rm_r gem_repo4
 
Index: spec/bundler/commands/newgem_spec.rb
===================================================================
--- spec/bundler/commands/newgem_spec.rb	(revision 61387)
+++ spec/bundler/commands/newgem_spec.rb	(revision 61388)
@@ -191,7 +191,7 @@ RSpec.describe "bundle gem" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/newgem_spec.rb#L191
 
   it "generates a valid gemspec" do
     in_app_root
-    bundle "gem newgem --bin"
+    bundle! "gem newgem --bin"
 
     process_file(bundled_app("newgem", "newgem.gemspec")) do |line|
       # Simulate replacing TODOs with real values
@@ -211,7 +211,9 @@ RSpec.describe "bundle gem" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/newgem_spec.rb#L211
     end
 
     Dir.chdir(bundled_app("newgem")) do
-      system_gems ["rake-10.0.2"], :path => :bundle_path
+      gems = ["rake-10.0.2", :bundler]
+      gems.delete(:bundler) if ENV["BUNDLE_RUBY"] && ENV["BUNDLE_GEM"]
+      system_gems gems, :path => :bundle_path
       bundle! "exec rake build"
     end
 
Index: spec/bundler/commands/exec_spec.rb
===================================================================
--- spec/bundler/commands/exec_spec.rb	(revision 61387)
+++ spec/bundler/commands/exec_spec.rb	(revision 61388)
@@ -29,7 +29,7 @@ RSpec.describe "bundle exec" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/exec_spec.rb#L29
       gem "rack"
     G
 
-    bundle "exec 'cd #{tmp("gems")} && rackup'"
+    bundle "exec 'cd #{tmp("gems")} && rackup'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
 
     expect(out).to include("1.0.0")
   end
@@ -42,7 +42,7 @@ RSpec.describe "bundle exec" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/exec_spec.rb#L42
 
   it "works when exec'ing to ruby" do
     install_gemfile 'gem "rack"'
-    bundle "exec ruby -e 'puts %{hi}'"
+    bundle "exec ruby -e 'puts %{hi}'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
     expect(out).to eq("hi")
   end
 
@@ -76,7 +76,9 @@ RSpec.describe "bundle exec" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/exec_spec.rb#L76
     G
 
     install_gemfile ""
-    sys_exec("#{Gem.ruby} #{command.path}")
+    with_env_vars "RUBYOPT" => "-r#{spec_dir.join("support/hax")}" do
+      sys_exec "#{Gem.ruby} #{command.path}"
+    end
 
     if Bundler.current_ruby.ruby_2?
       expect(out).to eq("")
@@ -237,7 +239,7 @@ RSpec.describe "bundle exec" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/exec_spec.rb#L239
     G
     [true, false].each do |l|
       bundle! "config disable_exec_load #{l}"
-      bundle "exec rackup"
+      bundle "exec rackup", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
       expect(last_command.stderr).to include "rack is not part of the bundle. Add it to your Gemfile."
     end
   end
@@ -339,14 +341,14 @@ RSpec.describe "bundle exec" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/exec_spec.rb#L341
       end
 
       it "works when unlocked", :ruby_repo do
-        bundle "exec 'cd #{tmp("gems")} && rackup'"
+        bundle "exec 'cd #{tmp("gems")} && rackup'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
         expect(out).to eq("1.0.0")
         expect(out).to include("1.0.0")
       end
 
       it "works when locked", :ruby_repo do
         expect(the_bundle).to be_locked
-        bundle "exec 'cd #{tmp("gems")} && rackup'"
+        bundle "exec 'cd #{tmp("gems")} && rackup'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
         expect(out).to include("1.0.0")
       end
     end
@@ -472,7 +474,7 @@ RSpec.describe "bundle exec" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/exec_spec.rb#L474
       Bundler.rubygems.extend(Monkey)
       G
       bundle "install --deployment"
-      bundle "exec ruby -e '`#{bindir.join("bundler")} -v`; puts $?.success?'"
+      bundle "exec ruby -e '`#{bindir.join("bundler")} -v`; puts $?.success?'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
       expect(out).to match("true")
     end
   end
@@ -512,7 +514,7 @@ RSpec.describe "bundle exec" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/exec_spec.rb#L514
     let(:expected) { [exec, args, rack, process].join("\n") }
     let(:expected_err) { "" }
 
-    subject { bundle "exec #{path} arg1 arg2" }
+    subject { bundle "exec #{path} arg1 arg2", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" } }
 
     shared_examples_for "it runs" do
       it "like a normally executed executable" do
@@ -550,6 +552,7 @@ RSpec.describe "bundle exec" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/exec_spec.rb#L552
         ex << "raise SignalException, 'SIGTERM'\n"
         ex
       end
+      let(:expected_err) { ENV["TRAVIS"] ? "Terminated" : "" }
       let(:exit_code) do
         # signal mask 128 + plus signal 15 -> TERM
         # this is specified by C99
@@ -778,10 +781,13 @@ __FILE__: #{path.to_s.inspect} https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/exec_spec.rb#L781
         file.chmod(0o777)
 
         aggregate_failures do
-          expect(bundle!("exec #{file}", :system_bundler => true, :artifice => nil)).to eq(expected)
-          expect(bundle!("exec bundle exec #{file}", :system_bundler => true, :artifice => nil)).to eq(expected)
-          expect(bundle!("exec ruby #{file}", :system_bundler => true, :artifice => nil)).to eq(expected)
-          expect(run!(file.read, :no_lib => true, :artifice => nil)).to eq(expected)
+          expect(bundle!("exec #{file}", :artifice => nil)).to eq(expected)
+          expect(bundle!("exec bundle exec #{file}", :artifice => nil)).to eq(expected)
+          expect(bundle!("exec ruby #{file}", :artifice => nil)).to eq(expected)
+          # Ignore expectaion for default bundler gem conflict.
+          unless ENV["BUNDLER_SPEC_SUB_VERSION"]
+            expect(run!(file.read, :no_lib => true, :artifice => nil)).to eq(expected)
+          end
         end
 
         # sanity check that we get the newer, custom version without bundler
Index: spec/bundler/commands/pristine_spec.rb
===================================================================
--- spec/bundler/commands/pristine_spec.rb	(revision 61387)
+++ spec/bundler/commands/pristine_spec.rb	(revision 61388)
@@ -41,11 +41,14 @@ RSpec.describe "bundle pristine", :ruby_ https://github.com/ruby/ruby/blob/trunk/spec/bundler/commands/pristine_spec.rb#L41
     end
 
     it "does not delete the bundler gem", :ruby_repo do
+      ENV["BUNDLER_SPEC_KEEP_DEFAULT_BUNDLER_GEM"] = "true"
       system_gems :bundler
       bundle! "install"
       bundle! "pristine", :system_bundler => true
       bundle! "-v", :system_bundler => true
-      expect(out).to end_with(Bundler::VERSION)
+      # An old rubygems couldn't handle a correct version of vendoered bundler.
+      bundler_version = Gem::VERSION < "2.1" ? "1.16.0" : Bundler::VERSION
+      expect(out).to end_with(bundler_version)
     end
   end
 
Index: spec/bundler/runtime/require_spec.rb
===================================================================
--- spec/bundler/runtime/require_spec.rb	(revision 61387)
+++ spec/bundler/runtime/require_spec.rb	(revision 61388)
@@ -264,13 +264,13 @@ RSpec.describe "Bundler.require" do https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/require_spec.rb#L264
 
   describe "using bundle exec" do
     it "requires the locked gems" do
-      bundle "exec ruby -e 'Bundler.require'"
+      bundle "exec ruby -e 'Bundler.require'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
       expect(out).to eq("two")
 
-      bundle "exec ruby -e 'Bundler.require(:bar)'"
+      bundle "exec ruby -e 'Bundler.require(:bar)'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
       expect(out).to eq("baz\nqux")
 
-      bundle "exec ruby -e 'Bundler.require(:default, :bar)'"
+      bundle "exec ruby -e 'Bundler.require(:default, :bar)'", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
       expect(out).to eq("baz\nqux\ntwo")
     end
   end
Index: spec/bundler/runtime/gem_tasks_spec.rb
===================================================================
--- spec/bundler/runtime/gem_tasks_spec.rb	(revision 61387)
+++ spec/bundler/runtime/gem_tasks_spec.rb	(revision 61388)
@@ -36,7 +36,9 @@ RSpec.describe "require 'bundler/gem_tas https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/gem_tasks_spec.rb#L36
   end
 
   it "adds 'pkg' to rake/clean's CLOBBER" do
-    require "bundler/gem_tasks"
-    expect(CLOBBER).to include("pkg")
+    with_gem_path_as(Spec::Path.base_system_gems.to_s) do
+      sys_exec! %(#{rake} -e 'load "Rakefile"; puts CLOBBER.inspect')
+    end
+    expect(last_command.stdout).to eq '["pkg"]'
   end
 end
Index: spec/bundler/runtime/setup_spec.rb
===================================================================
--- spec/bundler/runtime/setup_spec.rb	(revision 61387)
+++ spec/bundler/runtime/setup_spec.rb	(revision 61388)
@@ -763,7 +763,7 @@ end https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/setup_spec.rb#L763
     G
 
     ENV["GEM_HOME"] = ""
-    bundle %(exec ruby -e "require 'set'")
+    bundle %(exec ruby -e "require 'set'"), :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
 
     expect(err).to lack_errors
   end
@@ -1078,7 +1078,7 @@ end https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/setup_spec.rb#L1078
         gem "bundler", :path => "#{File.expand_path("..", lib)}"
       G
 
-      bundle %(exec ruby -e "require 'bundler'; Bundler.setup")
+      bundle %(exec ruby -e "require 'bundler'; Bundler.setup"), :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
       expect(err).to lack_errors
     end
   end
@@ -1236,6 +1236,7 @@ end https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/setup_spec.rb#L1236
       end
 
       let(:activation_warning_hack) { strip_whitespace(<<-RUBY) }
+        require #{spec_dir.join("support/hax").to_s.dump}
         require "rubygems"
 
         if Gem::Specification.instance_methods.map(&:to_sym).include?(:activate)
@@ -1279,8 +1280,9 @@ end https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/setup_spec.rb#L1280
 
       it "activates no gems with bundle exec" do
         install_gemfile! ""
+        # ensure we clean out the default gems, bceause bundler's allowed to be activated
         create_file("script.rb", code)
-        bundle! "exec ruby ./script.rb", :env => { :RUBYOPT => activation_warning_hack_rubyopt }
+        bundle! "exec ruby ./script.rb", :env => { :RUBYOPT => activation_warning_hack_rubyopt + " -rbundler/setup" }
         expect(last_command.stdout).to eq("{}")
       end
 
Index: spec/bundler/runtime/with_clean_env_spec.rb
===================================================================
--- spec/bundler/runtime/with_clean_env_spec.rb	(revision 61387)
+++ spec/bundler/runtime/with_clean_env_spec.rb	(revision 61388)
@@ -1,6 +1,14 @@ https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/with_clean_env_spec.rb#L1
 # frozen_string_literal: true
 
 RSpec.describe "Bundler.with_env helpers" do
+  def bundle_exec_ruby!(code, *args)
+    opts = args.last.is_a?(Hash) ? args.pop : {}
+    env = opts[:env] ||= {}
+    env[:RUBYOPT] ||= "-r#{spec_dir.join("support/hax")}"
+    args.push opts
+    bundle! "exec '#{Gem.ruby}' -e #{code}", *args
+  end
+
   describe "Bundler.original_env" do
     before do
       bundle "config path vendor/bundle"
@@ -12,8 +20,8 @@ RSpec.describe "Bundler.with_env helpers https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/with_clean_env_spec.rb#L20
       code = "print Bundler.original_env['PATH']"
       path = `getconf PATH`.strip + "#{File::PATH_SEPARATOR}/foo"
       with_path_as(path) do
-        result = bundle("exec '#{Gem.ruby}' -e #{code.dump}")
-        expect(result).to eq(path)
+        bundle_exec_ruby!(code.dump)
+        expect(last_command.stdboth).to eq(path)
       end
     end
 
@@ -21,8 +29,8 @@ RSpec.describe "Bundler.with_env helpers https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/with_clean_env_spec.rb#L29
       code = "print Bundler.original_env['GEM_PATH']"
       gem_path = ENV["GEM_PATH"] + ":/foo"
       with_gem_path_as(gem_path) do
-        result = bundle("exec '#{Gem.ruby}' -e #{code.inspect}")
-        expect(result).to eq(gem_path)
+        bundle_exec_ruby!(code.dump)
+        expect(last_command.stdboth).to eq(gem_path)
       end
     end
 
@@ -38,7 +46,7 @@ RSpec.describe "Bundler.with_env helpers https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/with_clean_env_spec.rb#L46
       RB
       path = `getconf PATH`.strip + File::PATH_SEPARATOR + File.dirname(Gem.ruby)
       with_path_as(path) do
-        bundle!("exec '#{Gem.ruby}' #{bundled_app("exe.rb")} 2")
+        bundle! "exec '#{Gem.ruby}' #{bundled_app("exe.rb")} 2", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
       end
       expect(err).to eq <<-EOS.strip
 2 false
@@ -48,10 +56,9 @@ RSpec.describe "Bundler.with_env helpers https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/with_clean_env_spec.rb#L56
     end
 
     it "removes variables that bundler added", :ruby_repo do
-      system_gems :bundler
-      original = ruby!('puts ENV.to_a.map {|e| e.join("=") }.sort.join("\n")')
+      original = ruby!('puts ENV.to_a.map {|e| e.join("=") }.sort.join("\n")', :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" })
       code = 'puts Bundler.original_env.to_a.map {|e| e.join("=") }.sort.join("\n")'
-      bundle!("exec '#{Gem.ruby}' -e #{code.inspect}", :system_bundler => true)
+      bundle! "exec '#{Gem.ruby}' -e #{code.dump}", :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
       expect(out).to eq original
     end
   end
@@ -66,30 +73,30 @@ RSpec.describe "Bundler.with_env helpers https://github.com/ruby/ruby/blob/trunk/spec/bundler/runtime/with_clean_env_spec.rb#L73
     it "should delete BUNDLE_PATH" do
       code = "print Bundler.clean_env.has_key?('BUNDLE_PATH')"
       ENV["BUNDLE_PATH"] = "./foo"
-      result = bundle("exec '#{Gem.ruby}' -e #{code.inspect}")
-      expect(result).to eq("false")
+      bundle_exec_ruby! code.dump
+      expect(last_command.stdboth).to eq "false"
     end
 
     it "should remove '-rbundler/setup' from RUBYOPT" do
       code = "print Bundler.clean_env['RUBYOPT']"
       ENV["RUBYOPT"] = "-W2 -rbundler/setup"
-      result = bundle("exec '#{Gem.ruby}' -e #{code.inspect}")
-      expect(result).not_to include("-rbundler/setup")
+      bundle_exec_ruby! code.dump
+      expect(last_command.stdboth).not_to include("-rbundler/setup")
     end
 
     it "should clean up RUBYLIB", :ruby_repo do
       code = "print Bundler.clean_env['RUBYLIB']"
       ENV["RUBYLIB"] = root.join("lib").to_s + File::PATH_SEPARATOR + "/foo"
-      result = bundle("exec '#{Gem.ruby}' -e #{code.inspect}")
-      expect(result).to eq("/foo")
+      bundle_exec_ruby! code.dump
+      expect(last_command.stdboth).to eq("/foo")
     end
 
     it "should restore the original MANPATH" do
       code = "print Bundler.clean_env['MANPATH']"
       ENV["MANPATH"] = "/foo"
       ENV["BUNDLER_ORIG_MANPATH"] = "/foo-original"
-      result = bundle("exec '#{Gem.ruby}' -e #{code.inspect}")
-      expect(result).to eq("/foo-original")
+      bundle_exec_ruby! code.dump
+      expect(last_command.stdboth).to eq("/foo-original")
     end
   end
 
Index: spec/bundler/install/gemfile/sources_spec.rb
===================================================================
--- spec/bundler/install/gemfile/sources_spec.rb	(revision 61387)
+++ spec/bundler/install/gemfile/sources_spec.rb	(revision 61388)
@@ -435,12 +435,11 @@ RSpec.describe "bundle install with gems https://github.com/ruby/ruby/blob/trunk/spec/bundler/install/gemfile/sources_spec.rb#L435
       end
 
       it "does not unlock the non-path gem after install" do
-        bundle :install
+        bundle! :install
 
-        bundle %(exec ruby -e 'puts "OK"')
+        bundle! %(exec ruby -e 'puts "OK"'), :env => { :RUBYOPT => "-r#{spec_dir.join("support/hax")}" }
 
         expect(out).to include("OK")
-        expect(exitstatus).to eq(0) if exitstatus
       end
     end
   end
Index: spec/bundler/realworld/double_check_spec.rb
===================================================================
--- spec/bundler/realworld/double_check_spec.rb	(revision 61387)
+++ spec/bundler/realworld/double_check_spec.rb	(revision 61388)
@@ -1,42 +1,40 @@ https://github.com/ruby/ruby/blob/trunk/spec/bundler/realworld/double_check_spec.rb#L1
 # frozen_string_literal: true
 
 RSpec.describe "double checking sources", :realworld => true do
-  if RUBY_VERSION >= "2.2" # rails 5.x and rack 2.x only supports >= Ruby 2.2.
-    it "finds already-installed gems" do
-      create_file("rails.gemspec", <<-RUBY)
-        Gem::Specification.new do |s|
-          s.name        = "rails"
-          s.version     = "5.1.4"
-          s.summary     = ""
-          s.description = ""
-          s.author      = ""
-          s.add_dependency "actionpack", "5.1.4"
-        end
-      RUBY
+  it "finds already-installed gems", :ruby => ">= 2.2" do
+    create_file("rails.gemspec", <<-RUBY)
+      Gem::Specification.new do |s|
+        s.name        = "rails"
+        s.version     = "5.1. (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]