home / github

Menu
  • Search all tables
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

4 rows where author_association = "OWNER" and issue = 466996584 sorted by updated_at descending

✖
✖
✖

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: reactions, created_at (date), updated_at (date)

user 1

  • simonw 4

issue 1

  • Get tests running on Windows using Travis CI · 4 ✖

author_association 1

  • OWNER · 4 ✖
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions issue performed_via_github_app
877717392 https://github.com/simonw/datasette/pull/557#issuecomment-877717392 https://api.github.com/repos/simonw/datasette/issues/557 MDEyOklzc3VlQ29tbWVudDg3NzcxNzM5Mg== simonw 9599 2021-07-10T23:39:48Z 2021-07-10T23:39:48Z OWNER

Abandoning this - need to switch to using GitHub Actions for this instead.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Get tests running on Windows using Travis CI 466996584  
511625212 https://github.com/simonw/datasette/pull/557#issuecomment-511625212 https://api.github.com/repos/simonw/datasette/issues/557 MDEyOklzc3VlQ29tbWVudDUxMTYyNTIxMg== simonw 9599 2019-07-16T01:12:14Z 2019-07-16T01:12:14Z OWNER

This looks useful for dealing with the The process cannot access the file because it is being used by another process error: https://stackoverflow.com/a/28032829

