html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,issue,performed_via_github_app
https://github.com/simonw/datasette/issues/716#issuecomment-609461331,https://api.github.com/repos/simonw/datasette/issues/716,609461331,MDEyOklzc3VlQ29tbWVudDYwOTQ2MTMzMQ==,9599,2020-04-05T18:31:32Z,2020-04-05T20:04:08Z,OWNER,"The test ended up being a bit fiddly - here it is:
https://github.com/simonw/datasette/blob/09253817dea3c131553494f9b2eb9c03f94ae761/tests/test_plugins.py#L266-L317
I used `tmp_path_factory` here because the `tmpdir` fixture I usually use isn't compatible with `scope=""session""`, and I wanted to only create those temporary plugins and templates directories once rather than create them for each run of the parametrized test function.
In writing this I realized that the `name` on the `QueryView` class wasn't being used, because that class is currently just used for its `.data()` method:
https://github.com/simonw/datasette/blob/09253817dea3c131553494f9b2eb9c03f94ae761/datasette/views/database.py#L27-L31
https://github.com/simonw/datasette/blob/07e208cc6d9e901b87552c1be2854c220b3f9b6d/datasette/views/table.py#L224-L227
So I removed the `name = ""query""` line since it was misleading.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",594168758,
https://github.com/simonw/datasette/issues/716#issuecomment-609456030,https://api.github.com/repos/simonw/datasette/issues/716,609456030,MDEyOklzc3VlQ29tbWVudDYwOTQ1NjAzMA==,9599,2020-04-05T17:52:39Z,2020-04-05T20:02:13Z,OWNER,"Found it. Prior to that change I passed `view_name` to the callbacks like this:
https://github.com/simonw/datasette/blob/286ed286b68793532c2a38436a08343b45cfbc91/datasette/views/base.py#L114-L132
I switched over to doing this:
https://github.com/simonw/datasette/blob/07e208cc6d9e901b87552c1be2854c220b3f9b6d/datasette/views/base.py#L95-L97
But forgot to pass in the optional `view_name=` argument to that `render_template()` method:
https://github.com/simonw/datasette/blob/2aaad72789c427875426673c1a43e67c86fc970e/datasette/app.py#L554-L556
Next step: write a failing test, then fix it.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",594168758,
https://github.com/simonw/datasette/issues/716#issuecomment-609455243,https://api.github.com/repos/simonw/datasette/issues/716,609455243,MDEyOklzc3VlQ29tbWVudDYwOTQ1NTI0Mw==,9599,2020-04-05T17:47:33Z,2020-04-05T17:47:33Z,OWNER,"You start `git bisect` by giving it a known bad commit and a known good one:
```
git bisect start master 286ed28
```
Then you tell it to start running your script:
```
git bisect run python ../datasette-issue-716/check_view_name.py
```
Here's what I got:
```
(datasette) ~/Dropbox/Development/datasette $ git bisect start master 286ed28
Bisecting: 30 revisions left to test after this (roughly 5 steps)
[dc80e779a2e708b2685fc641df99e6aae9ad6f97] Handle scope path if it is a string
(datasette) ~/Dropbox/Development/datasette $ git bisect run python ../datasette-issue-716/check_view_name.py
running python ../datasette-issue-716/check_view_name.py
Traceback (most recent call last):
...
Bisecting: 15 revisions left to test after this (roughly 4 steps)
[7c6a9c35299f251f9abfb03fd8e85143e4361709] Better tests for prepare_connection() plugin hook, refs #678
running python ../datasette-issue-716/check_view_name.py
Traceback (most recent call last):
...
Bisecting: 7 revisions left to test after this (roughly 3 steps)
[0091dfe3e5a3db94af8881038d3f1b8312bb857d] More reliable tie-break ordering for facet results
running python ../datasette-issue-716/check_view_name.py
Traceback (most recent call last):
...
Bisecting: 3 revisions left to test after this (roughly 2 steps)
[ce12244037b60ba0202c814871218c1dab38d729] Release notes for 0.35
running python ../datasette-issue-716/check_view_name.py
Traceback (most recent call last):
...
Bisecting: 0 revisions left to test after this (roughly 1 step)
[4d7dae9eb75e5430c3ee3c369bb5cd9ba0a148bc] Added a bunch more plugins to the Ecosystem page
running python ../datasette-issue-716/check_view_name.py
Traceback (most recent call last):
...
70b915fb4bc214f9d064179f87671f8a378aa127 is the first bad commit
commit 70b915fb4bc214f9d064179f87671f8a378aa127
Author: Simon Willison
Date: Tue Feb 4 12:26:17 2020 -0800
Datasette.render_template() method, closes #577
Pull request #664.
:040000 040000 def9e31252e056845609de36c66d4320dd0c47f8 da19b7f8c26d50a4c05e5a7f05220b968429725c M datasette
bisect run success
```
So 70b915fb4bc214f9d064179f87671f8a378aa127 introduced the bug!","{""total_count"": 1, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 1, ""rocket"": 0, ""eyes"": 0}",594168758,
https://github.com/simonw/datasette/issues/716#issuecomment-609453886,https://api.github.com/repos/simonw/datasette/issues/716,609453886,MDEyOklzc3VlQ29tbWVudDYwOTQ1Mzg4Ng==,9599,2020-04-05T17:38:38Z,2020-04-05T17:42:14Z,OWNER,"OK, here's the test harness. Three files:
`check_view_name.py`
```python
import asyncio
import pathlib
from datasette.app import Datasette
import httpx
root = pathlib.Path(__file__).parent
async def run_check():
ds = Datasette(
[], template_dir=str(root / ""templates""), plugins_dir=str(root / ""plugins"")
)
async with httpx.AsyncClient(app=ds.app()) as client:
response = await client.get(""http://localhost/"")
assert 200 == response.status_code
assert b""view_name:index"" == response.content, response.content
if __name__ == ""__main__"":
loop = asyncio.get_event_loop()
loop.run_until_complete(run_check())
```
`templates/index.html`
```
view_name:{{ view_name }}
```
`plugins/extra_vars.py`
```python
from datasette import hookimpl
@hookimpl
def extra_template_vars(view_name):
return {""view_name"": view_name}
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",594168758,
https://github.com/simonw/datasette/issues/716#issuecomment-609454072,https://api.github.com/repos/simonw/datasette/issues/716,609454072,MDEyOklzc3VlQ29tbWVudDYwOTQ1NDA3Mg==,9599,2020-04-05T17:39:47Z,2020-04-05T17:39:47Z,OWNER,"`python check_view_name.py` against 286ed28 exits cleanly.
`python check_view_name.py` against current master (e0e7a0fa) fails:
```
$ python check_view_name.py
Traceback (most recent call last):
File ""check_view_name.py"", line 16, in
loop.run_until_complete(run_check())
File ""/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/base_events.py"", line 579, in run_until_complete
return future.result()
File ""check_view_name.py"", line 11, in run_check
assert b""view_name:index"" == response.content, response.content
AssertionError: b'view_name:None'
```
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",594168758,
https://github.com/simonw/datasette/issues/716#issuecomment-609109354,https://api.github.com/repos/simonw/datasette/issues/716,609109354,MDEyOklzc3VlQ29tbWVudDYwOTEwOTM1NA==,9599,2020-04-05T00:30:30Z,2020-04-05T00:31:55Z,OWNER,"In order to use `git bisect run` I need to write a standalone script that can tell if the bug is present or not.
I'm going to use something I can execute with `pytest`, inspired loosely by this code:
https://github.com/simonw/datasette/blob/7656fd64d8b6a32ebc34d89c1b8711cc5ea240f7/tests/test_plugins.py#L205-L227","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",594168758,
https://github.com/simonw/datasette/issues/716#issuecomment-609107679,https://api.github.com/repos/simonw/datasette/issues/716,609107679,MDEyOklzc3VlQ29tbWVudDYwOTEwNzY3OQ==,9599,2020-04-05T00:10:37Z,2020-04-05T00:11:06Z,OWNER,"Once I fix this bug I should update https://github.com/simonw/museums to deploy using the latest Datasette release as opposed to being anchored to 286ed28.
https://github.com/simonw/museums/blob/1bbed542617757e9e276a5098193d6288b7f421d/.github/workflows/push.yml#L61","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",594168758,
https://github.com/simonw/datasette/issues/716#issuecomment-609106252,https://api.github.com/repos/simonw/datasette/issues/716,609106252,MDEyOklzc3VlQ29tbWVudDYwOTEwNjI1Mg==,9599,2020-04-04T23:58:12Z,2020-04-04T23:58:12Z,OWNER,"I think I'll use `git bisect run` for this one, mainly to practice using it. https://git-scm.com/docs/git-bisect#_bisect_run","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",594168758,