@@ -207,6 +207,42 @@ final class SQLiteDatabaseTests: XCTestCase {
207207 XCTAssertEqual ( 2 , try getPageCount ( ) )
208208 }
209209
210+ func testVacuumIntoFile( ) throws {
211+ try Sandbox . execute { directory in
212+ let path1 = directory. appendingPathComponent ( " one.db " ) . path
213+ let db1 = try SQLiteDatabase ( path: path1)
214+ defer { try ? db1. close ( ) }
215+
216+ let path2 = directory. appendingPathComponent ( " two.db " ) . path
217+
218+ XCTAssertEqual ( . none, db1. autoVacuumMode)
219+
220+ try db1. execute ( raw: _createTableWithBlob)
221+
222+ try db1. inTransaction { db in
223+ try ( 0 ..< 1000 ) . forEach { index in
224+ let args : SQLiteArguments = [
225+ " id " : . integer( Int64 ( index) ) , " data " : . data( _textData) ,
226+ ]
227+ try db. write ( _insertIDAndData, arguments: args)
228+ }
229+ }
230+
231+ try db1. vacuum ( into: path2)
232+
233+ XCTAssertTrue ( FileManager ( ) . fileExists ( atPath: path2) )
234+
235+ let db2 = try SQLiteDatabase ( path: path2)
236+ defer { try ? db2. close ( ) }
237+
238+ XCTAssertEqual ( try db1. tables ( ) , try db2. tables ( ) )
239+ XCTAssertEqual (
240+ try db1. read ( " SELECT * FROM test; " ) ,
241+ try db2. read ( " SELECT * FROM test; " )
242+ )
243+ }
244+ }
245+
210246 func testCreateTable( ) throws {
211247 XCTAssertNoThrow ( try database. execute ( raw: _createTableWithBlob) )
212248 let tableNames = try database. tables ( )
0 commit comments