{
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Get tests running on Windows using Travis CI 466996584  
511624403 https://github.com/simonw/datasette/pull/557#issuecomment-511624403 https://api.github.com/repos/simonw/datasette/issues/557 MDEyOklzc3VlQ29tbWVudDUxMTYyNDQwMw== simonw 9599 2019-07-16T01:07:27Z 2019-07-16T01:10:24Z OWNER

Woohoo! That got the tests running on Windows. They're pretty slow there unfortunately... and I'm seeing some failures.

https://travis-ci.org/simonw/datasette/jobs/559205729 is the first run against Windows. ```

collected 353 items

tests\test_cli.py ... [ 0%] tests\test_black.py . [ 1%] tests\test_api.py ..........F........................................... [ 16%] .....s..F..................FF...............F...... [ 30%] tests\test_cli.py F [ 31%] tests\test_csv.py ....... [ 33%] tests\test_database.py .... [ 34%] tests\test_docs.py ..................................................... [ 49%] .... [ 50%] tests\test_facets.py .....ss. [ 52%] tests\test_filters.py ........... [ 55%] tests\test_html.py ...FF.....FF..............................F.FF.F..... [ 70%] .....F [ 72%] tests\test_plugins.py ...............F [ 77%] tests\test_publish_cloudrun.py ..F. [ 78%] tests\test_publish_heroku.py ...FF [ 79%] tests\test_publish_now.py ...FF.. [ 81%] tests\test_utils.py .............................F...........FFF........ [ 96%] .............E [100%]

=================================== ERRORS ==================================== __ ERROR at teardown of test_format_bytes[1099511627776-1.0 TB] ___

@pytest.fixture(scope="session")
def app_client():
  yield from make_app_client()

..........\build\simonw\datasette\tests\fixtures.py:161:


..........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmp_tkydmmd' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0230CAF8>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmp_tkydmmd\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError ================================== FAILURES =================================== _____ test_allow_sql_off ______

def test_allow_sql_off():
  for client in make_app_client(config={"allow_sql": False}):

........\build\simonw\datasette\tests\test_api.py:600:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmp6pkccymo' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0261FD38>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmp6pkccymo\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError _ testtable_filter_extra_where_disabled_if_no_sql_allowed ___

def test_table_filter_extra_where_disabled_if_no_sql_allowed():
  for client in make_app_client(config={"allow_sql": False}):

........\build\simonw\datasette\tests\test_api.py:1050:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpfa3zhjsq' onerror = <function rmtree.\<locals>.onerror at 0x0000017D025E0B88>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpfa3zhjsq\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError ____ test_allow_facet_off _____

def test_allow_facet_off():
  for client in make_app_client(config={"allow_facet": False}):

........\build\simonw\datasette\tests\test_api.py:1454:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpvap5inq5' onerror = <function rmtree.\<locals>.onerror at 0x0000017D025DAAF8>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpvap5inq5\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError _____ test_suggest_facets_off _______

def test_suggest_facets_off():
  for client in make_app_client(config={"suggest_facets": False}):

........\build\simonw\datasette\tests\test_api.py:1461:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmp7hn1_v44' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0260C5E8>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmp7hn1_v44\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError ___ testconfig_force_https_urls _____

def test_config_force_https_urls():
  for client in make_app_client(config={"force_https_urls": True}):

........\build\simonw\datasette\tests\test_api.py:1589:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpu3lq69xr' onerror = <function rmtree.\<locals>.onerror at 0x0000017D02825EE8>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpu3lq69xr\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError __ test_serve_with_inspect_file_prepopulates_table_counts_cache ___

def test_serve_with_inspect_file_prepopulates_table_counts_cache():
    inspect_data = {"fixtures": {"tables": {"hithere": {"count": 44}}}}
  for client in make_app_client(inspect_data=inspect_data, is_immutable=True):

........\build\simonw\datasette\tests\test_cli.py:36:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpo65sp2ig' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0240DC18>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpo65sp2ig\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError _____ test_static_mounts ______

def test_static_mounts():
    for client in make_app_client(
      static_mounts=[("custom-static", str(pathlib.Path(__file__).parent))]
    ):

........\build\simonw\datasette\tests\test_html.py:64:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpqv82mm64' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0294FD38>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpqv82mm64\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError ---------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 100, in call__ return await view(new_scope, receive, send) File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 315, in inner_static await asgi_send_file(send, full_path, chunk_size=chunk_size) File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 296, in asgi_send_file {"type": "http.response.body", "body": chunk, "more_body": more_body} File "c:\python37\lib\site-packages\aiofiles\base.py", line 92, in aexit yield from self.obj.close() File "c:\python37\lib\site-packages\aiofiles\threadpool\utils.py", line 36, in method return (yield from self._loop.run_in_executor(self._executor, cb)) concurrent.futures._base.CancelledError _____ test_memory_database_page ________

def test_memory_database_page():
  for client in make_app_client(memory=True):

........\build\simonw\datasette\tests\test_html.py:75:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmp6cagtj6v' onerror = <function rmtree.\<locals>.onerror at 0x0000017D040A2AF8>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmp6cagtj6v\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError ____ testtable_cell_truncation ______

def test_table_cell_truncation():
  for client in make_app_client(config={"truncate_cells_html": 5}):

........\build\simonw\datasette\tests\test_html.py:123:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmp1zz78pre' onerror = <function rmtree.\<locals>.onerror at 0x0000017D03DFD5E8>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmp1zz78pre\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError ___ test_row_page_does_not_truncate ___

def test_row_page_does_not_truncate():
  for client in make_app_client(config={"truncate_cells_html": 5}):

........\build\simonw\datasette\tests\test_html.py:148:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpsukb573e' onerror = <function rmtree.\<locals>.onerror at 0x0000017D023B9AF8>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpsukb573e\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError ____ test_database_download_allowed_for_immutable _____

def test_database_download_allowed_for_immutable():
  for client in make_app_client(is_immutable=True):

........\build\simonw\datasette\tests\test_html.py:755:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpcivpcoop' onerror = <function rmtree.\<locals>.onerror at 0x0000017D02666A68>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpcivpcoop\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError ---------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 100, in call__ return await view(new_scope, receive, send) File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 174, in view await response.asgi_send(send) File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 383, in asgi_send return await asgi_send_file(send, self.filepath, content_type=self.content_type) File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 296, in asgi_send_file {"type": "http.response.body", "body": chunk, "more_body": more_body} File "c:\python37\lib\site-packages\aiofiles\base.py", line 92, in aexit yield from self.obj.close() File "c:\python37\lib\site-packages\aiofiles\threadpool\utils.py", line 36, in method return (yield from self._loop.run_in_executor(self._executor, cb)) concurrent.futures._base.CancelledError _______ test_database_download_disallowed_for_memory _____

def test_database_download_disallowed_for_memory():
  for client in make_app_client(memory=True):

........\build\simonw\datasette\tests\test_html.py:773:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpvwpwrijf' onerror = <function rmtree.\<locals>.onerror at 0x0000017D02637D38>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpvwpwrijf\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError _____ test_allow_download_off _______

def test_allow_download_off():
  for client in make_app_client(is_immutable=True, config={"allow_download": False}):

........\build\simonw\datasette\tests\test_html.py:782:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpmz0s6rqz' onerror = <function rmtree.\<locals>.onerror at 0x0000017D03EFA1F8>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpmz0s6rqz\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError _____ test_allow_sql_off ______

def test_allow_sql_off():
  for client in make_app_client(config={"allow_sql": False}):

........\build\simonw\datasette\tests\test_html.py:800:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpmrr0edfk' onerror = <function rmtree.\<locals>.onerror at 0x0000017D03EFFD38>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpmrr0edfk\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError ____ test_custom_table_include ______

def test_custom_table_include():
    for client in make_app_client(
      template_dir=str(pathlib.Path(__file__).parent / "test_templates")
    ):

........\build\simonw\datasette\tests\test_html.py:973:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpxcd2zp24' onerror = <function rmtree.\<locals>.onerror at 0x0000017D03FFBD38>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpxcd2zp24\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError ____ test_plugins_extra_template_vars _____

restore_working_directory = None

def test_plugins_extra_template_vars(restore_working_directory):
    for client in make_app_client(
      template_dir=str(pathlib.Path(__file__).parent / "test_templates")
    ):

........\build\simonw\datasette\tests\test_plugins.py:196:


........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpkjbhg_ho' onerror = <function rmtree.\<locals>.onerror at 0x0000017D03DB6DC8>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
              os.unlink(fullname)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpkjbhg_ho\fixtures.db'

c:\python37\lib\shutil.py:398: PermissionError ____ test_publish_cloudrun ____

mock_call = <MagicMock name='check_call' id='1636414304584'> mock_output = <MagicMock name='check_output' id='1636412936264'> mock_which = <MagicMock name='which' id='1636424648584'>

@mock.patch("shutil.which")
@mock.patch("datasette.publish.cloudrun.check_output")
@mock.patch("datasette.publish.cloudrun.check_call")
def test_publish_cloudrun(mock_call, mock_output, mock_which):
    mock_output.return_value = "myproject"
    mock_which.return_value = True
    runner = CliRunner()
    with runner.isolated_filesystem():
        open("test.db", "w").write("data")
        result = runner.invoke(cli.cli, ["publish", "cloudrun", "test.db"])
      assert 0 == result.exit_code

E AssertionError: assert 0 == 1 E + where 1 = <Result PermissionError(13, 'The process cannot access the file because it is being used by another process')>.exit_code

........\build\simonw\datasette\tests\test_publish_cloudrun.py:37: AssertionError ____ test_publish_heroku ____

mock_call = <MagicMock name='call' id='1636419273928'> mock_check_output = <MagicMock name='check_output' id='1636425565704'> mock_which = <MagicMock name='which' id='1636423528072'>

@mock.patch("shutil.which")
@mock.patch("datasette.publish.heroku.check_output")
@mock.patch("datasette.publish.heroku.call")
def test_publish_heroku(mock_call, mock_check_output, mock_which):
    mock_which.return_value = True
    mock_check_output.side_effect = lambda s: {
        "['heroku', 'plugins']": b"heroku-builds",
        "['heroku', 'apps:list', '--json']": b"[]",
        "['heroku', 'apps:create', 'datasette', '--json']": b'{"name": "f"}',
    }[repr(s)]
    runner = CliRunner()
    with runner.isolated_filesystem():
        open("test.db", "w").write("data")
        result = runner.invoke(cli.cli, ["publish", "heroku", "test.db"])
      assert 0 == result.exit_code, result.output

E AssertionError: E assert 0 == 1 E + where 1 = <Result PermissionError(13, 'The process cannot access the file because it is being used by another process')>.exit_code

........\build\simonw\datasette\tests\test_publish_heroku.py:59: AssertionError ___ test_publish_heroku_plugin_secrets ____

mock_call = <MagicMock name='call' id='1636418803912'> mock_check_output = <MagicMock name='check_output' id='1636422960392'> mock_which = <MagicMock name='which' id='1636421692616'>

@mock.patch("shutil.which")
@mock.patch("datasette.publish.heroku.check_output")
@mock.patch("datasette.publish.heroku.call")
def test_publish_heroku_plugin_secrets(mock_call, mock_check_output, mock_which):
    mock_which.return_value = True
    mock_check_output.side_effect = lambda s: {
        "['heroku', 'plugins']": b"heroku-builds",
        "['heroku', 'apps:list', '--json']": b"[]",
        "['heroku', 'apps:create', 'datasette', '--json']": b'{"name": "f"}',
    }[repr(s)]
    runner = CliRunner()
    with runner.isolated_filesystem():
        open("test.db", "w").write("data")
        result = runner.invoke(
            cli.cli,
            [
                "publish",
                "heroku",
                "test.db",
                "--plugin-secret",
                "datasette-auth-github",
                "client_id",
                "x-client-id",
            ],
        )
      assert 0 == result.exit_code, result.output

E AssertionError: E assert 0 == 1 E + where 1 = <Result PermissionError(13, 'The process cannot access the file because it is being used by another process')>.exit_code

........\build\simonw\datasette\tests\test_publish_heroku.py:90: AssertionError ______ test_publish_now _______

mock_run = <MagicMock name='run' id='1636418894600'> mock_which = <MagicMock name='which' id='1636418240136'>

@mock.patch("shutil.which")
@mock.patch("datasette.publish.now.run")
def test_publish_now(mock_run, mock_which):
    mock_which.return_value = True
    runner = CliRunner()
    with runner.isolated_filesystem():
        open("test.db", "w").write("data")
        result = runner.invoke(cli.cli, ["publish", "nowv1", "test.db"])
      assert 0 == result.exit_code

E AssertionError: assert 0 == 1 E + where 1 = <Result PermissionError(13, 'The process cannot access the file because it is being used by another process')>.exit_code

........\build\simonw\datasette\tests\test_publish_now.py:43: AssertionError ___ testpublish_now_force_token _____

mock_run = <MagicMock name='run' id='1636447182536'> mock_which = <MagicMock name='which' id='1636420257416'>

@mock.patch("shutil.which")
@mock.patch("datasette.publish.now.run")
def test_publish_now_force_token(mock_run, mock_which):
    mock_which.return_value = True
    runner = CliRunner()
    with runner.isolated_filesystem():
        open("test.db", "w").write("data")
        result = runner.invoke(
            cli.cli, ["publish", "nowv1", "test.db", "--force", "--token=X"]
        )
      assert 0 == result.exit_code

E AssertionError: assert 0 == 1 E + where 1 = <Result PermissionError(13, 'The process cannot access the file because it is being used by another process')>.exit_code

........\build\simonw\datasette\tests\test_publish_now.py:57: AssertionError ____ testdetect_fts _____

def test_detect_fts():
    sql = """
    CREATE TABLE "Dumb_Table" (
      "TreeID" INTEGER,
      "qSpecies" TEXT
    );
    CREATE TABLE "Street_Tree_List" (
      "TreeID" INTEGER,
      "qSpecies" TEXT,
      "qAddress" TEXT,
      "SiteOrder" INTEGER,
      "qSiteInfo" TEXT,
      "PlantType" TEXT,
      "qCaretaker" TEXT
    );
    CREATE VIEW Test_View AS SELECT * FROM Dumb_Table;
    CREATE VIRTUAL TABLE "Street_Tree_List_fts" USING FTS4 ("qAddress", "qCaretaker", "qSpecies", content="Street_Tree_List");
    CREATE VIRTUAL TABLE r USING rtree(a, b, c);
    """
    conn = utils.sqlite3.connect(":memory:")
  conn.executescript(sql)

E sqlite3.OperationalError: no such module: rtree

........\build\simonw\datasette\tests\test_utils.py:182: OperationalError ___ test_temporary_docker_directory_uses_hard_link ____

def test_temporary_docker_directory_uses_hard_link():
    with tempfile.TemporaryDirectory() as td:
        os.chdir(td)
        open("hello", "w").write("world")
        # Default usage of this should use symlink
        with utils.temporary_docker_directory(
            files=["hello"],
            name="t",
            metadata=None,
            extra_options=None,
            branch=None,
            template_dir=None,
            plugins_dir=None,
            static=[],
            install=[],
            spatialite=False,
            version_note=None,
        ) as temp_docker:
            hello = os.path.join(temp_docker, "hello")
            assert "world" == open(hello).read()
            # It should be a hard link
          assert 2 == os.stat(hello).st_nlink

..........\build\simonw\datasette\tests\test_utils.py:239:


c:\python37\lib\contextlib.py:119: in exit next(self.gen) ..........\build\simonw\datasette\datasette\utils__init__.py:397: in temporary_docker_directory tmp.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:395: in _rmtree_unsafe _rmtree_unsafe(fullname, onerror) c:\python37\lib\shutil.py:404: in _rmtree_unsafe onerror(os.rmdir, path, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmp0g07cby1\t' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0230C5E8>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
                os.unlink(fullname)
            except OSError:
                onerror(os.unlink, fullname, sys.exc_info())
    try:
      os.rmdir(path)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmp0g07cby1\t'

c:\python37\lib\shutil.py:402: PermissionError __ test_temporary_docker_directory_uses_copy_if_hard_link_fails ___

mock_link = <MagicMock name='link' id='1636414222984'>

@patch("os.link")
def test_temporary_docker_directory_uses_copy_if_hard_link_fails(mock_link):
    # Copy instead if os.link raises OSError (normally due to different device)
    mock_link.side_effect = OSError
    with tempfile.TemporaryDirectory() as td:
        os.chdir(td)
        open("hello", "w").write("world")
        # Default usage of this should use symlink
        with utils.temporary_docker_directory(
            files=["hello"],
            name="t",
            metadata=None,
            extra_options=None,
            branch=None,
            template_dir=None,
            plugins_dir=None,
            static=[],
            install=[],
            spatialite=False,
            version_note=None,
        ) as temp_docker:
            hello = os.path.join(temp_docker, "hello")
            assert "world" == open(hello).read()
            # It should be a copy, not a hard link
          assert 1 == os.stat(hello).st_nlink

..........\build\simonw\datasette\tests\test_utils.py:266:


c:\python37\lib\contextlib.py:119: in exit next(self.gen) ..........\build\simonw\datasette\datasette\utils__init__.py:397: in temporary_docker_directory tmp.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:395: in _rmtree_unsafe _rmtree_unsafe(fullname, onerror) c:\python37\lib\shutil.py:404: in _rmtree_unsafe onerror(os.rmdir, path, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmpywj5p10g\t' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0230C558>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
                os.unlink(fullname)
            except OSError:
                onerror(os.unlink, fullname, sys.exc_info())
    try:
      os.rmdir(path)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmpywj5p10g\t'

c:\python37\lib\shutil.py:402: PermissionError __ testtemporary_docker_directory_quotes_args ___

def test_temporary_docker_directory_quotes_args():
    with tempfile.TemporaryDirectory() as td:
        os.chdir(td)
        open("hello", "w").write("world")
        with utils.temporary_docker_directory(
            files=["hello"],
            name="t",
            metadata=None,
            extra_options="--$HOME",
            branch=None,
            template_dir=None,
            plugins_dir=None,
            static=[],
            install=[],
            spatialite=False,
            version_note="$PWD",
        ) as temp_docker:
            df = os.path.join(temp_docker, "Dockerfile")
            df_contents = open(df).read()
            assert "'$PWD'" in df_contents
          assert "'--$HOME'" in df_contents

..........\build\simonw\datasette\tests\test_utils.py:289:


c:\python37\lib\contextlib.py:119: in exit next(self.gen) ..........\build\simonw\datasette\datasette\utils__init__.py:397: in temporary_docker_directory tmp.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:395: in _rmtree_unsafe _rmtree_unsafe(fullname, onerror) c:\python37\lib\shutil.py:404: in _rmtree_unsafe onerror(os.rmdir, path, sys.exc_info())


path = 'C:\Users\travis\AppData\Local\Temp\tmps8mll2fo\t' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0230C948>

def _rmtree_unsafe(path, onerror):
    try:
        with os.scandir(path) as scandir_it:
            entries = list(scandir_it)
    except OSError:
        onerror(os.scandir, path, sys.exc_info())
        entries = []
    for entry in entries:
        fullname = entry.path
        try:
            is_dir = entry.is_dir(follow_symlinks=False)
        except OSError:
            is_dir = False
        if is_dir:
            try:
                if entry.is_symlink():
                    # This can only happen if someone replaces
                    # a directory with a symlink after the call to
                    # os.scandir or entry.is_dir above.
                    raise OSError("Cannot call rmtree on a symbolic link")
            except OSError:
                onerror(os.path.islink, fullname, sys.exc_info())
                continue
            _rmtree_unsafe(fullname, onerror)
        else:
            try:
                os.unlink(fullname)
            except OSError:
                onerror(os.unlink, fullname, sys.exc_info())
    try:
      os.rmdir(path)

E PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\travis\AppData\Local\Temp\tmps8mll2fo\t'

c:\python37\lib\shutil.py:402: PermissionError ========= 25 failed, 325 passed, 3 skipped, 1 error in 476.71 seconds ========= travis_time:end:07fbb22c:start=1563238899952083900,finish=1563239378532569000,duration=478580485100 ?[0K?[31;1mThe command "pytest" exited with 1.?[0m ```

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Get tests running on Windows using Travis CI 466996584  
510562059 https://github.com/simonw/datasette/pull/557#issuecomment-510562059 https://api.github.com/repos/simonw/datasette/issues/557 MDEyOklzc3VlQ29tbWVudDUxMDU2MjA1OQ== simonw 9599 2019-07-11T16:38:27Z 2019-07-11T16:38:27Z OWNER

Weird, Travis didn't even attempt to start a build for this branch/PR. Maybe something wrong with my .travis.yml?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Get tests running on Windows using Travis CI 466996584  

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issue_comments] (
   [html_url] TEXT,
   [issue_url] TEXT,
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [created_at] TEXT,
   [updated_at] TEXT,
   [author_association] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [issue] INTEGER REFERENCES [issues]([id])
, [performed_via_github_app] TEXT);
CREATE INDEX [idx_issue_comments_issue]
                ON [issue_comments] ([issue]);
CREATE INDEX [idx_issue_comments_user]
                ON [issue_comments] ([user]);
Powered by Datasette · Queries took 24.115ms · About: github-to-sqlite
  • Sort ascending
  • Sort descending
  • Facet by this
  • Hide this column
  • Show all columns
  • Show not-blank rows