{"action":"created","issue":{"url":"https://api.github.com/repos/jupyter/repo2docker/issues/229","repository_url":"https://api.github.com/repos/jupyter/repo2docker","labels_url":"https://api.github.com/repos/jupyter/repo2docker/issues/229/labels{/name}","comments_url":"https://api.github.com/repos/jupyter/repo2docker/issues/229/comments","events_url":"https://api.github.com/repos/jupyter/repo2docker/issues/229/events","html_url":"https://github.com/jupyter/repo2docker/pull/229","id":295901289,"number":229,"title":"instantiate Repo2Docker to run tests","user":{"login":"minrk","id":151929,"avatar_url":"https://avatars1.githubusercontent.com/u/151929?v=4","gravatar_id":"","url":"https://api.github.com/users/minrk","html_url":"https://github.com/minrk","followers_url":"https://api.github.com/users/minrk/followers","following_url":"https://api.github.com/users/minrk/following{/other_user}","gists_url":"https://api.github.com/users/minrk/gists{/gist_id}","starred_url":"https://api.github.com/users/minrk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/minrk/subscriptions","organizations_url":"https://api.github.com/users/minrk/orgs","repos_url":"https://api.github.com/users/minrk/repos","events_url":"https://api.github.com/users/minrk/events{/privacy}","received_events_url":"https://api.github.com/users/minrk/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2018-02-09T15:07:54Z","updated_at":"2018-02-12T19:24:19Z","closed_at":"2018-02-12T19:24:11Z","author_association":"OWNER","pull_request":{"url":"https://api.github.com/repos/jupyter/repo2docker/pulls/229","html_url":"https://github.com/jupyter/repo2docker/pull/229","diff_url":"https://github.com/jupyter/repo2docker/pull/229.diff","patch_url":"https://github.com/jupyter/repo2docker/pull/229.patch"},"body":"instead of launching a subprocess for each test. This greatly improves failure reporting. For example a bug that raises an error now looks like:\r\n\r\n```\r\n======================================================================================================================================================================= test session starts =======================================================================================================================================================================\r\nplatform darwin -- Python 3.6.3, pytest-3.4.0, py-1.5.2, pluggy-0.6.0\r\nrootdir: /Users/benjaminrk/dev/jpy/hub/repo2docker, inifile:\r\nplugins: tornado-0.4.5, cov-2.5.1, nbval-0.7\r\ncollected 1 item\r\n\r\nvenv/default/verify F                                                                                                                                                                                                                                                                                                                                       [100%]\r\n\r\n============================================================================================================================================================================ FAILURES =============================================================================================================================================================================\r\n________________________________________________________________________________________________________________________________________________________________________________  _________________________________________________________________________________________________________________________________________________________________________________\r\n\r\n    def test():\r\n        app = Repo2Docker()\r\n        app.initialize(args)\r\n>       app.start()\r\n\r\n../../conftest.py:33:\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n../../../repo2docker/app.py:560: in start\r\n    self.log.debug(picked_buildpack.render(),\r\n../../../repo2docker/buildpacks/base.py:303: in render\r\n    packages=sorted(self.get_packages()),\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nself = <repo2docker.buildpacks.python.PythonBuildPack object at 0x10fd94b00>\r\n\r\n    def get_packages(self):\r\n>       oops\r\nE       NameError: name 'oops' is not defined\r\n\r\n../../../repo2docker/buildpacks/python/__init__.py:10: NameError\r\n```\r\n\r\ninstead of master's current report of the same bug:\r\n\r\n```\r\n======================================================================================================================================================================= test session starts =======================================================================================================================================================================\r\nplatform darwin -- Python 3.6.3, pytest-3.4.0, py-1.5.2, pluggy-0.6.0\r\nrootdir: /Users/benjaminrk/dev/jpy/hub/repo2docker, inifile:\r\nplugins: tornado-0.4.5, cov-2.5.1, nbval-0.7\r\ncollected 1 item\r\n\r\nvenv/default/verify F                                                                                                                                                                                                                                                                                                                                       [100%]\r\n\r\n============================================================================================================================================================================ FAILURES =============================================================================================================================================================================\r\n________________________________________________________________________________________________________________________________________________________________________________  _________________________________________________________________________________________________________________________________________________________________________________\r\n\r\nself = <CallInfo when='call' exception: Command '['jupyter-repo2docker', '/Users/benjaminrk/dev/jpy/hub/repo2docker/tests/venv/default', './verify']' returned non-zero exit status 1.>, func = <function call_runtest_hook.<locals>.<lambda> at 0x1100ca598>, when = 'call'\r\n\r\n    def __init__(self, func, when):\r\n        #: context of invocation: one of \"setup\", \"call\",\r\n        #: \"teardown\", \"memocollect\"\r\n        self.when = when\r\n        self.start = time()\r\n        try:\r\n>           self.result = func()\r\n\r\n../../../../../conda/lib/python3.6/site-packages/_pytest/runner.py:192:\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\n>   return CallInfo(lambda: ihook(item=item, **kwds), when=when)\r\n\r\n../../../../../conda/lib/python3.6/site-packages/_pytest/runner.py:178:\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nself = <_HookCaller 'pytest_runtest_call'>, args = (), kwargs = {'item': <LocalRepoTest 'verify'>}, notincall = set()\r\n\r\n    def __call__(self, *args, **kwargs):\r\n        if args:\r\n            raise TypeError(\"hook calling supports only keyword arguments\")\r\n        assert not self.is_historic()\r\n        if self.argnames:\r\n            notincall = set(self.argnames) - set(['__multicall__']) - set(\r\n                kwargs.keys())\r\n            if notincall:\r\n                warnings.warn(\r\n                    \"Argument(s) {} which are declared in the hookspec \"\r\n                    \"can not be found in this hook call\"\r\n                    .format(tuple(notincall)),\r\n                    stacklevel=2,\r\n                )\r\n>       return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)\r\n\r\n../../../../../conda/lib/python3.6/site-packages/pluggy/__init__.py:617:\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nself = <_pytest.config.PytestPluginManager object at 0x10d448f98>, hook = <_HookCaller 'pytest_runtest_call'>, methods = [<pluggy.HookImpl object at 0x10dc075f8>, <pluggy.HookImpl object at 0x1100537b8>, <pluggy.HookImpl object at 0x1100d8b00>], kwargs = {'item': <LocalRepoTest 'verify'>}\r\n\r\n    def _hookexec(self, hook, methods, kwargs):\r\n        # called from all hookcaller instances.\r\n        # enable_tracing will set its own wrapping function at self._inner_hookexec\r\n>       return self._inner_hookexec(hook, methods, kwargs)\r\n\r\n../../../../../conda/lib/python3.6/site-packages/pluggy/__init__.py:222:\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nhook = <_HookCaller 'pytest_runtest_call'>, methods = [<pluggy.HookImpl object at 0x10dc075f8>, <pluggy.HookImpl object at 0x1100537b8>, <pluggy.HookImpl object at 0x1100d8b00>], kwargs = {'item': <LocalRepoTest 'verify'>}\r\n\r\n    self._inner_hookexec = lambda hook, methods, kwargs: \\\r\n        hook.multicall(\r\n            methods, kwargs,\r\n>           firstresult=hook.spec_opts.get('firstresult'),\r\n        )\r\n\r\n../../../../../conda/lib/python3.6/site-packages/pluggy/__init__.py:216:\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nhook_impls = [<pluggy.HookImpl object at 0x10dc075f8>, <pluggy.HookImpl object at 0x1100537b8>, <pluggy.HookImpl object at 0x1100d8b00>], caller_kwargs = {'item': <LocalRepoTest 'verify'>}, firstresult = False\r\n\r\n    def _multicall(hook_impls, caller_kwargs, firstresult=False):\r\n        \"\"\"Execute a call into multiple python functions/methods and return the\r\n        result(s).\r\n\r\n        ``caller_kwargs`` comes from _HookCaller.__call__().\r\n        \"\"\"\r\n        __tracebackhide__ = True\r\n        results = []\r\n        excinfo = None\r\n        try:  # run impl and wrapper setup functions in a loop\r\n            teardowns = []\r\n            try:\r\n                for hook_impl in reversed(hook_impls):\r\n                    try:\r\n                        args = [caller_kwargs[argname] for argname in hook_impl.argnames]\r\n                    except KeyError:\r\n                        for argname in hook_impl.argnames:\r\n                            if argname not in caller_kwargs:\r\n                                raise HookCallError(\r\n                                    \"hook call must provide argument %r\" % (argname,))\r\n\r\n                    if hook_impl.hookwrapper:\r\n                        try:\r\n                            gen = hook_impl.function(*args)\r\n                            next(gen)   # first yield\r\n                            teardowns.append(gen)\r\n                        except StopIteration:\r\n                            _raise_wrapfail(gen, \"did not yield\")\r\n                    else:\r\n                        res = hook_impl.function(*args)\r\n                        if res is not None:\r\n                            results.append(res)\r\n                            if firstresult:  # halt further impl calls\r\n                                break\r\n            except BaseException:\r\n                excinfo = sys.exc_info()\r\n        finally:\r\n            if firstresult:  # first result hooks return a single value\r\n                outcome = _Result(results[0] if results else None, excinfo)\r\n            else:\r\n                outcome = _Result(results, excinfo)\r\n\r\n            # run all wrapper post-yield blocks\r\n            for gen in reversed(teardowns):\r\n                try:\r\n                    gen.send(outcome)\r\n                    _raise_wrapfail(gen, \"has second yield\")\r\n                except StopIteration:\r\n                    pass\r\n\r\n>           return outcome.get_result()\r\n\r\n../../../../../conda/lib/python3.6/site-packages/pluggy/callers.py:201:\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nself = <pluggy.callers._Result object at 0x1100eac50>\r\n\r\n    def get_result(self):\r\n        \"\"\"Get the result(s) for this hook call.\r\n\r\n            If the hook was marked as a ``firstresult`` only a single value\r\n            will be returned otherwise a list of results.\r\n            \"\"\"\r\n        __tracebackhide__ = True\r\n        if self._excinfo is None:\r\n            return self._result\r\n        else:\r\n            ex = self._excinfo\r\n            if _py3:\r\n>               raise ex[1].with_traceback(ex[2])\r\n\r\n../../../../../conda/lib/python3.6/site-packages/pluggy/callers.py:76:\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nhook_impls = [<pluggy.HookImpl object at 0x10dc075f8>, <pluggy.HookImpl object at 0x1100537b8>, <pluggy.HookImpl object at 0x1100d8b00>], caller_kwargs = {'item': <LocalRepoTest 'verify'>}, firstresult = False\r\n\r\n    def _multicall(hook_impls, caller_kwargs, firstresult=False):\r\n        \"\"\"Execute a call into multiple python functions/methods and return the\r\n        result(s).\r\n\r\n        ``caller_kwargs`` comes from _HookCaller.__call__().\r\n        \"\"\"\r\n        __tracebackhide__ = True\r\n        results = []\r\n        excinfo = None\r\n        try:  # run impl and wrapper setup functions in a loop\r\n            teardowns = []\r\n            try:\r\n                for hook_impl in reversed(hook_impls):\r\n                    try:\r\n                        args = [caller_kwargs[argname] for argname in hook_impl.argnames]\r\n                    except KeyError:\r\n                        for argname in hook_impl.argnames:\r\n                            if argname not in caller_kwargs:\r\n                                raise HookCallError(\r\n                                    \"hook call must provide argument %r\" % (argname,))\r\n\r\n                    if hook_impl.hookwrapper:\r\n                        try:\r\n                            gen = hook_impl.function(*args)\r\n                            next(gen)   # first yield\r\n                            teardowns.append(gen)\r\n                        except StopIteration:\r\n                            _raise_wrapfail(gen, \"did not yield\")\r\n                    else:\r\n>                       res = hook_impl.function(*args)\r\n\r\n../../../../../conda/lib/python3.6/site-packages/pluggy/callers.py:180:\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nitem = <LocalRepoTest 'verify'>\r\n\r\n    def pytest_runtest_call(item):\r\n        _update_current_test_var(item, 'call')\r\n        try:\r\n>           item.runtest()\r\n\r\n../../../../../conda/lib/python3.6/site-packages/_pytest/runner.py:109:\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nself = <LocalRepoTest 'verify'>\r\n\r\n    def runtest(self):\r\n        subprocess.check_call([\r\n            'jupyter-repo2docker',\r\n            str(self.path.dirname),\r\n>           './verify'\r\n        ])\r\n\r\nconftest.py:37:\r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\npopenargs = (['jupyter-repo2docker', '/Users/benjaminrk/dev/jpy/hub/repo2docker/tests/venv/default', './verify'],), kwargs = {}, retcode = 1, cmd = ['jupyter-repo2docker', '/Users/benjaminrk/dev/jpy/hub/repo2docker/tests/venv/default', './verify']\r\n\r\n    def check_call(*popenargs, **kwargs):\r\n        \"\"\"Run command with arguments.  Wait for command to complete.  If\r\n        the exit code was zero then return, otherwise raise\r\n        CalledProcessError.  The CalledProcessError object will have the\r\n        return code in the returncode attribute.\r\n\r\n        The arguments are the same as for the call function.  Example:\r\n\r\n        check_call([\"ls\", \"-l\"])\r\n        \"\"\"\r\n        retcode = call(*popenargs, **kwargs)\r\n        if retcode:\r\n            cmd = kwargs.get(\"args\")\r\n            if cmd is None:\r\n                cmd = popenargs[0]\r\n>           raise CalledProcessError(retcode, cmd)\r\nE           subprocess.CalledProcessError: Command '['jupyter-repo2docker', '/Users/benjaminrk/dev/jpy/hub/repo2docker/tests/venv/default', './verify']' returned non-zero exit status 1.\r\n\r\n../../../../../conda/lib/python3.6/subprocess.py:291: CalledProcessError\r\n---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Captured stderr call -----------------------------------------------------------------------------------------------------------------------------------------------------------------------\r\nTraceback (most recent call last):\r\n  File \"/Users/benjaminrk/conda/bin/jupyter-repo2docker\", line 11, in <module>\r\n    load_entry_point('jupyter-repo2docker', 'console_scripts', 'jupyter-repo2docker')()\r\n  File \"/Users/benjaminrk/dev/jpy/hub/repo2docker/repo2docker/__main__.py\", line 6, in main\r\n    f.start()\r\n  File \"/Users/benjaminrk/dev/jpy/hub/repo2docker/repo2docker/app.py\", line 557, in start\r\n    self.log.debug(picked_buildpack.render(),\r\n  File \"/Users/benjaminrk/dev/jpy/hub/repo2docker/repo2docker/buildpacks/base.py\", line 303, in render\r\n    packages=sorted(self.get_packages()),\r\n  File \"/Users/benjaminrk/dev/jpy/hub/repo2docker/repo2docker/buildpacks/python/__init__.py\", line 10, in get_packages\r\n    oops\r\nNameError: name 'oops' is not defined\r\n==================================================================================================================================================================== 1 failed in 6.70 seconds =====================================================================================================================================================================\r\n```\r\n\r\nIn addition, coverage is enabled and published to codecov on Travis. I bumped the test runs to Python 3.6 and fixed pip caching as well.\r\n\r\ncloses #195"},"comment":{"url":"https://api.github.com/repos/jupyter/repo2docker/issues/comments/365033490","html_url":"https://github.com/jupyter/repo2docker/pull/229#issuecomment-365033490","issue_url":"https://api.github.com/repos/jupyter/repo2docker/issues/229","id":365033490,"user":{"login":"yuvipanda","id":30430,"avatar_url":"https://avatars2.githubusercontent.com/u/30430?v=4","gravatar_id":"","url":"https://api.github.com/users/yuvipanda","html_url":"https://github.com/yuvipanda","followers_url":"https://api.github.com/users/yuvipanda/followers","following_url":"https://api.github.com/users/yuvipanda/following{/other_user}","gists_url":"https://api.github.com/users/yuvipanda/gists{/gist_id}","starred_url":"https://api.github.com/users/yuvipanda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yuvipanda/subscriptions","organizations_url":"https://api.github.com/users/yuvipanda/orgs","repos_url":"https://api.github.com/users/yuvipanda/repos","events_url":"https://api.github.com/users/yuvipanda/events{/privacy}","received_events_url":"https://api.github.com/users/yuvipanda/received_events","type":"User","site_admin":false},"created_at":"2018-02-12T19:24:19Z","updated_at":"2018-02-12T19:24:19Z","author_association":"MEMBER","body":"Much better! Thanks, @minrk! "}}
{"actor":{"display_login":"yuvipanda"}}