Running ‘testthat.R’ [92s/269s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
  > # Licensed to the Apache Software Foundation (ASF) under one
  > # or more contributor license agreements.  See the NOTICE file
  > # distributed with this work for additional information
  > # regarding copyright ownership.  The ASF licenses this file
  > # to you under the Apache License, Version 2.0 (the
  > # "License"); you may not use this file except in compliance
  > # with the License.  You may obtain a copy of the License at
  > #
  > #   http://www.apache.org/licenses/LICENSE-2.0
  > #
  > # Unless required by applicable law or agreed to in writing,
  > # software distributed under the License is distributed on an
  > # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  > # KIND, either express or implied.  See the License for the
  > # specific language governing permissions and limitations
  > # under the License.
  > 
  > library(testthat)
  > library(nanoarrow)
  > 
  > verbose_test_output <- identical(tolower(Sys.getenv("ARROW_R_DEV", "false")), "true") ||
  +   identical(tolower(Sys.getenv("ARROW_R_VERBOSE_TEST", "false")), "true")
  > 
  > if (verbose_test_output) {
  +   reporter <- MultiReporter$new(list(CheckReporter$new(), LocationReporter$new()))
  + } else {
  +   reporter <- check_reporter()
  + }
  > 
  > test_check("nanoarrow", reporter = reporter)
  Start test: nanoarrow_altrep_chr() returns NULL for unsupported types
    'test-altrep.R:19:3' [success]
    'test-altrep.R:20:3' [success]
  End test: nanoarrow_altrep_chr() returns NULL for unsupported types
  
  Start test: nanoarrow_altrep_chr() works for string
    'test-altrep.R:27:3' [success]
    'test-altrep.R:31:3' [success]
    'test-altrep.R:32:3' [success]
    'test-altrep.R:33:3' [success]
    'test-altrep.R:38:3' [success]
    'test-altrep.R:39:3' [failure]
    'test-altrep.R:42:3' [success]
    'test-altrep.R:43:3' [success]
    'test-altrep.R:46:3' [failure]
    'test-altrep.R:50:3' [success]
    'test-altrep.R:51:3' [success]
  End test: nanoarrow_altrep_chr() works for string
  
  Start test: nanoarrow_altrep_chr() works for large string
    'test-altrep.R:57:3' [success]
  End test: nanoarrow_altrep_chr() works for large string
  
  Start test: is_nanoarrow_altrep() returns true for nanoarrow altrep objects
    'test-altrep.R:61:3' [success]
    'test-altrep.R:62:3' [success]
    'test-altrep.R:63:3' [success]
  End test: is_nanoarrow_altrep() returns true for nanoarrow altrep objects
  
  Start test: nanoarrow_altrep_chr_force_materialize() forces materialization
    'test-altrep.R:70:3' [success]
    'test-altrep.R:71:3' [success]
    'test-altrep.R:75:3' [success]
    'test-altrep.R:79:3' [success]
    'test-altrep.R:83:3' [success]
  End test: nanoarrow_altrep_chr_force_materialize() forces materialization
  
  Start test: is_nanoarrow_altrep_materialized() checks for materialization
    'test-altrep.R:90:3' [success]
    'test-altrep.R:91:3' [success]
    'test-altrep.R:95:3' [success]
    'test-altrep.R:96:3' [success]
    'test-altrep.R:97:3' [success]
  End test: is_nanoarrow_altrep_materialized() checks for materialization
  
  Start test: basic_array_stream() can create empty streams
    'test-array-stream.R:20:3' [success]
    'test-array-stream.R:21:3' [success]
    'test-array-stream.R:23:3' [success]
  End test: basic_array_stream() can create empty streams
  
  Start test: basic_array_stream() can create streams from batches
    'test-array-stream.R:37:3' [success]
    'test-array-stream.R:38:3' [success]
    'test-array-stream.R:42:3' [success]
    'test-array-stream.R:46:3' [success]
  End test: basic_array_stream() can create streams from batches
  
  Start test: basic_array_stream() can validate input or skip validation
    'test-array-stream.R:57:3' [success]
    'test-array-stream.R:59:3' [success]
  End test: basic_array_stream() can validate input or skip validation
  
  Start test: nanoarrow_array_stream format, print, and str methods work
    'test-array-stream.R:73:3' [success]
    'test-array-stream.R:74:3' [success]
    'test-array-stream.R:74:3' [success]
    'test-array-stream.R:75:3' [success]
    'test-array-stream.R:75:3' [success]
  End test: nanoarrow_array_stream format, print, and str methods work
  
  Start test: released nanoarrow_array_stream format, print, and str methods work
    'test-array-stream.R:80:3' [success]
    'test-array-stream.R:81:3' [success]
    'test-array-stream.R:81:3' [success]
    'test-array-stream.R:82:3' [success]
    'test-array-stream.R:82:3' [success]
  End test: released nanoarrow_array_stream format, print, and str methods work
  
  Start test: as_nanoarrow_array_stream() works for nanoarrow_array_stream
    'test-array-stream.R:87:3' [success]
    'test-array-stream.R:90:3' [success]
    'test-array-stream.R:96:3' [skip]
  End test: as_nanoarrow_array_stream() works for nanoarrow_array_stream
  
  Start test: as_nanoarrow_array_stream() works for nanoarrow_array
    'test-array-stream.R:105:3' [success]
    'test-array-stream.R:106:3' [success]
    'test-array-stream.R:113:3' [success]
    'test-array-stream.R:114:3' [success]
    'test-array-stream.R:121:3' [skip]
  End test: as_nanoarrow_array_stream() works for nanoarrow_array
  
  Start test: infer_nanoarrow_schema() is implemented for streams
    'test-array-stream.R:129:3' [success]
  End test: infer_nanoarrow_schema() is implemented for streams
  
  Start test: as.data.frame() is implemented for streams
    'test-array-stream.R:134:3' [success]
    'test-array-stream.R:138:3' [success]
  End test: as.data.frame() is implemented for streams
  
  Start test: as.vector() is implemented for streams
    'test-array-stream.R:143:3' [success]
    'test-array-stream.R:147:3' [success]
  End test: as.vector() is implemented for streams
  
  Start test: nanoarrow_array_stream list interface works
    'test-array-stream.R:152:3' [success]
    'test-array-stream.R:153:3' [success]
    'test-array-stream.R:154:3' [success]
    'test-array-stream.R:155:3' [success]
    'test-array-stream.R:156:3' [success]
    'test-array-stream.R:157:3' [success]
  End test: nanoarrow_array_stream list interface works
  
  Start test: nanoarrow_array_stream can get_schema() and get_next()
    'test-array-stream.R:162:3' [success]
    'test-array-stream.R:163:3' [success]
    'test-array-stream.R:164:3' [success]
  End test: nanoarrow_array_stream can get_schema() and get_next()
  
  Start test: nanoarrow_array_stream can release()
    'test-array-stream.R:169:3' [success]
    'test-array-stream.R:171:3' [success]
  End test: nanoarrow_array_stream can release()
  
  Start test: nanoarrow_array_stream can validate or not on get_next()
    'test-array-stream.R:176:3' [success]
    'test-array-stream.R:182:3' [success]
  End test: nanoarrow_array_stream can validate or not on get_next()
  
  Start test: nanoarrow_array_stream get_next() with schema = NULL
    'test-array-stream.R:193:3' [success]
  End test: nanoarrow_array_stream get_next() with schema = NULL
  
  Start test: User array stream finalizers are run on explicit release
    'test-array-stream.R:199:3' [success]
    'test-array-stream.R:200:3' [success]
  End test: User array stream finalizers are run on explicit release
  
  Start test: User array stream finalizers are run on explicit release even when moved
    'test-array-stream.R:209:3' [success]
    'test-array-stream.R:210:3' [success]
    'test-array-stream.R:211:3' [success]
    'test-array-stream.R:212:3' [success]
  End test: User array stream finalizers are run on explicit release even when moved
  
  Start test: User array stream finalizers are run on explicit release even when exported
    'test-array-stream.R:221:3' [success]
    'test-array-stream.R:222:3' [success]
    'test-array-stream.R:223:3' [success]
    'test-array-stream.R:224:3' [success]
  End test: User array stream finalizers are run on explicit release even when exported
  
  Start test: Errors from user array stream finalizer are ignored
    'test-array-stream.R:232:3' [success]
    'test-array-stream.R:237:3' [success]
    'test-array-stream.R:238:3' [success]
  End test: Errors from user array stream finalizer are ignored
  
  Start test: nanoarrow_array format, print, and str methods work
    'test-array.R:20:3' [success]
    'test-array.R:21:3' [success]
    'test-array.R:21:3' [success]
    'test-array.R:22:3' [success]
    'test-array.R:22:3' [success]
  End test: nanoarrow_array format, print, and str methods work
  
  Start test: released nanoarrow_array format, print, and str methods work
    'test-array.R:27:3' [success]
    'test-array.R:28:3' [success]
    'test-array.R:28:3' [success]
    'test-array.R:29:3' [success]
    'test-array.R:29:3' [success]
  End test: released nanoarrow_array format, print, and str methods work
  
  Start test: schemaless nanoarrow_array format, print, and str methods work
    'test-array.R:35:3' [success]
    'test-array.R:36:3' [success]
    'test-array.R:36:3' [success]
    'test-array.R:37:3' [success]
    'test-array.R:37:3' [success]
  End test: schemaless nanoarrow_array format, print, and str methods work
  
  Start test: string/binary view nanoarrow_array buffers print correctly
    'test-array.R:42:3' [skip]
  End test: string/binary view nanoarrow_array buffers print correctly
  
  Start test: as_nanoarrow_array() / convert_array() default method works
    'test-array.R:53:3' [success]
    'test-array.R:56:3' [success]
  End test: as_nanoarrow_array() / convert_array() default method works
  
  Start test: infer_nanoarrow_schema() works for nanoarrow_array
    'test-array.R:62:3' [success]
    'test-array.R:65:3' [success]
  End test: infer_nanoarrow_schema() works for nanoarrow_array
  
  Start test: nanoarrow_array_set_schema() errors for invalid schema/array
    'test-array.R:71:3' [success]
  End test: nanoarrow_array_set_schema() errors for invalid schema/array
  
  Start test: as.vector() and as.data.frame() work for array
    'test-array.R:79:3' [success]
    'test-array.R:82:3' [success]
    'test-array.R:83:3' [success]
  End test: as.vector() and as.data.frame() work for array
  
  Start test: as_tibble() works for array()
    'test-array.R:93:3' [success]
  End test: as_tibble() works for array()
  
  Start test: schemaless array list interface works for non-nested types
    'test-array.R:100:3' [success]
    'test-array.R:101:3' [success]
    'test-array.R:105:3' [success]
    'test-array.R:106:3' [success]
    'test-array.R:107:3' [success]
    'test-array.R:108:3' [success]
    'test-array.R:109:3' [success]
    'test-array.R:110:3' [success]
    'test-array.R:111:3' [success]
    'test-array.R:112:3' [success]
  End test: schemaless array list interface works for non-nested types
  
  Start test: schemaless array list interface works for nested types
    'test-array.R:119:3' [success]
    'test-array.R:120:3' [success]
    'test-array.R:121:3' [success]
    'test-array.R:122:3' [success]
    'test-array.R:123:3' [success]
    'test-array.R:126:3' [success]
    'test-array.R:127:3' [success]
  End test: schemaless array list interface works for nested types
  
  Start test: schemaless array list interface works for dictionary types
    'test-array.R:134:3' [success]
    'test-array.R:135:3' [success]
    'test-array.R:136:3' [success]
    'test-array.R:139:3' [success]
    'test-array.R:140:3' [success]
  End test: schemaless array list interface works for dictionary types
  
  Start test: array list interface classes data buffers for relevant types
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
    'test-array.R:163:5' [success]
    'test-array.R:164:5' [success]
    'test-array.R:165:5' [success]
    'test-array.R:166:5' [success]
  End test: array list interface classes data buffers for relevant types
  
  Start test: array list interface classes offset buffers for relevant types
    'test-array.R:172:3' [success]
    'test-array.R:173:3' [success]
    'test-array.R:174:3' [success]
    'test-array.R:175:3' [success]
    'test-array.R:178:3' [success]
    'test-array.R:179:3' [success]
    'test-array.R:182:3' [success]
    'test-array.R:183:3' [success]
    'test-array.R:186:3' [success]
    'test-array.R:187:3' [success]
  End test: array list interface classes offset buffers for relevant types
  
  Start test: array list interface works for nested types
    'test-array.R:193:3' [success]
    'test-array.R:194:3' [success]
    'test-array.R:195:3' [success]
    'test-array.R:198:3' [success]
    'test-array.R:199:3' [success]
    'test-array.R:203:3' [success]
  End test: array list interface works for nested types
  
  Start test: array list interface works for dictionary types
    'test-array.R:212:3' [success]
    'test-array.R:213:3' [success]
    'test-array.R:216:3' [success]
    'test-array.R:217:3' [success]
  End test: array list interface works for dictionary types
  
  Start test: array modify errors for invalid components
    'test-array.R:223:3' [success]
    'test-array.R:228:3' [success]
  End test: array modify errors for invalid components
  
  Start test: array modify does not copy if length(new_values) == 0
    'test-array.R:236:3' [success]
  End test: array modify does not copy if length(new_values) == 0
  
  Start test: array modify can modify length
    'test-array.R:246:3' [success]
    'test-array.R:247:3' [success]
    'test-array.R:249:3' [success]
    'test-array.R:254:3' [success]
    'test-array.R:259:3' [success]
  End test: array modify can modify length
  
  Start test: array modify can modify null_count
    'test-array.R:269:3' [success]
    'test-array.R:270:3' [success]
    'test-array.R:272:3' [success]
    'test-array.R:277:3' [success]
    'test-array.R:282:3' [success]
  End test: array modify can modify null_count
  
  Start test: array modify can modify offset
    'test-array.R:292:3' [success]
    'test-array.R:293:3' [success]
    'test-array.R:295:3' [success]
    'test-array.R:300:3' [success]
    'test-array.R:305:3' [success]
  End test: array modify can modify offset
  
  Start test: array modify can modify buffers
    'test-array.R:316:3' [success]
    'test-array.R:317:3' [success]
    'test-array.R:332:3' [success]
    'test-array.R:333:3' [success]
    'test-array.R:334:3' [success]
    'test-array.R:340:3' [success]
    'test-array.R:343:3' [success]
    'test-array.R:349:3' [success]
  End test: array modify can modify buffers
  
  Start test: array modify can modify variadic buffers
    'test-array.R:365:3' [success]
    'test-array.R:367:3' [success]
    'test-array.R:368:3' [success]
    'test-array.R:382:3' [success]
    'test-array.R:385:3' [success]
    'test-array.R:388:3' [success]
  End test: array modify can modify variadic buffers
  
  Start test: array modify checks buffer sizes
    'test-array.R:393:3' [success]
  End test: array modify checks buffer sizes
  
  Start test: array modify can modify children
    'test-array.R:404:3' [success]
    'test-array.R:412:3' [success]
    'test-array.R:422:3' [success]
    'test-array.R:429:3' [success]
  End test: array modify can modify children
  
  Start test: array modify can modify dictionary
    'test-array.R:441:3' [success]
    'test-array.R:448:3' [success]
    'test-array.R:455:3' [success]
    'test-array.R:462:3' [success]
  End test: array modify can modify dictionary
  
  Start test: array modify can modify array with no schema attached
    'test-array.R:470:3' [success]
    'test-array.R:473:3' [success]
  End test: array modify can modify array with no schema attached
  
  Start test: array modify can skip validation
    'test-array.R:479:3' [success]
    'test-array.R:490:3' [success]
  End test: array modify can skip validation
  
  Start test: [[<- works for array
    'test-array.R:496:3' [success]
    'test-array.R:500:3' [success]
    'test-array.R:502:3' [success]
    'test-array.R:507:3' [success]
    'test-array.R:512:3' [success]
    'test-array.R:517:3' [success]
    'test-array.R:522:3' [success]
    'test-array.R:527:3' [success]
  End test: [[<- works for array
  
  Start test: $<- works for array
    'test-array.R:536:3' [success]
    'test-array.R:538:3' [success]
  End test: $<- works for array
  
  Start test: <- assignment works for array$children
    'test-array.R:550:3' [success]
    'test-array.R:556:3' [success]
  End test: <- assignment works for array$children
  
  Start test: <- assignment works for array$buffers
    'test-array.R:567:3' [success]
  End test: <- assignment works for array$buffers
  
  Start test: nanoarrow_array_init() creates an array
    'test-array.R:575:3' [success]
    'test-array.R:584:3' [success]
  End test: nanoarrow_array_init() creates an array
  
  Start test: as_nanoarrow_array() works for nanoarrow_array
    'test-as-array.R:20:3' [success]
    'test-as-array.R:23:3' [success]
    'test-as-array.R:27:3' [success]
    'test-as-array.R:28:3' [success]
  End test: as_nanoarrow_array() works for nanoarrow_array
  
  Start test: as_nanoarrow_array() works for logical() -> na_bool()
    'test-as-array.R:34:3' [success]
    'test-as-array.R:35:3' [success]
    'test-as-array.R:36:3' [success]
    'test-as-array.R:37:3' [success]
    'test-as-array.R:38:3' [success]
    'test-as-array.R:45:3' [success]
    'test-as-array.R:46:3' [success]
    'test-as-array.R:47:3' [success]
    'test-as-array.R:51:3' [success]
  End test: as_nanoarrow_array() works for logical() -> na_bool()
  
  Start test: as_nanoarrow_array() errors for bad logical() creation
    'test-as-array.R:59:3' [skip]
  End test: as_nanoarrow_array() errors for bad logical() creation
  
  Start test: as_nanoarrow_array() works for logical() -> na_int32()
    'test-as-array.R:67:3' [success]
    'test-as-array.R:68:3' [success]
    'test-as-array.R:69:3' [success]
    'test-as-array.R:70:3' [success]
    'test-as-array.R:71:3' [success]
    'test-as-array.R:78:3' [success]
    'test-as-array.R:79:3' [success]
    'test-as-array.R:80:3' [success]
    'test-as-array.R:84:3' [success]
  End test: as_nanoarrow_array() works for logical() -> na_int32()
  
  Start test: as_nanoarrow_array() works for integer() -> na_int32()
    'test-as-array.R:93:3' [success]
    'test-as-array.R:94:3' [success]
    'test-as-array.R:95:3' [success]
    'test-as-array.R:96:3' [success]
    'test-as-array.R:97:3' [success]
    'test-as-array.R:101:3' [success]
    'test-as-array.R:102:3' [success]
    'test-as-array.R:103:3' [success]
    'test-as-array.R:107:3' [success]
  End test: as_nanoarrow_array() works for integer() -> na_int32()
  
  Start test: as_nanoarrow_array() works for integer -> na_int64()
    'test-as-array.R:115:3' [success]
    'test-as-array.R:116:3' [success]
  End test: as_nanoarrow_array() works for integer -> na_int64()
  
  Start test: as_nanoarrow_array() works for integer -> na_decimal_xxx()
    'test-as-array.R:131:5' [success]
    'test-as-array.R:132:5' [success]
    'test-as-array.R:131:5' [success]
    'test-as-array.R:132:5' [success]
    'test-as-array.R:131:5' [success]
    'test-as-array.R:132:5' [success]
    'test-as-array.R:131:5' [success]
    'test-as-array.R:132:5' [success]
  End test: as_nanoarrow_array() works for integer -> na_decimal_xxx()
  
  Start test: as_nanoarrow_array() works for double() -> na_double()
    'test-as-array.R:139:3' [success]
    'test-as-array.R:140:3' [success]
    'test-as-array.R:141:3' [success]
    'test-as-array.R:142:3' [success]
    'test-as-array.R:143:3' [success]
    'test-as-array.R:150:3' [success]
    'test-as-array.R:151:3' [success]
    'test-as-array.R:152:3' [success]
    'test-as-array.R:156:3' [success]
  End test: as_nanoarrow_array() works for double() -> na_double()
  
  Start test: as_nanoarrow_array() works for double() -> na_int32()
    'test-as-array.R:165:3' [success]
    'test-as-array.R:166:3' [success]
    'test-as-array.R:167:3' [success]
    'test-as-array.R:168:3' [success]
    'test-as-array.R:169:3' [success]
    'test-as-array.R:176:3' [success]
    'test-as-array.R:177:3' [success]
    'test-as-array.R:178:3' [success]
    'test-as-array.R:183:3' [success]
    'test-as-array.R:189:3' [success]
  End test: as_nanoarrow_array() works for double() -> na_int32()
  
  Start test: as_nanoarrow_array() works for double() -> na_int64()
    'test-as-array.R:198:3' [success]
    'test-as-array.R:199:3' [success]
    'test-as-array.R:200:3' [success]
    'test-as-array.R:201:3' [success]
    'test-as-array.R:203:3' [success]
    'test-as-array.R:207:3' [success]
    'test-as-array.R:208:3' [success]
    'test-as-array.R:209:3' [success]
    'test-as-array.R:213:3' [success]
  End test: as_nanoarrow_array() works for double() -> na_int64()
  
  Start test: as_nanoarrow_array() works for double() -> na_float()
    'test-as-array.R:219:3' [success]
    'test-as-array.R:220:3' [success]
    'test-as-array.R:221:3' [success]
    'test-as-array.R:222:3' [success]
    'test-as-array.R:223:3' [success]
    'test-as-array.R:227:3' [success]
    'test-as-array.R:228:3' [success]
    'test-as-array.R:229:3' [success]
    'test-as-array.R:233:3' [success]
  End test: as_nanoarrow_array() works for double() -> na_float()
  
  Start test: as_nanoarrow_array() works for double() -> na_half_float()
    'test-as-array.R:239:3' [success]
    'test-as-array.R:240:3' [success]
    'test-as-array.R:241:3' [success]
    'test-as-array.R:242:3' [success]
    'test-as-array.R:243:3' [success]
    'test-as-array.R:247:3' [success]
    'test-as-array.R:248:3' [success]
    'test-as-array.R:249:3' [success]
    'test-as-array.R:253:3' [success]
  End test: as_nanoarrow_array() works for double() -> na_half_float()
  
  Start test: as_nanoarrow_array() works for double() -> na_decimal128()
    'test-as-array.R:272:3' [success]
    'test-as-array.R:273:3' [success]
    'test-as-array.R:274:3' [success]
  End test: as_nanoarrow_array() works for double() -> na_decimal128()
  
  Start test: as_nanoarrow_array() works for integer64() -> na_int32()
    'test-as-array.R:282:3' [success]
    'test-as-array.R:283:3' [success]
    'test-as-array.R:284:3' [success]
    'test-as-array.R:285:3' [success]
    'test-as-array.R:286:3' [success]
    'test-as-array.R:293:3' [success]
    'test-as-array.R:294:3' [success]
    'test-as-array.R:295:3' [success]
    'test-as-array.R:300:3' [success]
  End test: as_nanoarrow_array() works for integer64() -> na_int32()
  
  Start test: as_nanoarrow_array() works for integer64() -> na_int64()
    'test-as-array.R:311:3' [success]
    'test-as-array.R:315:3' [success]
    'test-as-array.R:316:3' [success]
    'test-as-array.R:317:3' [success]
    'test-as-array.R:318:3' [success]
    'test-as-array.R:320:3' [success]
    'test-as-array.R:324:3' [success]
    'test-as-array.R:325:3' [success]
    'test-as-array.R:326:3' [success]
    'test-as-array.R:330:3' [success]
  End test: as_nanoarrow_array() works for integer64() -> na_int64()
  
  Start test: as_nanoarrow_array() works for double -> na_int8()
    'test-as-array.R:336:3' [success]
    'test-as-array.R:337:3' [success]
  End test: as_nanoarrow_array() works for double -> na_int8()
  
  Start test: as_nanoarrow_array() works for character() -> na_string()
    'test-as-array.R:343:3' [success]
    'test-as-array.R:344:3' [success]
    'test-as-array.R:345:3' [success]
    'test-as-array.R:346:3' [success]
    'test-as-array.R:347:3' [success]
    'test-as-array.R:351:3' [success]
    'test-as-array.R:358:3' [success]
    'test-as-array.R:359:3' [success]
    'test-as-array.R:360:3' [success]
    'test-as-array.R:364:3' [success]
    'test-as-array.R:368:3' [success]
  End test: as_nanoarrow_array() works for character() -> na_string()
  
  Start test: as_nanoarrow_array() works for character() -> na_large_string()
    'test-as-array.R:377:3' [success]
    'test-as-array.R:378:3' [success]
    'test-as-array.R:379:3' [success]
    'test-as-array.R:380:3' [success]
    'test-as-array.R:381:3' [success]
    'test-as-array.R:388:3' [success]
    'test-as-array.R:389:3' [success]
    'test-as-array.R:390:3' [success]
    'test-as-array.R:394:3' [success]
  End test: as_nanoarrow_array() works for character() -> na_large_string()
  
  Start test: as_nanoarrow_array() works for character() -> na_string_view()
    'test-as-array.R:403:3' [success]
    'test-as-array.R:404:3' [success]
    'test-as-array.R:405:3' [success]
    'test-as-array.R:406:3' [success]
    'test-as-array.R:408:3' [success]
    'test-as-array.R:409:3' [success]
    'test-as-array.R:413:3' [success]
    'test-as-array.R:414:3' [success]
    'test-as-array.R:415:3' [success]
    'test-as-array.R:420:3' [success]
    'test-as-array.R:421:3' [success]
    'test-as-array.R:426:3' [success]
    'test-as-array.R:427:3' [success]
    'test-as-array.R:428:3' [success]
  End test: as_nanoarrow_array() works for character() -> na_string_view()
  
  Start test: as_nanoarrow_array() works for factor() -> na_dictionary()
    'test-as-array.R:437:3' [success]
    'test-as-array.R:438:3' [success]
    'test-as-array.R:440:3' [success]
    'test-as-array.R:441:3' [success]
    'test-as-array.R:446:3' [success]
  End test: as_nanoarrow_array() works for factor() -> na_dictionary()
  
  Start test: as_nanoarrow_array() works for factor() -> na_string()
    'test-as-array.R:458:3' [success]
    'test-as-array.R:459:3' [success]
    'test-as-array.R:461:3' [success]
    'test-as-array.R:462:3' [success]
    'test-as-array.R:466:3' [success]
  End test: as_nanoarrow_array() works for factor() -> na_string()
  
  Start test: as_nanoarrow_array() works for data.frame() -> na_struct()
    'test-as-array.R:474:3' [success]
    'test-as-array.R:475:3' [success]
    'test-as-array.R:476:3' [success]
    'test-as-array.R:477:3' [success]
    'test-as-array.R:478:3' [success]
    'test-as-array.R:479:3' [success]
  End test: as_nanoarrow_array() works for data.frame() -> na_struct()
  
  Start test: as_nanoarrow_array() errors for bad data.frame() -> na_struct()
    'test-as-array.R:483:3' [success]
    'test-as-array.R:489:3' [skip]
  End test: as_nanoarrow_array() errors for bad data.frame() -> na_struct()
  
  Start test: as_nanoarrow_array() works for Date -> na_date32()
    'test-as-array.R:497:3' [success]
    'test-as-array.R:498:3' [success]
    'test-as-array.R:499:3' [success]
    'test-as-array.R:501:3' [success]
    'test-as-array.R:502:3' [success]
    'test-as-array.R:508:3' [success]
    'test-as-array.R:513:3' [success]
  End test: as_nanoarrow_array() works for Date -> na_date32()
  
  Start test: as_nanoarrow_array() works for Date -> na_date64()
    'test-as-array.R:525:3' [success]
    'test-as-array.R:526:3' [success]
    'test-as-array.R:527:3' [success]
    'test-as-array.R:529:3' [success]
    'test-as-array.R:535:3' [success]
  End test: as_nanoarrow_array() works for Date -> na_date64()
  
  Start test: as_nanoarrow_array() works for POSIXct -> na_timestamp()
    'test-as-array.R:547:3' [success]
    'test-as-array.R:548:3' [success]
    'test-as-array.R:549:3' [success]
    'test-as-array.R:551:3' [success]
    'test-as-array.R:557:3' [success]
  End test: as_nanoarrow_array() works for POSIXct -> na_timestamp()
  
  Start test: as_nanoarrow_array() works for difftime -> na_duration()
    'test-as-array.R:569:3' [success]
    'test-as-array.R:570:3' [success]
    'test-as-array.R:571:3' [success]
    'test-as-array.R:573:3' [success]
    'test-as-array.R:582:3' [success]
  End test: as_nanoarrow_array() works for difftime -> na_duration()
  
  Start test: as_nanoarrow_array() works for blob::blob() -> na_binary()
    'test-as-array.R:593:3' [success]
    'test-as-array.R:594:3' [success]
    'test-as-array.R:595:3' [success]
    'test-as-array.R:596:3' [success]
    'test-as-array.R:597:3' [success]
    'test-as-array.R:601:3' [success]
    'test-as-array.R:608:3' [success]
    'test-as-array.R:609:3' [success]
    'test-as-array.R:610:3' [success]
    'test-as-array.R:614:3' [success]
    'test-as-array.R:618:3' [success]
  End test: as_nanoarrow_array() works for blob::blob() -> na_binary()
  
  Start test: as_nanoarrow_array() works for matrix -> na_fixed_size_list()
    'test-as-array.R:629:3' [success]
    'test-as-array.R:630:3' [success]
    'test-as-array.R:631:3' [success]
    'test-as-array.R:632:3' [success]
    'test-as-array.R:639:3' [success]
    'test-as-array.R:640:3' [success]
    'test-as-array.R:641:3' [success]
    'test-as-array.R:642:3' [success]
  End test: as_nanoarrow_array() works for matrix -> na_fixed_size_list()
  
  Start test: as_nanoarrow_array() works for blob::blob() -> na_fixed_size_binary()
    'test-as-array.R:650:3' [success]
    'test-as-array.R:651:3' [success]
    'test-as-array.R:652:3' [success]
    'test-as-array.R:653:3' [success]
    'test-as-array.R:654:3' [success]
    'test-as-array.R:664:3' [success]
    'test-as-array.R:665:3' [success]
    'test-as-array.R:666:3' [success]
    'test-as-array.R:670:3' [success]
  End test: as_nanoarrow_array() works for blob::blob() -> na_fixed_size_binary()
  
  Start test: as_nanoarrow_array() works for blob::blob() -> na_large_binary()
    'test-as-array.R:681:3' [success]
    'test-as-array.R:682:3' [success]
    'test-as-array.R:683:3' [success]
    'test-as-array.R:684:3' [success]
    'test-as-array.R:685:3' [success]
    'test-as-array.R:695:3' [success]
    'test-as-array.R:696:3' [success]
    'test-as-array.R:697:3' [success]
    'test-as-array.R:701:3' [success]
  End test: as_nanoarrow_array() works for blob::blob() -> na_large_binary()
  
  Start test: as_nanoarrow_array() works for blob::blob() -> na_binary_view()
    'test-as-array.R:712:3' [success]
    'test-as-array.R:713:3' [success]
    'test-as-array.R:714:3' [success]
    'test-as-array.R:715:3' [success]
    'test-as-array.R:717:3' [success]
    'test-as-array.R:718:3' [success]
    'test-as-array.R:725:3' [success]
    'test-as-array.R:726:3' [success]
    'test-as-array.R:727:3' [success]
    'test-as-array.R:732:3' [success]
    'test-as-array.R:733:3' [success]
    'test-as-array.R:738:3' [success]
    'test-as-array.R:739:3' [success]
    'test-as-array.R:740:3' [success]
  End test: as_nanoarrow_array() works for blob::blob() -> na_binary_view()
  
  Start test: as_nanoarrow_array() works for list(raw()) -> na_binary()
    'test-as-array.R:746:3' [success]
    'test-as-array.R:747:3' [success]
    'test-as-array.R:748:3' [success]
    'test-as-array.R:749:3' [success]
    'test-as-array.R:750:3' [success]
    'test-as-array.R:754:3' [success]
    'test-as-array.R:761:3' [success]
    'test-as-array.R:762:3' [success]
    'test-as-array.R:763:3' [success]
    'test-as-array.R:767:3' [success]
    'test-as-array.R:771:3' [success]
  End test: as_nanoarrow_array() works for list(raw()) -> na_binary()
  
  Start test: as_nanoarrow_array() works for list(NULL) -> na_list(na_na())
    'test-as-array.R:779:3' [success]
    'test-as-array.R:780:3' [success]
    'test-as-array.R:781:3' [success]
    'test-as-array.R:782:3' [success]
    'test-as-array.R:786:3' [success]
    'test-as-array.R:790:3' [success]
    'test-as-array.R:791:3' [success]
  End test: as_nanoarrow_array() works for list(NULL) -> na_list(na_na())
  
  Start test: as_nanoarrow_array() works for list(integer()) -> na_list(na_int32())
    'test-as-array.R:796:3' [success]
    'test-as-array.R:797:3' [success]
    'test-as-array.R:798:3' [success]
    'test-as-array.R:799:3' [success]
    'test-as-array.R:803:3' [success]
    'test-as-array.R:807:3' [success]
    'test-as-array.R:808:3' [success]
  End test: as_nanoarrow_array() works for list(integer()) -> na_list(na_int32())
  
  Start test: as_nanoarrow_array() works for unspecified() -> na_na()
    'test-as-array.R:815:3' [success]
    'test-as-array.R:816:3' [success]
    'test-as-array.R:817:3' [success]
  End test: as_nanoarrow_array() works for unspecified() -> na_na()
  
  Start test: as_nanoarrow_array() works for bad unspecified() create
    'test-as-array.R:823:3' [skip]
  End test: as_nanoarrow_array() works for bad unspecified() create
  
  Start test: as_nanoarrow_array() can convert data.frame() to sparse_union()
    'test-as-array.R:844:3' [success]
    'test-as-array.R:845:3' [success]
    'test-as-array.R:846:3' [success]
    'test-as-array.R:847:3' [success]
    'test-as-array.R:852:3' [success]
    'test-as-array.R:856:3' [success]
  End test: as_nanoarrow_array() can convert data.frame() to sparse_union()
  
  Start test: as_nanoarrow_array() can convert data.frame() to sparse_union()
    'test-as-array.R:873:3' [success]
    'test-as-array.R:874:3' [success]
    'test-as-array.R:875:3' [success]
    'test-as-array.R:876:3' [success]
    'test-as-array.R:880:3' [success]
    'test-as-array.R:885:3' [success]
    'test-as-array.R:894:3' [success]
  End test: as_nanoarrow_array() can convert data.frame() to sparse_union()
  
  Start test: as_nanoarrow_array() for union type errors for unsupported objects
    'test-as-array.R:898:3' [success]
  End test: as_nanoarrow_array() for union type errors for unsupported objects
  
  Start test: storage_integer_for_decimal generates the correct string output
    'test-as-array.R:910:3' [success]
    'test-as-array.R:918:3' [success]
    'test-as-array.R:926:3' [success]
    'test-as-array.R:934:3' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:948:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
    'test-as-array.R:958:7' [success]
  End test: storage_integer_for_decimal generates the correct string output
  
  Start test: as_nanoarrow_buffer() works for nanoarrow_buffer
    'test-buffer.R:20:3' [success]
  End test: as_nanoarrow_buffer() works for nanoarrow_buffer
  
  Start test: as_nanoarrow_buffer() works for R atomic types
    'test-buffer.R:27:3' [success]
    'test-buffer.R:28:3' [success]
    'test-buffer.R:29:3' [success]
    'test-buffer.R:32:3' [success]
    'test-buffer.R:33:3' [success]
    'test-buffer.R:36:3' [success]
    'test-buffer.R:37:3' [success]
    'test-buffer.R:40:3' [success]
    'test-buffer.R:41:3' [success]
    'test-buffer.R:44:3' [success]
    'test-buffer.R:47:3' [success]
    'test-buffer.R:48:3' [success]
    'test-buffer.R:51:3' [success]
    'test-buffer.R:52:3' [success]
  End test: as_nanoarrow_buffer() works for R atomic types
  
  Start test: as_nanoarrow_array() works for decimal buffer types
    'test-buffer.R:61:3' [success]
    'test-buffer.R:65:3' [success]
    'test-buffer.R:69:3' [success]
    'test-buffer.R:73:3' [success]
  End test: as_nanoarrow_array() works for decimal buffer types
  
  Start test: buffer printer works for decimal buffer types
    'test-buffer.R:78:3' [skip]
  End test: buffer printer works for decimal buffer types
  
  Start test: buffers can be printed
    'test-buffer.R:91:3' [skip]
  End test: buffers can be printed
  
  Start test: buffers whose pointer is NULL print as such
    'test-buffer.R:103:3' [success]
  End test: buffers whose pointer is NULL print as such
  
  Start test: as_nanoarrow_buffer() errors for unsupported types
    'test-buffer.R:107:3' [success]
    'test-buffer.R:112:3' [success]
  End test: as_nanoarrow_buffer() errors for unsupported types
  
  Start test: convert array stream works
    'test-convert-array-stream.R:20:3' [success]
    'test-convert-array-stream.R:23:3' [success]
    'test-convert-array-stream.R:31:3' [success]
    'test-convert-array-stream.R:34:3' [success]
  End test: convert array stream works
  
  Start test: convert array stream with explicit size works
    'test-convert-array-stream.R:39:3' [success]
    'test-convert-array-stream.R:45:3' [success]
    'test-convert-array-stream.R:56:3' [success]
  End test: convert array stream with explicit size works
  
  Start test: convert array stream with functional ptype works
    'test-convert-array-stream.R:78:3' [success]
  End test: convert array stream with functional ptype works
  
  Start test: convert array stream works for nested data.frames
    'test-convert-array-stream.R:90:3' [success]
    'test-convert-array-stream.R:96:3' [success]
    'test-convert-array-stream.R:102:3' [success]
  End test: convert array stream works for nested data.frames
  
  Start test: convert array stream works for struct-style vectors
    'test-convert-array-stream.R:115:3' [success]
    'test-convert-array-stream.R:121:3' [success]
    'test-convert-array-stream.R:128:3' [success]
    'test-convert-array-stream.R:134:3' [success]
  End test: convert array stream works for struct-style vectors
  
  Start test: convert array stream works for fixed_size_list_of() -> matrix()
    'test-convert-array-stream.R:148:3' [success]
    'test-convert-array-stream.R:155:3' [success]
  End test: convert array stream works for fixed_size_list_of() -> matrix()
  
  Start test: convert array stream works for empty fixed_size_list_of() -> matrix()
    'test-convert-array-stream.R:166:3' [success]
  End test: convert array stream works for empty fixed_size_list_of() -> matrix()
  
  Start test: convert array stream works for nested fixed_size_list_of() -> matrix()
    'test-convert-array-stream.R:181:3' [success]
  End test: convert array stream works for nested fixed_size_list_of() -> matrix()
  
  Start test: convert array stream works for fixed_size_list_of() with non-zero offsets -> matrix() 
    'test-convert-array-stream.R:194:3' [success]
    'test-convert-array-stream.R:212:3' [success]
    'test-convert-array-stream.R:229:3' [success]
  End test: convert array stream works for fixed_size_list_of() with non-zero offsets -> matrix() 
  
  Start test: convert array stream works for fixed_size_list_of() with parent nulls -> matrix()
    'test-convert-array-stream.R:249:3' [success]
  End test: convert array stream works for fixed_size_list_of() with parent nulls -> matrix()
  
  Start test: convert array stream respects the value of n
    'test-convert-array-stream.R:263:3' [success]
    'test-convert-array-stream.R:269:3' [success]
    'test-convert-array-stream.R:275:3' [success]
  End test: convert array stream respects the value of n
  
  Start test: fixed-size convert array stream respects the value of n
    'test-convert-array-stream.R:289:3' [success]
    'test-convert-array-stream.R:295:3' [success]
    'test-convert-array-stream.R:301:3' [success]
  End test: fixed-size convert array stream respects the value of n
  
  Start test: fixed-size stream conversion errors when the output has insufficient size
    'test-convert-array-stream.R:309:3' [success]
  End test: fixed-size stream conversion errors when the output has insufficient size
  
  Start test: convert_array() errors for invalid arrays
    'test-convert-array.R:26:3' [success]
  End test: convert_array() errors for invalid arrays
  
  Start test: convert_array() errors for unsupported ptype
    'test-convert-array.R:36:3' [success]
    'test-convert-array.R:42:3' [success]
    'test-convert-array.R:49:3' [success]
  End test: convert_array() errors for unsupported ptype
  
  Start test: convert_array() errors for unsupported array
    'test-convert-array.R:57:3' [success]
  End test: convert_array() errors for unsupported array
  
  Start test: convert to vector works for data.frame
    'test-convert-array.R:67:3' [success]
    'test-convert-array.R:68:3' [success]
    'test-convert-array.R:70:3' [success]
    'test-convert-array.R:76:3' [success]
  End test: convert to vector works for data.frame
  
  Start test: convert to vector works for partial_frame
    'test-convert-array.R:88:3' [success]
  End test: convert to vector works for partial_frame
  
  Start test: convert to vector works for extension<struct> -> data.frame()
    'test-convert-array.R:100:3' [success]
    'test-convert-array.R:100:3' [success]
  End test: convert to vector works for extension<struct> -> data.frame()
  
  Start test: convert to vector works for dictionary<struct> -> data.frame()
    'test-convert-array.R:113:3' [success]
  End test: convert to vector works for dictionary<struct> -> data.frame()
  
  Start test: convert to vector works for function()
    'test-convert-array.R:135:3' [success]
  End test: convert to vector works for function()
  
  Start test: convert to vector works for tibble
    'test-convert-array.R:147:3' [success]
    'test-convert-array.R:156:3' [success]
    'test-convert-array.R:163:3' [success]
  End test: convert to vector works for tibble
  
  Start test: convert to vector works for nanoarrow_vctr()
    'test-convert-array.R:174:3' [success]
    'test-convert-array.R:175:3' [success]
    'test-convert-array.R:177:3' [success]
    'test-convert-array.R:181:3' [success]
    'test-convert-array.R:182:3' [success]
    'test-convert-array.R:184:3' [success]
    'test-convert-array.R:191:3' [success]
    'test-convert-array.R:192:3' [success]
    'test-convert-array.R:194:3' [success]
    'test-convert-array.R:197:3' [success]
    'test-convert-array.R:198:3' [success]
    'test-convert-array.R:200:3' [success]
  End test: convert to vector works for nanoarrow_vctr()
  
  Start test: batched convert to vector works for nanoarrow_vctr()
    'test-convert-array.R:206:3' [success]
    'test-convert-array.R:207:3' [success]
    'test-convert-array.R:211:3' [success]
    'test-convert-array.R:217:3' [success]
    'test-convert-array.R:218:3' [success]
  End test: batched convert to vector works for nanoarrow_vctr()
  
  Start test: convert to vector works for data.frame(nanoarrow_vctr())
    'test-convert-array.R:227:3' [success]
    'test-convert-array.R:228:3' [success]
  End test: convert to vector works for data.frame(nanoarrow_vctr())
  
  Start test: convert to vector works for list_of(nanoarrow_vctr())
    'test-convert-array.R:247:3' [success]
    'test-convert-array.R:249:3' [success]
    'test-convert-array.R:250:3' [success]
    'test-convert-array.R:251:3' [success]
    'test-convert-array.R:253:3' [success]
    'test-convert-array.R:255:3' [success]
    'test-convert-array.R:256:3' [success]
    'test-convert-array.R:257:3' [success]
    'test-convert-array.R:259:3' [success]
    'test-convert-array.R:261:3' [success]
    'test-convert-array.R:263:3' [success]
    'test-convert-array.R:264:3' [success]
    'test-convert-array.R:265:3' [success]
  End test: convert to vector works for list_of(nanoarrow_vctr())
  
  Start test: batched convert to vector works for nanoarrow_vctr() keeps subclass
    'test-convert-array.R:273:3' [success]
    'test-convert-array.R:277:3' [success]
    'test-convert-array.R:281:3' [success]
  End test: batched convert to vector works for nanoarrow_vctr() keeps subclass
  
  Start test: convert to vector works for struct-style vectors
    'test-convert-array.R:286:3' [success]
    'test-convert-array.R:295:3' [success]
  End test: convert to vector works for struct-style vectors
  
  Start test: convert to vector works for unspecified()
    'test-convert-array.R:309:3' [success]
    'test-convert-array.R:315:3' [success]
    'test-convert-array.R:322:3' [success]
    'test-convert-array.R:329:3' [success]
    'test-convert-array.R:329:3' [success]
  End test: convert to vector works for unspecified()
  
  Start test: convert to vector works for valid logical()
    'test-convert-array.R:356:5' [success]
    'test-convert-array.R:356:5' [success]
    'test-convert-array.R:356:5' [success]
    'test-convert-array.R:356:5' [success]
    'test-convert-array.R:356:5' [success]
    'test-convert-array.R:356:5' [success]
    'test-convert-array.R:356:5' [success]
    'test-convert-array.R:356:5' [success]
    'test-convert-array.R:356:5' [success]
    'test-convert-array.R:356:5' [success]
    'test-convert-array.R:367:5' [success]
    'test-convert-array.R:367:5' [success]
    'test-convert-array.R:367:5' [success]
    'test-convert-array.R:367:5' [success]
    'test-convert-array.R:367:5' [success]
    'test-convert-array.R:367:5' [success]
    'test-convert-array.R:367:5' [success]
    'test-convert-array.R:367:5' [success]
    'test-convert-array.R:367:5' [success]
    'test-convert-array.R:367:5' [success]
    'test-convert-array.R:377:3' [success]
    'test-convert-array.R:385:3' [success]
  End test: convert to vector works for valid logical()
  
  Start test: convert to vector works for null -> logical()
    'test-convert-array.R:399:3' [success]
  End test: convert to vector works for null -> logical()
  
  Start test: convert to vector works for extension<boolean> -> logical()
    'test-convert-array.R:408:3' [success]
    'test-convert-array.R:408:3' [success]
  End test: convert to vector works for extension<boolean> -> logical()
  
  Start test: convert to vector works for dictionary<boolean> -> logical()
    'test-convert-array.R:421:3' [success]
  End test: convert to vector works for dictionary<boolean> -> logical()
  
  Start test: convert to vector errors for bad array to logical()
    'test-convert-array.R:428:3' [success]
  End test: convert to vector errors for bad array to logical()
  
  Start test: convert to vector works for valid integer()
    'test-convert-array.R:452:5' [success]
    'test-convert-array.R:452:5' [success]
    'test-convert-array.R:452:5' [success]
    'test-convert-array.R:452:5' [success]
    'test-convert-array.R:452:5' [success]
    'test-convert-array.R:452:5' [success]
    'test-convert-array.R:452:5' [success]
    'test-convert-array.R:452:5' [success]
    'test-convert-array.R:452:5' [success]
    'test-convert-array.R:452:5' [success]
    'test-convert-array.R:463:5' [success]
    'test-convert-array.R:463:5' [success]
    'test-convert-array.R:463:5' [success]
    'test-convert-array.R:463:5' [success]
    'test-convert-array.R:463:5' [success]
    'test-convert-array.R:463:5' [success]
    'test-convert-array.R:463:5' [success]
    'test-convert-array.R:463:5' [success]
    'test-convert-array.R:463:5' [success]
    'test-convert-array.R:463:5' [success]
    'test-convert-array.R:473:3' [success]
    'test-convert-array.R:481:3' [success]
  End test: convert to vector works for valid integer()
  
  Start test: convert to works for integer() -> character()
    'test-convert-array.R:505:5' [success]
    'test-convert-array.R:505:5' [success]
    'test-convert-array.R:505:5' [success]
    'test-convert-array.R:505:5' [success]
    'test-convert-array.R:505:5' [success]
    'test-convert-array.R:505:5' [success]
    'test-convert-array.R:505:5' [success]
  End test: convert to works for integer() -> character()
  
  Start test: convert to vector works for null -> logical()
    'test-convert-array.R:520:3' [success]
  End test: convert to vector works for null -> logical()
  
  Start test: convert to vector works for extension<integer> -> integer()
    'test-convert-array.R:529:3' [success]
    'test-convert-array.R:529:3' [success]
  End test: convert to vector works for extension<integer> -> integer()
  
  Start test: convert to vector warns for invalid integer()
    'test-convert-array.R:540:3' [success]
    'test-convert-array.R:540:3' [success]
    'test-convert-array.R:546:3' [success]
    'test-convert-array.R:546:3' [success]
  End test: convert to vector warns for invalid integer()
  
  Start test: convert to vector errors for bad array to integer()
    'test-convert-array.R:553:3' [success]
  End test: convert to vector errors for bad array to integer()
  
  Start test: convert to vector works for valid double()
    'test-convert-array.R:578:5' [success]
    'test-convert-array.R:578:5' [success]
    'test-convert-array.R:578:5' [success]
    'test-convert-array.R:578:5' [success]
    'test-convert-array.R:578:5' [success]
    'test-convert-array.R:578:5' [success]
    'test-convert-array.R:578:5' [success]
    'test-convert-array.R:578:5' [success]
    'test-convert-array.R:578:5' [success]
    'test-convert-array.R:578:5' [success]
    'test-convert-array.R:578:5' [success]
    'test-convert-array.R:589:5' [success]
    'test-convert-array.R:589:5' [success]
    'test-convert-array.R:589:5' [success]
    'test-convert-array.R:589:5' [success]
    'test-convert-array.R:589:5' [success]
    'test-convert-array.R:589:5' [success]
    'test-convert-array.R:589:5' [success]
    'test-convert-array.R:589:5' [success]
    'test-convert-array.R:589:5' [success]
    'test-convert-array.R:589:5' [success]
    'test-convert-array.R:589:5' [success]
    'test-convert-array.R:599:3' [success]
    'test-convert-array.R:607:3' [success]
  End test: convert to vector works for valid double()
  
  Start test: convert to vector works for decimal -> double()
    'test-convert-array.R:623:5' [success]
    'test-convert-array.R:627:5' [success]
    'test-convert-array.R:632:5' [success]
    'test-convert-array.R:623:5' [success]
    'test-convert-array.R:627:5' [success]
    'test-convert-array.R:632:5' [success]
    'test-convert-array.R:623:5' [success]
    'test-convert-array.R:627:5' [success]
    'test-convert-array.R:632:5' [success]
    'test-convert-array.R:623:5' [success]
    'test-convert-array.R:627:5' [success]
    'test-convert-array.R:632:5' [success]
    'test-convert-array.R:638:3' [success]
    'test-convert-array.R:639:3' [success]
    'test-convert-array.R:640:3' [success]
  End test: convert to vector works for decimal -> double()
  
  Start test: convert to vector works for null -> double()
    'test-convert-array.R:648:3' [success]
  End test: convert to vector works for null -> double()
  
  Start test: convert to vector works for extension<double> -> double()
    'test-convert-array.R:657:3' [success]
    'test-convert-array.R:657:3' [success]
  End test: convert to vector works for extension<double> -> double()
  
  Start test: convert to vector works for dictionary<double> -> double()
    'test-convert-array.R:670:3' [success]
  End test: convert to vector works for dictionary<double> -> double()
  
  Start test: convert to vector warns for possibly invalid double()
    'test-convert-array.R:678:3' [success]
  End test: convert to vector warns for possibly invalid double()
  
  Start test: convert to vector errors for bad array to double()
    'test-convert-array.R:685:3' [success]
  End test: convert to vector errors for bad array to double()
  
  Start test: convert to vector works for valid integer64()
    'test-convert-array.R:710:5' [success]
    'test-convert-array.R:710:5' [success]
    'test-convert-array.R:710:5' [success]
    'test-convert-array.R:710:5' [success]
    'test-convert-array.R:710:5' [success]
    'test-convert-array.R:710:5' [success]
    'test-convert-array.R:710:5' [success]
    'test-convert-array.R:710:5' [success]
    'test-convert-array.R:710:5' [success]
    'test-convert-array.R:710:5' [success]
    'test-convert-array.R:721:5' [success]
    'test-convert-array.R:721:5' [success]
    'test-convert-array.R:721:5' [success]
    'test-convert-array.R:721:5' [success]
    'test-convert-array.R:721:5' [success]
    'test-convert-array.R:721:5' [success]
    'test-convert-array.R:721:5' [success]
    'test-convert-array.R:721:5' [success]
    'test-convert-array.R:721:5' [success]
    'test-convert-array.R:721:5' [success]
    'test-convert-array.R:731:3' [success]
    'test-convert-array.R:739:3' [success]
  End test: convert to vector works for valid integer64()
  
  Start test: convert to vector works for null -> integer64()
    'test-convert-array.R:755:3' [success]
  End test: convert to vector works for null -> integer64()
  
  Start test: convert to vector works for extension<int64> -> integer64()
    'test-convert-array.R:767:3' [success]
    'test-convert-array.R:767:3' [success]
  End test: convert to vector works for extension<int64> -> integer64()
  
  Start test: convert to vector errors for bad array to integer64()
    'test-convert-array.R:779:3' [success]
  End test: convert to vector errors for bad array to integer64()
  
  Start test: convert to vector works for character()
    'test-convert-array.R:787:3' [success]
    'test-convert-array.R:793:3' [success]
    'test-convert-array.R:796:3' [success]
  End test: convert to vector works for character()
  
  Start test: convert to vector works for string_view -> character()
    'test-convert-array.R:804:3' [success]
    'test-convert-array.R:810:3' [success]
  End test: convert to vector works for string_view -> character()
  
  Start test: convert to vector works for null -> character()
    'test-convert-array.R:823:3' [success]
  End test: convert to vector works for null -> character()
  
  Start test: convert to vector works for extension<string> -> character()
    'test-convert-array.R:832:3' [success]
    'test-convert-array.R:832:3' [success]
  End test: convert to vector works for extension<string> -> character()
  
  Start test: convert to vector works for dictionary<string> -> character()
    'test-convert-array.R:845:3' [success]
    'test-convert-array.R:851:3' [success]
  End test: convert to vector works for dictionary<string> -> character()
  
  Start test: convert to vector works for dictionary<string> -> factor()
    'test-convert-array.R:861:3' [success]
    'test-convert-array.R:867:3' [success]
    'test-convert-array.R:873:3' [success]
    'test-convert-array.R:878:3' [success]
  End test: convert to vector works for dictionary<string> -> factor()
  
  Start test: convert to vector works for decimal -> character()
    'test-convert-array.R:891:5' [success]
    'test-convert-array.R:899:5' [success]
    'test-convert-array.R:908:5' [success]
    'test-convert-array.R:891:5' [success]
    'test-convert-array.R:899:5' [success]
    'test-convert-array.R:908:5' [success]
    'test-convert-array.R:891:5' [success]
    'test-convert-array.R:899:5' [success]
    'test-convert-array.R:908:5' [success]
    'test-convert-array.R:891:5' [success]
    'test-convert-array.R:899:5' [success]
    'test-convert-array.R:908:5' [success]
  End test: convert to vector works for decimal -> character()
  
  Start test: batched convert to vector works for dictionary<string> -> factor()
    'test-convert-array.R:923:3' [success]
  End test: batched convert to vector works for dictionary<string> -> factor()
  
  Start test: batched convert to vector errors for dictionary<string> -> factor()
    'test-convert-array.R:937:3' [success]
  End test: batched convert to vector errors for dictionary<string> -> factor()
  
  Start test: convert to vector works for blob::blob()
    'test-convert-array.R:948:3' [success]
    'test-convert-array.R:953:3' [success]
  End test: convert to vector works for blob::blob()
  
  Start test: convert to vector works for binary_view -> blob::blob()
    'test-convert-array.R:963:3' [success]
    'test-convert-array.R:969:3' [success]
  End test: convert to vector works for binary_view -> blob::blob()
  
  Start test: convert to vector works for null -> blob::blob()
    'test-convert-array.R:982:3' [success]
  End test: convert to vector works for null -> blob::blob()
  
  Start test: convert to vector works for list -> vctrs::list_of
    'test-convert-array.R:1000:3' [success]
    'test-convert-array.R:1006:3' [success]
    'test-convert-array.R:1012:3' [success]
    'test-convert-array.R:1020:3' [success]
  End test: convert to vector works for list -> vctrs::list_of
  
  Start test: convert to vector works for large_list -> vctrs::list_of
    'test-convert-array.R:1038:3' [success]
    'test-convert-array.R:1044:3' [success]
    'test-convert-array.R:1050:3' [success]
  End test: convert to vector works for large_list -> vctrs::list_of
  
  Start test: convert to vector works for fixed_size_list -> vctrs::list_of
    'test-convert-array.R:1068:3' [success]
    'test-convert-array.R:1074:3' [success]
    'test-convert-array.R:1080:3' [success]
  End test: convert to vector works for fixed_size_list -> vctrs::list_of
  
  Start test: convert to vector works for null -> vctrs::list_of()
    'test-convert-array.R:1093:3' [success]
  End test: convert to vector works for null -> vctrs::list_of()
  
  Start test: convert to vector works for fixed_size_list_of() -> matrix()
    'test-convert-array.R:1103:3' [success]
  End test: convert to vector works for fixed_size_list_of() -> matrix()
  
  Start test: convert to vector errors for invalid matrix()
    'test-convert-array.R:1110:3' [success]
    'test-convert-array.R:1117:3' [success]
  End test: convert to vector errors for invalid matrix()
  
  Start test: convert to vector works for Date
    'test-convert-array.R:1126:3' [success]
    'test-convert-array.R:1135:3' [success]
  End test: convert to vector works for Date
  
  Start test: convert to vector works for null -> Date
    'test-convert-array.R:1146:3' [success]
  End test: convert to vector works for null -> Date
  
  Start test: convert to vector works for hms
    'test-convert-array.R:1156:3' [success]
  End test: convert to vector works for hms
  
  Start test: convert to vector works for null -> hms
    'test-convert-array.R:1169:3' [success]
  End test: convert to vector works for null -> hms
  
  Start test: convert to vector works for POSIXct
    'test-convert-array.R:1180:3' [success]
  End test: convert to vector works for POSIXct
  
  Start test: convert to vector works for null -> POSIXct
    'test-convert-array.R:1191:3' [success]
  End test: convert to vector works for null -> POSIXct
  
  Start test: convert to vector works for difftime
    'test-convert-array.R:1202:3' [success]
    'test-convert-array.R:1205:3' [success]
    'test-convert-array.R:1209:3' [success]
    'test-convert-array.R:1212:3' [success]
    'test-convert-array.R:1215:3' [success]
    'test-convert-array.R:1218:3' [success]
    'test-convert-array.R:1223:3' [success]
    'test-convert-array.R:1226:3' [success]
    'test-convert-array.R:1229:3' [success]
    'test-convert-array.R:1232:3' [success]
    'test-convert-array.R:1236:3' [success]
    'test-convert-array.R:1242:3' [success]
    'test-convert-array.R:1248:3' [success]
    'test-convert-array.R:1254:3' [success]
    'test-convert-array.R:1260:3' [success]
  End test: convert to vector works for difftime
  
  Start test: convert to vector works for null -> difftime
    'test-convert-array.R:1271:3' [success]
  End test: convert to vector works for null -> difftime
  
  Start test: convert to vector works for data frames nested inside lists
    'test-convert-array.R:1288:3' [success]
  End test: convert to vector works for data frames nested inside lists
  
  Start test: convert to vector works for lists nested in data frames
    'test-convert-array.R:1307:3' [success]
  End test: convert to vector works for lists nested in data frames
  
  Start test: vctrs extension type can roundtrip built-in vector types
    'test-extension-vctrs.R:46:5' [success]
    'test-extension-vctrs.R:47:5' [success]
    'test-extension-vctrs.R:48:5' [success]
    'test-extension-vctrs.R:52:5' [success]
    'test-extension-vctrs.R:56:5' [success]
    'test-extension-vctrs.R:46:5' [success]
    'test-extension-vctrs.R:47:5' [success]
    'test-extension-vctrs.R:48:5' [success]
    'test-extension-vctrs.R:52:5' [success]
    'test-extension-vctrs.R:56:5' [success]
    'test-extension-vctrs.R:46:5' [success]
    'test-extension-vctrs.R:47:5' [success]
    'test-extension-vctrs.R:48:5' [success]
    'test-extension-vctrs.R:52:5' [success]
    'test-extension-vctrs.R:56:5' [success]
    'test-extension-vctrs.R:46:5' [success]
    'test-extension-vctrs.R:47:5' [success]
    'test-extension-vctrs.R:48:5' [success]
    'test-extension-vctrs.R:52:5' [success]
    'test-extension-vctrs.R:56:5' [success]
    'test-extension-vctrs.R:46:5' [success]
    'test-extension-vctrs.R:47:5' [success]
    'test-extension-vctrs.R:48:5' [success]
    'test-extension-vctrs.R:52:5' [success]
    'test-extension-vctrs.R:56:5' [success]
    'test-extension-vctrs.R:46:5' [success]
    'test-extension-vctrs.R:47:5' [success]
    'test-extension-vctrs.R:48:5' [success]
    'test-extension-vctrs.R:52:5' [success]
    'test-extension-vctrs.R:56:5' [success]
    'test-extension-vctrs.R:46:5' [success]
    'test-extension-vctrs.R:47:5' [success]
    'test-extension-vctrs.R:48:5' [success]
    'test-extension-vctrs.R:52:5' [success]
    'test-extension-vctrs.R:56:5' [success]
    'test-extension-vctrs.R:46:5' [success]
    'test-extension-vctrs.R:47:5' [success]
    'test-extension-vctrs.R:48:5' [success]
    'test-extension-vctrs.R:52:5' [success]
    'test-extension-vctrs.R:56:5' [success]
    'test-extension-vctrs.R:46:5' [success]
    'test-extension-vctrs.R:47:5' [success]
    'test-extension-vctrs.R:48:5' [success]
    'test-extension-vctrs.R:52:5' [success]
    'test-extension-vctrs.R:56:5' [success]
    'test-extension-vctrs.R:46:5' [success]
    'test-extension-vctrs.R:47:5' [success]
    'test-extension-vctrs.R:48:5' [success]
    'test-extension-vctrs.R:52:5' [success]
    'test-extension-vctrs.R:56:5' [success]
  End test: vctrs extension type can roundtrip built-in vector types
  
  Start test: vctrs extension type respects `to` in convert_array()
    'test-extension-vctrs.R:66:3' [success]
    'test-extension-vctrs.R:67:3' [success]
  End test: vctrs extension type respects `to` in convert_array()
  
  Start test: serialize_ptype() can roundtrip R objects
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
    'test-extension-vctrs.R:105:5' [success]
    'test-extension-vctrs.R:111:5' [success]
    'test-extension-vctrs.R:116:5' [success]
  End test: serialize_ptype() can roundtrip R objects
  
  Start test: serialize_ptype() errors for unsupported R objects
    'test-extension-vctrs.R:126:3' [success]
    'test-extension-vctrs.R:131:3' [success]
  End test: serialize_ptype() errors for unsupported R objects
  
  Start test: extension types can be registered and unregistered
    'test-extension.R:21:3' [success]
    'test-extension.R:23:3' [success]
  End test: extension types can be registered and unregistered
  
  Start test: infer_nanoarrow_ptype() dispatches on registered extension spec
    'test-extension.R:43:3' [success]
  End test: infer_nanoarrow_ptype() dispatches on registered extension spec
  
  Start test: convert_array() dispatches on registered extension spec
    'test-extension.R:79:3' [success]
  End test: convert_array() dispatches on registered extension spec
  
  Start test: as_nanoarrow_array() dispatches on registered extension spec
    'test-extension.R:94:3' [success]
    'test-extension.R:123:3' [success]
  End test: as_nanoarrow_array() dispatches on registered extension spec
  
  Start test: inferring the type of an unregistered extension warns
    'test-extension.R:131:3' [success]
    'test-extension.R:138:3' [success]
    'test-extension.R:145:3' [success]
  End test: inferring the type of an unregistered extension warns
  
  Start test: extensions can infer a schema of a nanoarrow_vctr() subclass
    'test-extension.R:168:3' [success]
    'test-extension.R:175:3' [success]
    'test-extension.R:181:3' [success]
    'test-extension.R:182:3' [success]
    'test-extension.R:182:3' [success]
  End test: extensions can infer a schema of a nanoarrow_vctr() subclass
  
  Start test: infer_nanoarrow_ptype() works on arrays, schemas, and streams
    'test-infer-ptype.R:20:3' [success]
    'test-infer-ptype.R:23:3' [success]
    'test-infer-ptype.R:26:3' [success]
    'test-infer-ptype.R:28:3' [success]
  End test: infer_nanoarrow_ptype() works on arrays, schemas, and streams
  
  Start test: infer_nanoarrow_ptype() works for basic types
    'test-infer-ptype.R:37:3' [success]
    'test-infer-ptype.R:42:3' [success]
    'test-infer-ptype.R:47:3' [success]
    'test-infer-ptype.R:52:3' [success]
    'test-infer-ptype.R:57:3' [success]
    'test-infer-ptype.R:62:3' [success]
    'test-infer-ptype.R:67:3' [success]
  End test: infer_nanoarrow_ptype() works for basic types
  
  Start test: infer_nanoarrow_ptype() infers ptypes for date/time types
    'test-infer-ptype.R:79:3' [success]
    'test-infer-ptype.R:85:3' [success]
    'test-infer-ptype.R:91:3' [success]
    'test-infer-ptype.R:99:3' [success]
  End test: infer_nanoarrow_ptype() infers ptypes for date/time types
  
  Start test: infer_nanoarrow_ptype() infers ptypes for nested types
    'test-infer-ptype.R:110:3' [success]
    'test-infer-ptype.R:121:3' [success]
  End test: infer_nanoarrow_ptype() infers ptypes for nested types
  
  Start test: infer_nanoarrow_ptype() errors for types it can't infer
    'test-infer-ptype.R:129:3' [success]
    'test-infer-ptype.R:137:3' [success]
  End test: infer_nanoarrow_ptype() errors for types it can't infer
  
  Start test: read_nanoarrow() works for raw vectors
    'test-ipc.R:20:3' [success]
    'test-ipc.R:21:3' [success]
  End test: read_nanoarrow() works for raw vectors
  
  Start test: read_nanoarrow() works for open connections
    'test-ipc.R:32:3' [success]
    'test-ipc.R:33:3' [success]
  End test: read_nanoarrow() works for open connections
  
  Start test: write_nanoarrow() works for open connections
    'test-ipc.R:47:3' [success]
  End test: write_nanoarrow() works for open connections
  
  Start test: read_nanoarrow() works for unopened connections
    'test-ipc.R:65:3' [success]
    'test-ipc.R:67:3' [success]
  End test: read_nanoarrow() works for unopened connections
  
  Start test: write_nanoarrow() works for unopened connections
    'test-ipc.R:81:3' [success]
  End test: write_nanoarrow() works for unopened connections
  
  Start test: read_nanoarrow() works for file paths
    'test-ipc.R:96:3' [success]
  End test: read_nanoarrow() works for file paths
  
  Start test: write_nanoarrow() works for file paths
    'test-ipc.R:107:3' [success]
    'test-ipc.R:108:3' [success]
  End test: write_nanoarrow() works for file paths
  
  Start test: read_nanoarrow() works for URLs
    'test-ipc.R:120:3' [success]
  End test: read_nanoarrow() works for URLs
  
  Start test: read_nanoarrow() works with buffer compression
    'test-ipc.R:130:3' [success]
    'test-ipc.R:131:3' [success]
  End test: read_nanoarrow() works with buffer compression
  
  Start test: write_nanoarrow() works for URLs
    'test-ipc.R:142:3' [success]
    'test-ipc.R:143:3' [success]
  End test: write_nanoarrow() works for URLs
  
  Start test: read_nanoarrow() works for compressed .gz file paths
    'test-ipc.R:155:3' [success]
  End test: read_nanoarrow() works for compressed .gz file paths
  
  Start test: write_nanoarrow() works for compressed .gz file paths
    'test-ipc.R:166:3' [success]
    'test-ipc.R:167:3' [success]
  End test: write_nanoarrow() works for compressed .gz file paths
  
  Start test: read_nanoarrow() works for compressed .bz2 file paths
    'test-ipc.R:179:3' [success]
  End test: read_nanoarrow() works for compressed .bz2 file paths
  
  Start test: write_nanoarrow() works for compressed .bz2 file paths
    'test-ipc.R:190:3' [success]
    'test-ipc.R:191:3' [success]
  End test: write_nanoarrow() works for compressed .bz2 file paths
  
  Start test: read_nanoarrow() works for compressed .zip file paths
    'test-ipc.R:216:3' [success]
  End test: read_nanoarrow() works for compressed .zip file paths
  
  Start test: write_nanoarrow() errors for compressed .zip file paths
    'test-ipc.R:227:3' [success]
  End test: write_nanoarrow() errors for compressed .zip file paths
  
  Start test: read_nanoarrow() errors for compressed URL paths
    'test-ipc.R:234:3' [success]
  End test: read_nanoarrow() errors for compressed URL paths
  
  Start test: read|write_nanoarrow() errors for input with length != 1
    'test-ipc.R:241:3' [success]
    'test-ipc.R:245:3' [success]
  End test: read|write_nanoarrow() errors for input with length != 1
  
  Start test: read_nanoarrow() errors zip archives that contain files != 1
    'test-ipc.R:268:3' [success]
  End test: read_nanoarrow() errors zip archives that contain files != 1
  
  Start test: read_nanoarrow() reports errors from readBin
    'test-ipc.R:282:3' [success]
  End test: read_nanoarrow() reports errors from readBin
  
  Start test: write_nanoarrow() reports errors from writeBin
    'test-ipc.R:294:3' [success]
  End test: write_nanoarrow() reports errors from writeBin
  
  Start test: read_nanoarrow() respects lazy argument
    'test-ipc.R:301:3' [success]
    'test-ipc.R:307:3' [success]
    'test-ipc.R:319:3' [success]
    'test-ipc.R:325:3' [success]
    'test-ipc.R:331:3' [success]
    'test-ipc.R:337:3' [success]
  End test: read_nanoarrow() respects lazy argument
  
  Start test: read_nanoarrow() from connection errors when called from another thread
    'test-ipc.R:362:3' [success]
  End test: read_nanoarrow() from connection errors when called from another thread
  
  Start test: nanoarrow_version() works
    'test-nanoarrow-package.R:19:3' [success]
  End test: nanoarrow_version() works
  
  Start test: infer_type() for nanoarrow_array works
    'test-pkg-arrow.R:22:3' [success]
  End test: infer_type() for nanoarrow_array works
  
  Start test: infer_nanoarrow_schema() works for arrow objects
    'test-pkg-arrow.R:31:3' [success]
    'test-pkg-arrow.R:34:3' [success]
    'test-pkg-arrow.R:37:3' [success]
    'test-pkg-arrow.R:40:3' [success]
    'test-pkg-arrow.R:44:3' [success]
    'test-pkg-arrow.R:47:3' [success]
    'test-pkg-arrow.R:52:3' [success]
    'test-pkg-arrow.R:59:3' [success]
    'test-pkg-arrow.R:66:3' [success]
  End test: infer_nanoarrow_schema() works for arrow objects
  
  Start test: nanoarrow_array to Array works
    'test-pkg-arrow.R:73:3' [success]
    'test-pkg-arrow.R:76:3' [success]
    'test-pkg-arrow.R:79:3' [success]
    'test-pkg-arrow.R:82:3' [success]
  End test: nanoarrow_array to Array works
  
  Start test: nanoarrow_array to Array works for child arrays
    'test-pkg-arrow.R:99:3' [success]
    'test-pkg-arrow.R:102:3' [success]
    'test-pkg-arrow.R:103:3' [success]
    'test-pkg-arrow.R:104:3' [success]
    'test-pkg-arrow.R:114:3' [success]
    'test-pkg-arrow.R:115:3' [success]
    'test-pkg-arrow.R:116:3' [success]
    'test-pkg-arrow.R:125:3' [success]
  End test: nanoarrow_array to Array works for child arrays
  
  Start test: Array to nanoarrow_array works
    'test-pkg-arrow.R:133:3' [success]
    'test-pkg-arrow.R:135:3' [success]
    'test-pkg-arrow.R:137:3' [success]
    'test-pkg-arrow.R:144:3' [success]
    'test-pkg-arrow.R:146:3' [success]
    'test-pkg-arrow.R:148:3' [success]
  End test: Array to nanoarrow_array works
  
  Start test: nanoarrow_array to ChunkedArray works
    'test-pkg-arrow.R:159:3' [success]
    'test-pkg-arrow.R:162:3' [success]
  End test: nanoarrow_array to ChunkedArray works
  
  Start test: ChunkedArray to nanoarrow_array works
    'test-pkg-arrow.R:170:3' [success]
    'test-pkg-arrow.R:172:3' [success]
    'test-pkg-arrow.R:174:3' [success]
    'test-pkg-arrow.R:181:3' [success]
    'test-pkg-arrow.R:183:3' [success]
    'test-pkg-arrow.R:185:3' [success]
  End test: ChunkedArray to nanoarrow_array works
  
  Start test: ChunkedArray to nanoarrow_array_stream works
    'test-pkg-arrow.R:197:3' [success]
    'test-pkg-arrow.R:199:3' [success]
    'test-pkg-arrow.R:206:3' [success]
    'test-pkg-arrow.R:208:3' [success]
  End test: ChunkedArray to nanoarrow_array_stream works
  
  Start test: Array to nanoarrow_array_stream works
    'test-pkg-arrow.R:220:3' [success]
    'test-pkg-arrow.R:222:3' [success]
    'test-pkg-arrow.R:229:3' [success]
    'test-pkg-arrow.R:231:3' [success]
    'test-pkg-arrow.R:238:3' [success]
  End test: Array to nanoarrow_array_stream works
  
  Start test: nanoarrow_array to RecordBatch works
    'test-pkg-arrow.R:250:3' [success]
    'test-pkg-arrow.R:258:3' [success]
  End test: nanoarrow_array to RecordBatch works
  
  Start test: RecordBatch to nanoarrow_array
    'test-pkg-arrow.R:270:3' [success]
    'test-pkg-arrow.R:272:3' [success]
    'test-pkg-arrow.R:274:3' [success]
    'test-pkg-arrow.R:284:3' [success]
    'test-pkg-arrow.R:286:3' [success]
    'test-pkg-arrow.R:288:3' [success]
  End test: RecordBatch to nanoarrow_array
  
  Start test: nanoarrow_array to Table works
    'test-pkg-arrow.R:300:3' [success]
    'test-pkg-arrow.R:308:3' [success]
  End test: nanoarrow_array to Table works
  
  Start test: Table to nanoarrow_array
    'test-pkg-arrow.R:320:3' [success]
    'test-pkg-arrow.R:322:3' [success]
    'test-pkg-arrow.R:324:3' [success]
    'test-pkg-arrow.R:334:3' [success]
    'test-pkg-arrow.R:336:3' [success]
    'test-pkg-arrow.R:338:3' [success]
  End test: Table to nanoarrow_array
  
  Start test: Table to nanoarrow_array_stream works
    'test-pkg-arrow.R:350:3' [success]
    'test-pkg-arrow.R:352:3' [success]
    'test-pkg-arrow.R:360:3' [success]
    'test-pkg-arrow.R:374:3' [success]
    'test-pkg-arrow.R:376:3' [success]
  End test: Table to nanoarrow_array_stream works
  
  Start test: Dataset to nanoarrow_array_stream works
    'test-pkg-arrow.R:389:3' [success]
    'test-pkg-arrow.R:391:3' [success]
  End test: Dataset to nanoarrow_array_stream works
  
  Start test: Scanner to nanoarrow_array_stream works
    'test-pkg-arrow.R:405:3' [success]
    'test-pkg-arrow.R:407:3' [success]
  End test: Scanner to nanoarrow_array_stream works
  
  Start test: nanoarrow_schema to DataType works
    'test-pkg-arrow.R:419:3' [success]
  End test: nanoarrow_schema to DataType works
  
  Start test: DataType to nanoarrow_schema
    'test-pkg-arrow.R:426:3' [success]
    'test-pkg-arrow.R:427:3' [success]
  End test: DataType to nanoarrow_schema
  
  Start test: Field to nanoarrow_schema
    'test-pkg-arrow.R:434:3' [success]
    'test-pkg-arrow.R:435:3' [success]
  End test: Field to nanoarrow_schema
  
  Start test: nanoarrow_schema to Schema works
    'test-pkg-arrow.R:445:3' [success]
  End test: nanoarrow_schema to Schema works
  
  Start test: Schema to nanoarrow_schema
    'test-pkg-arrow.R:452:3' [success]
    'test-pkg-arrow.R:453:3' [success]
  End test: Schema to nanoarrow_schema
  
  Start test: nanoarrow_array_stream to RecordBatchReader works
    'test-pkg-arrow.R:465:3' [success]
    'test-pkg-arrow.R:466:3' [success]
    'test-pkg-arrow.R:471:3' [success]
  End test: nanoarrow_array_stream to RecordBatchReader works
  
  Start test: RecordBatchReader to nanoarrow_array_stream works
    'test-pkg-arrow.R:481:3' [success]
    'test-pkg-arrow.R:484:3' [success]
    'test-pkg-arrow.R:489:3' [success]
  End test: RecordBatchReader to nanoarrow_array_stream works
  
  Start test: nanoarrow_pointer_is_valid() works
    'test-pointers.R:19:3' [success]
    'test-pointers.R:20:3' [success]
    'test-pointers.R:21:3' [success]
    'test-pointers.R:25:3' [success]
    'test-pointers.R:26:3' [success]
    'test-pointers.R:27:3' [success]
    'test-pointers.R:29:3' [success]
  End test: nanoarrow_pointer_is_valid() works
  
  Start test: nanoarrow_pointer_release() works
    'test-pointers.R:34:3' [success]
    'test-pointers.R:36:3' [success]
    'test-pointers.R:39:3' [success]
    'test-pointers.R:41:3' [success]
    'test-pointers.R:44:3' [success]
    'test-pointers.R:46:3' [success]
    'test-pointers.R:48:3' [success]
  End test: nanoarrow_pointer_release() works
  
  Start test: nanoarrow_pointer_move() works for schema
    'test-pointers.R:55:3' [success]
    'test-pointers.R:56:3' [success]
    'test-pointers.R:58:3' [success]
    'test-pointers.R:63:3' [success]
  End test: nanoarrow_pointer_move() works for schema
  
  Start test: nanoarrow_pointer_move() works for array
    'test-pointers.R:73:3' [success]
    'test-pointers.R:74:3' [success]
    'test-pointers.R:76:3' [success]
    'test-pointers.R:81:3' [success]
  End test: nanoarrow_pointer_move() works for array
  
  Start test: nanoarrow_pointer_move() works for array_stream
    'test-pointers.R:91:3' [success]
    'test-pointers.R:92:3' [success]
    'test-pointers.R:94:3' [success]
    'test-pointers.R:99:3' [success]
  End test: nanoarrow_pointer_move() works for array_stream
  
  Start test: nanoarrow_pointer_move() can import from chr address
    'test-pointers.R:111:3' [success]
    'test-pointers.R:112:3' [success]
  End test: nanoarrow_pointer_move() can import from chr address
  
  Start test: nanoarrow_pointer_move() can import from dbl address
    'test-pointers.R:121:3' [success]
    'test-pointers.R:122:3' [success]
  End test: nanoarrow_pointer_move() can import from dbl address
  
  Start test: nanoarrow_pointer_move() errors for bad input
    'test-pointers.R:128:3' [success]
    'test-pointers.R:129:3' [success]
  End test: nanoarrow_pointer_move() errors for bad input
  
  Start test: nanoarrow_pointer_export() works for schema
    'test-pointers.R:139:3' [success]
    'test-pointers.R:140:3' [success]
    'test-pointers.R:142:3' [success]
    'test-pointers.R:147:3' [success]
  End test: nanoarrow_pointer_export() works for schema
  
  Start test: nanoarrow_pointer_export() works for array
    'test-pointers.R:157:3' [success]
    'test-pointers.R:160:3' [success]
    'test-pointers.R:162:3' [success]
    'test-pointers.R:167:3' [success]
  End test: nanoarrow_pointer_export() works for array
  
  Start test: exported Arrays can have their children released
    'test-pointers.R:178:3' [success]
    'test-pointers.R:181:3' [success]
    'test-pointers.R:184:3' [success]
    'test-pointers.R:187:3' [success]
  End test: exported Arrays can have their children released
  
  Start test: nanoarrow_pointer_export() works for array_stream
    'test-pointers.R:194:3' [success]
    'test-pointers.R:195:3' [success]
    'test-pointers.R:197:3' [success]
    'test-pointers.R:199:3' [success]
    'test-pointers.R:204:3' [success]
  End test: nanoarrow_pointer_export() works for array_stream
  
  Start test: nanoarrow_pointer_export() works for wrapped array_stream
    'test-pointers.R:217:3' [success]
    'test-pointers.R:218:3' [success]
    'test-pointers.R:220:3' [success]
  End test: nanoarrow_pointer_export() works for wrapped array_stream
  
  Start test: nanoarrow_pointer_set_protected() errors appropriately
    'test-pointers.R:224:3' [success]
    'test-pointers.R:231:3' [success]
  End test: nanoarrow_pointer_set_protected() errors appropriately
  
  Start test: nanoarrow_pointer_export() errors for unknown object
    'test-pointers.R:238:3' [success]
  End test: nanoarrow_pointer_export() errors for unknown object
  
  Start test: pointer address getters work
    'test-pointers.R:243:3' [success]
    'test-pointers.R:244:3' [success]
  End test: pointer address getters work
  
  Start test: nanoarrow_schema format, print, and str methods work
    'test-schema.R:20:3' [success]
    'test-schema.R:21:3' [success]
    'test-schema.R:21:3' [success]
    'test-schema.R:22:3' [success]
    'test-schema.R:22:3' [success]
  End test: nanoarrow_schema format, print, and str methods work
  
  Start test: nanoarrow_schema format, print, and str methods work for invalid pointers
    'test-schema.R:27:3' [success]
    'test-schema.R:28:3' [success]
    'test-schema.R:28:3' [success]
    'test-schema.R:29:3' [success]
    'test-schema.R:29:3' [success]
  End test: nanoarrow_schema format, print, and str methods work for invalid pointers
  
  Start test: as_nanoarrow_schema() works for nanoarrow_schema
    'test-schema.R:34:3' [success]
  End test: as_nanoarrow_schema() works for nanoarrow_schema
  
  Start test: infer_nanoarrow_schema() errors for unsupported types
    'test-schema.R:38:3' [success]
  End test: infer_nanoarrow_schema() errors for unsupported types
  
  Start test: infer_nanoarrow_schema() methods work for built-in types
    'test-schema.R:45:3' [success]
    'test-schema.R:46:3' [success]
    'test-schema.R:47:3' [success]
    'test-schema.R:48:3' [success]
    'test-schema.R:49:3' [success]
    'test-schema.R:50:3' [success]
    'test-schema.R:52:3' [success]
    'test-schema.R:53:3' [success]
    'test-schema.R:56:3' [success]
    'test-schema.R:62:5' [success]
    'test-schema.R:69:3' [success]
    'test-schema.R:72:3' [success]
    'test-schema.R:73:3' [success]
  End test: infer_nanoarrow_schema() methods work for built-in types
  
  Start test: infer_nanoarrow_schema() methods work for blob type
    'test-schema.R:79:3' [success]
  End test: infer_nanoarrow_schema() methods work for blob type
  
  Start test: infer_nanoarrow_schema() methods work for hms type
    'test-schema.R:85:3' [success]
  End test: infer_nanoarrow_schema() methods work for hms type
  
  Start test: infer_nanoarrow_schema() method works for matrix type
    'test-schema.R:89:3' [success]
  End test: infer_nanoarrow_schema() method works for matrix type
  
  Start test: infer_nanoarrow_schema() methods work for vctrs types
    'test-schema.R:95:3' [success]
    'test-schema.R:98:3' [success]
    'test-schema.R:99:3' [success]
  End test: infer_nanoarrow_schema() methods work for vctrs types
  
  Start test: infer_nanoarrow_schema() method works for integer64()
    'test-schema.R:104:3' [success]
  End test: infer_nanoarrow_schema() method works for integer64()
  
  Start test: infer_nanoarrow_schema() method works for AsIs
    'test-schema.R:108:3' [success]
  End test: infer_nanoarrow_schema() method works for AsIs
  
  Start test: infer_nanoarrow_schema() returns list of null for empty or all null list
    'test-schema.R:115:3' [success]
    'test-schema.R:116:3' [success]
    'test-schema.R:117:3' [success]
    'test-schema.R:118:3' [success]
  End test: infer_nanoarrow_schema() returns list of null for empty or all null list
  
  Start test: infer_nanoarrow_schema() returns binary for list of raw
    'test-schema.R:122:3' [success]
    'test-schema.R:123:3' [success]
  End test: infer_nanoarrow_schema() returns binary for list of raw
  
  Start test: nanoarrow_schema_parse() works
    'test-schema.R:128:3' [success]
    'test-schema.R:129:3' [success]
    'test-schema.R:132:3' [success]
    'test-schema.R:135:3' [success]
    'test-schema.R:136:3' [success]
    'test-schema.R:137:3' [success]
    'test-schema.R:140:3' [success]
    'test-schema.R:143:3' [success]
    'test-schema.R:149:3' [success]
    'test-schema.R:155:3' [success]
    'test-schema.R:156:3' [success]
  End test: nanoarrow_schema_parse() works
  
  Start test: nanoarrow_schema_parse() works for extension types
    'test-schema.R:164:3' [success]
    'test-schema.R:165:3' [success]
    'test-schema.R:166:3' [success]
    'test-schema.R:167:3' [success]
  End test: nanoarrow_schema_parse() works for extension types
  
  Start test: schema list interface works for non-nested types
    'test-schema.R:172:3' [success]
    'test-schema.R:173:3' [success]
    'test-schema.R:177:3' [success]
    'test-schema.R:178:3' [success]
    'test-schema.R:179:3' [success]
    'test-schema.R:180:3' [success]
    'test-schema.R:181:3' [success]
    'test-schema.R:182:3' [success]
  End test: schema list interface works for non-nested types
  
  Start test: schema list interface works for nested types
    'test-schema.R:188:3' [success]
    'test-schema.R:189:3' [success]
    'test-schema.R:190:3' [success]
    'test-schema.R:191:3' [success]
    'test-schema.R:192:3' [success]
    'test-schema.R:193:3' [success]
    'test-schema.R:194:3' [success]
    'test-schema.R:197:3' [success]
    'test-schema.R:198:3' [success]
  End test: schema list interface works for nested types
  
  Start test: schema list interface works for dictionary types
    'test-schema.R:204:3' [success]
    'test-schema.R:205:3' [success]
    'test-schema.R:206:3' [success]
    'test-schema.R:209:3' [success]
    'test-schema.R:210:3' [success]
  End test: schema list interface works for dictionary types
  
  Start test: schema list interface works with metadata
    'test-schema.R:215:3' [success]
    'test-schema.R:219:3' [success]
  End test: schema list interface works with metadata
  
  Start test: schema modify errors for invalid components
    'test-schema.R:228:3' [success]
    'test-schema.R:233:3' [success]
  End test: schema modify errors for invalid components
  
  Start test: schema modify does not copy if length(new_values) == 0
    'test-schema.R:241:3' [success]
  End test: schema modify does not copy if length(new_values) == 0
  
  Start test: schema modify can modify format
    'test-schema.R:251:3' [success]
    'test-schema.R:252:3' [success]
    'test-schema.R:253:3' [success]
    'test-schema.R:255:3' [success]
    'test-schema.R:260:3' [success]
  End test: schema modify can modify format
  
  Start test: schema modify can modify name
    'test-schema.R:270:3' [success]
    'test-schema.R:271:3' [success]
    'test-schema.R:272:3' [success]
    'test-schema.R:275:3' [success]
    'test-schema.R:276:3' [success]
    'test-schema.R:277:3' [success]
    'test-schema.R:279:3' [success]
  End test: schema modify can modify name
  
  Start test: schema modify can modify flags
    'test-schema.R:287:3' [success]
    'test-schema.R:290:3' [success]
    'test-schema.R:291:3' [success]
    'test-schema.R:292:3' [success]
    'test-schema.R:294:3' [success]
  End test: schema modify can modify flags
  
  Start test: schema modify can modify metadata
    'test-schema.R:304:3' [success]
    'test-schema.R:305:3' [success]
    'test-schema.R:308:3' [success]
    'test-schema.R:309:3' [success]
    'test-schema.R:312:3' [success]
    'test-schema.R:313:3' [success]
    'test-schema.R:319:3' [success]
    'test-schema.R:320:3' [success]
    'test-schema.R:322:3' [success]
    'test-schema.R:327:3' [success]
    'test-schema.R:332:3' [success]
    'test-schema.R:337:3' [success]
    'test-schema.R:342:3' [success]
    'test-schema.R:347:3' [success]
  End test: schema modify can modify metadata
  
  Start test: schema modify can modify children
    'test-schema.R:363:3' [success]
    'test-schema.R:364:3' [success]
    'test-schema.R:371:3' [success]
    'test-schema.R:372:3' [success]
    'test-schema.R:379:3' [success]
    'test-schema.R:380:3' [success]
    'test-schema.R:381:3' [success]
    'test-schema.R:382:3' [success]
    'test-schema.R:389:3' [success]
    'test-schema.R:390:3' [success]
    'test-schema.R:391:3' [success]
    'test-schema.R:392:3' [success]
    'test-schema.R:399:3' [success]
    'test-schema.R:400:3' [success]
    'test-schema.R:401:3' [success]
    'test-schema.R:402:3' [success]
    'test-schema.R:409:3' [success]
    'test-schema.R:410:3' [success]
    'test-schema.R:411:3' [success]
    'test-schema.R:412:3' [success]
    'test-schema.R:422:3' [success]
    'test-schema.R:423:3' [success]
    'test-schema.R:430:3' [success]
    'test-schema.R:431:3' [success]
    'test-schema.R:432:3' [success]
    'test-schema.R:433:3' [success]
    'test-schema.R:446:3' [success]
    'test-schema.R:447:3' [success]
    'test-schema.R:448:3' [success]
    'test-schema.R:449:3' [success]
    'test-schema.R:450:3' [success]
  End test: schema modify can modify children
  
  Start test: schema modify can modify dictionary
    'test-schema.R:462:3' [success]
    'test-schema.R:463:3' [success]
    'test-schema.R:464:3' [success]
    'test-schema.R:465:3' [success]
    'test-schema.R:473:3' [success]
    'test-schema.R:474:3' [success]
    'test-schema.R:475:3' [success]
    'test-schema.R:476:3' [success]
    'test-schema.R:485:3' [success]
    'test-schema.R:486:3' [success]
    'test-schema.R:487:3' [success]
    'test-schema.R:488:3' [success]
    'test-schema.R:496:3' [success]
    'test-schema.R:497:3' [success]
    'test-schema.R:498:3' [success]
    'test-schema.R:499:3' [success]
  End test: schema modify can modify dictionary
  
  Start test: schema modify respects the validate flag
    'test-schema.R:511:3' [success]
    'test-schema.R:513:3' [success]
  End test: schema modify respects the validate flag
  
  Start test: [[<- works for schema
    'test-schema.R:526:3' [success]
    'test-schema.R:530:3' [success]
    'test-schema.R:532:3' [success]
    'test-schema.R:537:3' [success]
    'test-schema.R:542:3' [success]
    'test-schema.R:547:3' [success]
    'test-schema.R:552:3' [success]
    'test-schema.R:557:3' [success]
  End test: [[<- works for schema
  
  Start test: $<- works for schema
    'test-schema.R:566:3' [success]
    'test-schema.R:568:3' [success]
  End test: $<- works for schema
  
  Start test: <- assignment works for schema$children
    'test-schema.R:578:3' [success]
    'test-schema.R:579:3' [success]
    'test-schema.R:580:3' [success]
    'test-schema.R:583:3' [success]
    'test-schema.R:584:3' [success]
    'test-schema.R:585:3' [success]
  End test: <- assignment works for schema$children
  
  Start test: <- assignment works for schema$metadata
    'test-schema.R:592:3' [success]
    'test-schema.R:595:3' [success]
    'test-schema.R:598:3' [success]
  End test: <- assignment works for schema$metadata
  
  Start test: type constructors for parameter-free types work
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:39:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
    'test-type.R:32:5' [success]
    'test-type.R:41:7' [success]
    'test-type.R:45:5' [success]
  End test: type constructors for parameter-free types work
  
  Start test: non-logical nullable values do not crash
    'test-type.R:50:3' [success]
    'test-type.R:51:3' [success]
    'test-type.R:52:3' [success]
    'test-type.R:53:3' [success]
  End test: non-logical nullable values do not crash
  
  Start test: timestamp type passes along timezone parameter
    'test-type.R:58:3' [success]
    'test-type.R:60:3' [success]
    'test-type.R:65:3' [success]
    'test-type.R:70:3' [success]
  End test: timestamp type passes along timezone parameter
  
  Start test: decimal types pass along precision and scale
    'test-type.R:78:3' [success]
    'test-type.R:79:3' [success]
    'test-type.R:80:3' [success]
    'test-type.R:83:3' [success]
    'test-type.R:84:3' [success]
    'test-type.R:85:3' [success]
    'test-type.R:88:3' [success]
    'test-type.R:89:3' [success]
    'test-type.R:90:3' [success]
    'test-type.R:93:3' [success]
    'test-type.R:94:3' [success]
  End test: decimal types pass along precision and scale
  
  Start test: fixed-size binary passes along fixed-size parameter
    'test-type.R:99:3' [success]
  End test: fixed-size binary passes along fixed-size parameter
  
  Start test: struct constructor passes along children
    'test-type.R:104:3' [success]
    'test-type.R:105:3' [success]
    'test-type.R:106:3' [success]
  End test: struct constructor passes along children
  
  Start test: struct constructor passes along children
    'test-type.R:111:3' [success]
    'test-type.R:112:3' [success]
    'test-type.R:113:3' [success]
  End test: struct constructor passes along children
  
  Start test: sparse and dense unions can be created
    'test-type.R:118:3' [success]
    'test-type.R:121:3' [success]
  End test: sparse and dense unions can be created
  
  Start test: list constructors assign the correct child type
    'test-type.R:126:3' [success]
    'test-type.R:127:3' [success]
    'test-type.R:128:3' [success]
    'test-type.R:131:3' [success]
    'test-type.R:132:3' [success]
    'test-type.R:133:3' [success]
    'test-type.R:136:3' [success]
    'test-type.R:137:3' [success]
    'test-type.R:138:3' [success]
  End test: list constructors assign the correct child type
  
  Start test: list_view constructors assign the correct child type
    'test-type.R:143:3' [success]
    'test-type.R:144:3' [success]
    'test-type.R:145:3' [success]
    'test-type.R:148:3' [success]
    'test-type.R:149:3' [success]
    'test-type.R:150:3' [success]
  End test: list_view constructors assign the correct child type
  
  Start test: map constructor assigns the correct key and value types
    'test-type.R:155:3' [success]
    'test-type.R:156:3' [success]
    'test-type.R:157:3' [success]
    'test-type.R:158:3' [success]
  End test: map constructor assigns the correct key and value types
  
  Start test: dictionary types can be created
    'test-type.R:163:3' [success]
    'test-type.R:164:3' [success]
    'test-type.R:165:3' [success]
    'test-type.R:168:3' [success]
  End test: dictionary types can be created
  
  Start test: extension types can be created
    'test-type.R:176:3' [success]
    'test-type.R:177:3' [success]
  End test: extension types can be created
  
  Start test: can set option/env var to pretend the arrow package is not installed
    'test-util.R:21:3' [success]
    'test-util.R:22:3' [success]
    'test-util.R:25:5' [success]
    'test-util.R:27:5' [success]
    'test-util.R:34:5' [success]
  End test: can set option/env var to pretend the arrow package is not installed
  
  Start test: preserve/release works when release happens on another thread
    'test-util.R:42:3' [success]
    'test-util.R:46:3' [success]
    'test-util.R:47:3' [success]
    'test-util.R:48:3' [success]
  End test: preserve/release works when release happens on another thread
  
  Start test: vector slicer works
    'test-util.R:52:3' [success]
    'test-util.R:53:3' [success]
  End test: vector slicer works
  
  Start test: new_data_frame() works
    'test-util.R:60:3' [success]
  End test: new_data_frame() works
  
  Start test: vector fuzzers work
    'test-util.R:76:3' [success]
    'test-util.R:77:3' [success]
    'test-util.R:79:3' [success]
  End test: vector fuzzers work
  
  Start test: vector shuffler works
    'test-util.R:85:3' [success]
    'test-util.R:88:3' [success]
  End test: vector shuffler works
  
  Start test: as_nanoarrow_vctr() works for basic input
    'test-vctr.R:21:3' [success]
    'test-vctr.R:22:3' [success]
    'test-vctr.R:24:3' [success]
    'test-vctr.R:25:3' [success]
  End test: as_nanoarrow_vctr() works for basic input
  
  Start test: print() and str() work on empty nanoarrow_vctr
    'test-vctr.R:30:3' [success]
    'test-vctr.R:30:3' [success]
    'test-vctr.R:35:3' [success]
    'test-vctr.R:35:3' [success]
    'test-vctr.R:41:3' [success]
    'test-vctr.R:41:3' [success]
    'test-vctr.R:46:3' [success]
    'test-vctr.R:46:3' [success]
  End test: print() and str() work on empty nanoarrow_vctr
  
  Start test: print() and str() work on non-empty nanoarrow_vctr
    'test-vctr.R:56:3' [success]
    'test-vctr.R:56:3' [success]
    'test-vctr.R:61:3' [success]
    'test-vctr.R:61:3' [success]
  End test: print() and str() work on non-empty nanoarrow_vctr
  
  Start test: nanoarrow_vctr() errors when c() is called
    'test-vctr.R:69:3' [success]
    'test-vctr.R:71:3' [success]
  End test: nanoarrow_vctr() errors when c() is called
  
  Start test: nanoarrow_vctr works in a data.frame()
    'test-vctr.R:78:3' [success]
    'test-vctr.R:80:3' [success]
  End test: nanoarrow_vctr works in a data.frame()
  
  Start test: format() works for nanoarrow_vctr
    'test-vctr.R:85:3' [success]
    'test-vctr.R:89:3' [success]
    'test-vctr.R:95:3' [success]
  End test: format() works for nanoarrow_vctr
  
  Start test: nanoarrow_vctr to stream generates an empty stream for empty slice
    'test-vctr.R:102:3' [success]
    'test-vctr.R:103:3' [success]
  End test: nanoarrow_vctr to stream generates an empty stream for empty slice
  
  Start test: nanoarrow_vctr to stream generates identical stream for identity slice
    'test-vctr.R:112:3' [success]
    'test-vctr.R:115:3' [success]
    'test-vctr.R:116:3' [success]
  End test: nanoarrow_vctr to stream generates identical stream for identity slice
  
  Start test: nanoarrow_vctr to stream works for arbitrary slices
    'test-vctr.R:130:3' [success]
    'test-vctr.R:131:3' [success]
    'test-vctr.R:132:3' [success]
    'test-vctr.R:133:3' [success]
    'test-vctr.R:134:3' [success]
    'test-vctr.R:139:3' [success]
    'test-vctr.R:140:3' [success]
    'test-vctr.R:141:3' [success]
    'test-vctr.R:142:3' [success]
    'test-vctr.R:143:3' [success]
    'test-vctr.R:148:3' [success]
    'test-vctr.R:149:3' [success]
    'test-vctr.R:150:3' [success]
    'test-vctr.R:155:3' [success]
    'test-vctr.R:156:3' [success]
    'test-vctr.R:157:3' [success]
    'test-vctr.R:162:3' [success]
    'test-vctr.R:163:3' [success]
    'test-vctr.R:164:3' [success]
    'test-vctr.R:169:3' [success]
    'test-vctr.R:170:3' [success]
    'test-vctr.R:171:3' [success]
  End test: nanoarrow_vctr to stream works for arbitrary slices
  
  Start test: Errors occur for unsupported subset operations
    'test-vctr.R:177:3' [success]
    'test-vctr.R:182:3' [success]
    'test-vctr.R:187:3' [success]
  End test: Errors occur for unsupported subset operations
  
  Start test: slice detector works
    'test-vctr.R:194:3' [success]
    'test-vctr.R:199:3' [success]
    'test-vctr.R:204:3' [success]
    'test-vctr.R:209:3' [success]
    'test-vctr.R:214:3' [success]
    'test-vctr.R:219:3' [success]
  End test: slice detector works
  
  Start test: chunk resolver works
    'test-vctr.R:228:3' [success]
    'test-vctr.R:233:3' [success]
  End test: chunk resolver works
  
  [ FAIL 2 | WARN 0 | SKIP 8 | PASS 1610 ]
  
  ══ Skipped tests (8) ═══════════════════════════════════════════════════════════
  • On CRAN (8): 'test-array-stream.R:96:3', 'test-array-stream.R:121:3',
    'test-array.R:42:3', 'test-as-array.R:59:3', 'test-as-array.R:489:3',
    'test-as-array.R:823:3', 'test-buffer.R:78:3', 'test-buffer.R:91:3'
  
  ══ Failed tests ════════════════════════════════════════════════════════════════
  ── Failure ('test-altrep.R:39:3'): nanoarrow_altrep_chr() works for string ─────
  is_nanoarrow_altrep_materialized(x_altrep) is not TRUE
  
  `actual`:   FALSE
  `expected`: TRUE 
  ── Failure ('test-altrep.R:46:3'): nanoarrow_altrep_chr() works for string ─────
  `\.Internal\(inspect\(x_altrep\)\)` does not match "<materialized nanoarrow::altrep_chr\\[27\\]>".
  Actual value: "@56536bb66e40 16 STRSXP g0c0 \[MARK,REF\(65535\)\] <nanoarrow::altrep_chr\[27\]>"
  Backtrace:
      ▆
   1. └─testthat::expect_output(.Internal(inspect(x_altrep)), "<materialized nanoarrow::altrep_chr\\[27\\]>") at test-altrep.R:46:3
   2.   └─testthat::expect_match(...)
   3.     └─testthat:::expect_match_(...)
  
  [ FAIL 2 | WARN 0 | SKIP 8 | PASS 1610 ]
  Error: Test failures
  Execution halted