### Question:
DemoDatabaseMeta extends BaseDatabaseMeta implements DatabaseInterface { public String getURL( String hostname, String port, String databaseName ) throws KettleDatabaseException { File dbName = new File( databaseName ); if ( dbName != null && !dbName.exists() ) { FileObject vfsObject; try { vfsObject = KettleVFS.getFileObject( databaseName ); if ( vfsObject != null && vfsObject.exists() ) { File temp = new File( vfsObject.getURL().getPath() ); if ( temp.exists() ) { dbName = temp; } } } catch ( KettleFileException | FileSystemException e ) { throw new KettleDatabaseException( e ); } } return "jdbc:relique:csv:" + dbName.getPath(); }  int[] getAccessTypeList(); int getDefaultDatabasePort(); String getSQLQueryFields( String tableName ); String getSQLTableExists( String tablename ); String getSQLColumnExists( String columnname, String tablename ); String getDriverClass(); String getURL( String hostname, String port, String databaseName ); boolean supportsOptionsInURL(); String getExtraOptionsHelpText(); String[] getReservedWords(); String[] getUsedLibraries(); boolean supportsPreparedStatementMetadataRetrieval(); boolean supportsResultSetMetadataRetrievalOnly(); boolean releaseSavepoint(); boolean supportsTransactions(); String getFieldDefinition( ValueMetaInterface v, String tk, String pk, boolean use_autoinc, boolean add_fieldname, boolean add_cr ); String getAddColumnStatement( String tablename, ValueMetaInterface v, String tk, boolean use_autoinc, String pk, boolean semicolon ); String getModifyColumnStatement( String tablename, ValueMetaInterface v, String tk, boolean use_autoinc, String pk, boolean semicolon );  }### Answer:
@Test public void testGetUrl() throws KettleException, FileSystemException { final String prefix = "jdbc:relique:csv:"; DemoDatabaseMeta dbMeta = new DemoDatabaseMeta(); assertEquals( prefix + System.getProperty( "user.dir" ), dbMeta.getURL( null, null, "" ) ); String url = dbMeta.getURL( null, null, new File( "target" ).getAbsolutePath() ); assertEquals( prefix + System.getProperty( "user.dir" ) + Const.FILE_SEPARATOR + "target", url ); FileObject vfsFile = KettleVFS.getFileObject( System.getProperty( "user.dir" ) ); url = dbMeta.getURL( null, null, vfsFile.getURL().toString() ); assertEquals( prefix + System.getProperty( "user.dir" ), url ); }