1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-02-23 21:24:20 +00:00

Merge pull request #2248 from redapple/scrapy-shell-import-scrapy

[MRG+1] Make scrapy available in shell without explicit import statement
This commit is contained in:
Mikhail Korobov 2016-09-17 06:10:06 +06:00 committed by GitHub
commit 992b2517b0
2 changed files with 11 additions and 0 deletions

View File

@ -115,6 +115,9 @@ class Shell(object):
self.populate_vars(response, request, spider)
def populate_vars(self, response=None, request=None, spider=None):
import scrapy
self.vars['scrapy'] = scrapy
self.vars['crawler'] = self.crawler
self.vars['item'] = self.item_class()
self.vars['settings'] = self.crawler.settings
@ -136,6 +139,7 @@ class Shell(object):
def get_help(self):
b = []
b.append("Available Scrapy objects:")
b.append(" scrapy scrapy module (contains scrapy.Request, scrapy.Selector, etc)")
for k, v in sorted(self.vars.items()):
if self._is_relevant(v):
b.append(" %-10s %s" % (k, v))

View File

@ -56,6 +56,13 @@ class ShellTest(ProcessTest, SiteTest, unittest.TestCase):
errcode, out, _ = yield self.execute(['-c', code.format(url)])
self.assertEqual(errcode, 0, out)
@defer.inlineCallbacks
def test_scrapy_import(self):
url = self.url('/text')
code = "fetch(scrapy.Request('{0}'))"
errcode, out, _ = yield self.execute(['-c', code.format(url)])
self.assertEqual(errcode, 0, out)
@defer.inlineCallbacks
def test_local_file(self):
filepath = join(tests_datadir, 'test_site/index.html')