Coverage report: 91%

Files Functions Classes

coverage.py v7.14.1, created at 2026-06-14 20:02 -0700

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
python/felis/__init__.py (no function)   67% 6 2 0   100% 0 0   67%
python/felis/cli.py cli   100% 18 0 0   100% 8 0   100%
python/felis/cli.py create   71% 17 5 0   67% 6 2   70%
python/felis/cli.py create_indexes   62% 8 3 0   100% 0 0   62%
python/felis/cli.py drop_indexes   62% 8 3 0   100% 0 0   62%
python/felis/cli.py load_tap_schema   100% 4 0 0   100% 0 0   100%
python/felis/cli.py init_tap_schema   100% 5 0 0   50% 2 1   86%
python/felis/cli.py validate   100% 11 0 0   100% 4 0   100%
python/felis/cli.py diff   100% 19 0 0   100% 8 0   100%
python/felis/cli.py dump   100% 16 0 0   92% 12 1   96%
python/felis/cli.py (no function)   99% 93 1 0   50% 2 1   98%
python/felis/datamodel.py BaseObject.check_description   88% 8 1 0   83% 6 1   86%
python/felis/datamodel.py validate_ivoa_ucd   100% 6 0 0   50% 2 1   88%
python/felis/datamodel.py Column.check_value   100% 17 0 0   100% 18 0   100%
python/felis/datamodel.py Column.check_ivoa_ucd   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py Column.check_units   100% 11 0 0   100% 4 0   100%
python/felis/datamodel.py Column.check_length   100% 13 0 0   100% 8 0   100%
python/felis/datamodel.py Column.check_redundant_datatypes   95% 20 1 0   92% 12 1   94%
python/felis/datamodel.py Column.check_precision   100% 3 0 0   100% 2 0   100%
python/felis/datamodel.py Column.check_votable_arraysize   92% 25 2 0   94% 18 1   93%
python/felis/datamodel.py Column.serialize_datatype   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py Column.deserialize_datatype   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py Column.check_votable_xtype   100% 3 0 0   100% 2 0   100%
python/felis/datamodel.py Column._update_from_overrides   100% 4 0 0   100% 4 0   100%
python/felis/datamodel.py Constraint.check_deferrable   100% 3 0 0   100% 2 0   100%
python/felis/datamodel.py CheckConstraint.serialize_type   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py UniqueConstraint.serialize_type   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py ForeignKeyConstraint.serialize_type   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py ForeignKeyConstraint.check_column_lengths   100% 3 0 0   100% 2 0   100%
python/felis/datamodel.py Index.check_columns_or_expressions   100% 5 0 0   100% 4 0   100%
python/felis/datamodel.py ColumnGroup.check_ivoa_ucd   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py ColumnGroup.check_unique_columns   100% 4 0 0   100% 2 0   100%
python/felis/datamodel.py ColumnGroup._dereference_columns   100% 12 0 0   100% 6 0   100%
python/felis/datamodel.py ColumnGroup.serialize_columns   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py ColumnOverrides._check_non_nullable_overrides   100% 7 0 0   100% 6 0   100%
python/felis/datamodel.py ColumnOverrides.serialize_datatype   100% 3 0 0   100% 2 0   100%
python/felis/datamodel.py ColumnOverrides.deserialize_datatype   67% 3 1 0   50% 2 1   60%
python/felis/datamodel.py Table.check_unique_column_names   100% 3 0 0   100% 2 0   100%
python/felis/datamodel.py Table.check_tap_table_index   100% 6 0 0   100% 4 0   100%
python/felis/datamodel.py Table.check_tap_principal   100% 7 0 0   100% 6 0   100%
python/felis/datamodel.py Table._find_column_by_id   100% 4 0 0   100% 4 0   100%
python/felis/datamodel.py Table._find_column_by_name   100% 4 0 0   100% 4 0   100%
python/felis/datamodel.py Table.dereference_column_groups   100% 4 0 0   100% 2 0   100%
python/felis/datamodel.py Table._serialize_columns   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py SchemaIdVisitor.__init__   100% 2 0 0   100% 0 0   100%
python/felis/datamodel.py SchemaIdVisitor.add   83% 6 1 0   50% 6 3   67%
python/felis/datamodel.py SchemaIdVisitor.visit_schema   100% 5 0 0   100% 2 0   100%
python/felis/datamodel.py SchemaIdVisitor.visit_table   100% 5 0 0   100% 4 0   100%
python/felis/datamodel.py SchemaIdVisitor.visit_column   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py SchemaIdVisitor.visit_constraint   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py _strip_ids   100% 8 0 0   100% 6 0   100%
python/felis/datamodel.py _append_error   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py Schema._load_resources   100% 22 0 0   90% 10 1   97%
python/felis/datamodel.py Schema._find_table_by_name   100% 4 0 0   100% 4 0   100%
python/felis/datamodel.py Schema._dereference_resource_columns   100% 17 0 0   100% 12 0   100%
python/felis/datamodel.py Schema._process_column_refs   100% 32 0 0   100% 16 0   100%
python/felis/datamodel.py Schema.generate_ids   100% 34 0 0   97% 34 1   99%
python/felis/datamodel.py Schema.check_unique_table_names   100% 3 0 0   100% 2 0   100%
python/felis/datamodel.py Schema.check_tap_table_indexes   100% 11 0 0   88% 8 1   95%
python/felis/datamodel.py Schema.check_unique_constraint_names   100% 11 0 0   100% 8 0   100%
python/felis/datamodel.py Schema.check_unique_index_names   100% 11 0 0   100% 8 0   100%
python/felis/datamodel.py Schema.create_id_map   67% 9 3 0   50% 4 2   62%
python/felis/datamodel.py Schema._validate_column_id   100% 4 0 0   100% 4 0   100%
python/felis/datamodel.py Schema._validate_foreign_key_column   100% 4 0 0   100% 0 0   100%
python/felis/datamodel.py Schema.check_constraints   100% 18 0 0   100% 14 0   100%
python/felis/datamodel.py Schema.__getitem__   100% 3 0 0   100% 2 0   100%
python/felis/datamodel.py Schema.__contains__   100% 1 0 0   100% 0 0   100%
python/felis/datamodel.py Schema.find_object_by_id   100% 4 0 0   100% 2 0   100%
python/felis/datamodel.py Schema.get_table_by_column   100% 4 0 0   100% 4 0   100%
python/felis/datamodel.py Schema.from_uri   100% 9 0 0   100% 0 0   100%
python/felis/datamodel.py Schema.from_stream   100% 3 0 0   100% 0 0   100%
python/felis/datamodel.py Schema._model_dump   100% 7 0 0   100% 6 0   100%
python/felis/datamodel.py Schema.dump_yaml   100% 2 0 0   100% 0 0   100%
python/felis/datamodel.py Schema.dump_json   100% 2 0 0   100% 0 0   100%
python/felis/datamodel.py (no function)   100% 307 0 0   100% 0 0   100%
python/felis/db/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
python/felis/db/_dialects.py _dialect   100% 1 0 0   100% 0 0   100%
python/felis/db/_dialects.py get_supported_dialects   100% 1 0 0   100% 0 0   100%
python/felis/db/_dialects.py _dialect_module   100% 1 0 0   100% 0 0   100%
python/felis/db/_dialects.py get_dialect_module   67% 3 1 0   50% 2 1   60%
python/felis/db/_dialects.py string_to_typeengine   75% 20 5 0   70% 10 3   73%
python/felis/db/_dialects.py (no function)   100% 23 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py compile_tinyint   0% 1 1 0   100% 0 0   0%
python/felis/db/_sqltypes.py boolean   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py byte   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py short   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py int   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py long   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py float   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py double   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py char   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py string   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py unicode   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py text   0% 1 1 0   100% 0 0   0%
python/felis/db/_sqltypes.py binary   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py timestamp   100% 1 0 0   100% 0 0   100%
python/felis/db/_sqltypes.py get_type_func   67% 3 1 0   50% 2 1   60%
python/felis/db/_sqltypes.py _vary   100% 7 0 0   100% 4 0   100%
python/felis/db/_sqltypes.py (no function)   100% 44 0 0   100% 0 0   100%
python/felis/db/_variants.py _create_column_variant_overrides   100% 4 0 0   100% 2 0   100%
python/felis/db/_variants.py _get_column_variant_overrides   100% 1 0 0   100% 0 0   100%
python/felis/db/_variants.py _get_column_variant_override   67% 3 1 0   50% 2 1   60%
python/felis/db/_variants.py _process_variant_override   89% 9 1 0   75% 4 1   85%
python/felis/db/_variants.py make_variant_dict   100% 8 0 0   100% 4 0   100%
python/felis/db/_variants.py (no function)   100% 19 0 0   100% 0 0   100%
python/felis/db/database_context.py _normalize_statement   100% 3 0 0   100% 2 0   100%
python/felis/db/database_context.py _create_mock_connection   100% 4 0 0   100% 0 0   100%
python/felis/db/database_context.py _dialect_name   100% 4 0 0   100% 2 0   100%
python/felis/db/database_context.py _clear_schema   100% 4 0 0   100% 4 0   100%
python/felis/db/database_context.py _get_existing_indexes   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py is_mock_url   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py is_sqlite_url   100% 3 0 0   50% 2 1   80%
python/felis/db/database_context.py DatabaseContext.__exit__   60% 5 2 0   100% 0 0   60%
python/felis/db/database_context.py DatabaseContext.close   100% 0 0 1   100% 0 0   100%
python/felis/db/database_context.py DatabaseContext.metadata   100% 0 0 1   100% 0 0   100%
python/felis/db/database_context.py DatabaseContext.engine   100% 0 0 1   100% 0 0   100%
python/felis/db/database_context.py DatabaseContext.dialect   100% 0 0 1   100% 0 0   100%
python/felis/db/database_context.py DatabaseContext.dialect_name   100% 0 0 1   100% 0 0   100%
python/felis/db/database_context.py DatabaseContext.initialize   100% 0 0 1   100% 0 0   100%
python/felis/db/database_context.py DatabaseContext.drop   100% 0 0 1   100% 0 0   100%
python/felis/db/database_context.py DatabaseContext.create_all   100% 0 0 1   100% 0 0   100%
python/felis/db/database_context.py DatabaseContext.create_indexes   100% 0 0 1   100% 0 0   100%
python/felis/db/database_context.py DatabaseContext.drop_indexes   100% 0 0 1   100% 0 0   100%
python/felis/db/database_context.py DatabaseContext.execute   100% 0 0 1   100% 0 0   100%
python/felis/db/database_context.py _BaseContext.__init__   88% 8 1 0   50% 2 1   80%
python/felis/db/database_context.py _BaseContext.echo   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py _BaseContext.echo   100% 3 0 0   50% 2 1   80%
python/felis/db/database_context.py _BaseContext._validate_dialect   100% 4 0 0   100% 2 0   100%
python/felis/db/database_context.py _BaseContext.engine   100% 3 0 0   100% 2 0   100%
python/felis/db/database_context.py _BaseContext.metadata   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py _BaseContext.dialect   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py _BaseContext.dialect_name   0% 1 1 0   100% 0 0   0%
python/felis/db/database_context.py _BaseContext.schema_name   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py _BaseContext.connect   100% 2 0 0   100% 0 0   100%
python/felis/db/database_context.py _BaseContext.execute   90% 10 1 0   50% 2 1   83%
python/felis/db/database_context.py _BaseContext.create_all   67% 6 2 0   100% 0 0   67%
python/felis/db/database_context.py _BaseContext._manage_indexes   72% 25 7 0   79% 14 3   74%
python/felis/db/database_context.py _BaseContext.create_indexes   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py _BaseContext.drop_indexes   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py _BaseContext._required_schema_name   0% 3 3 0   0% 2 0   0%
python/felis/db/database_context.py _BaseContext.close   100% 3 0 0   50% 2 1   80%
python/felis/db/database_context.py DatabaseContextFactory.register   100% 2 0 0   100% 0 0   100%
python/felis/db/database_context.py DatabaseContextFactory.register.decorator   75% 4 1 0   50% 2 1   67%
python/felis/db/database_context.py DatabaseContextFactory.register_class   0% 4 4 0   0% 2 0   0%
python/felis/db/database_context.py DatabaseContextFactory.create_context   88% 8 1 0   75% 4 1   83%
python/felis/db/database_context.py DatabaseContextFactory.get_supported_dialects   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py _SQLWriter.__init__   100% 2 0 0   100% 0 0   100%
python/felis/db/database_context.py _SQLWriter.write   47% 15 8 0   30% 10 1   40%
python/felis/db/database_context.py PostgreSQLContext.__init__   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py PostgreSQLContext.initialize   0% 10 10 0   0% 2 0   0%
python/felis/db/database_context.py PostgreSQLContext.drop   0% 6 6 0   100% 0 0   0%
python/felis/db/database_context.py MySQLContext.__init__   0% 1 1 0   100% 0 0   0%
python/felis/db/database_context.py MySQLContext.initialize   0% 12 12 0   0% 2 0   0%
python/felis/db/database_context.py MySQLContext.drop   0% 8 8 0   100% 0 0   0%
python/felis/db/database_context.py SQLiteContext.__init__   100% 2 0 0   100% 0 0   100%
python/felis/db/database_context.py SQLiteContext.initialize   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py SQLiteContext.drop   60% 5 2 0   100% 0 0   60%
python/felis/db/database_context.py MockContext.__init__   100% 3 0 0   100% 0 0   100%
python/felis/db/database_context.py MockContext.dialect   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py MockContext.dialect_name   0% 1 1 0   100% 0 0   0%
python/felis/db/database_context.py MockContext.metadata   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py MockContext.engine   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py MockContext.initialize   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py MockContext.drop   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py MockContext.create_all   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py MockContext.create_indexes   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py MockContext.drop_indexes   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py MockContext.execute   75% 4 1 0   50% 2 1   67%
python/felis/db/database_context.py MockContext.close   100% 1 0 0   100% 0 0   100%
python/felis/db/database_context.py create_database_context   96% 23 1 0   75% 12 3   89%
python/felis/db/database_context.py (no function)   100% 132 0 12   100% 0 0   100%
python/felis/diff.py SchemaDiff.__init__   100% 3 0 0   100% 0 0   100%
python/felis/diff.py SchemaDiff.print   100% 1 0 0   100% 0 0   100%
python/felis/diff.py SchemaDiff.has_changes   100% 1 0 0   100% 0 0   100%
python/felis/diff.py FormattedSchemaDiff.__init__   100% 1 0 0   100% 0 0   100%
python/felis/diff.py FormattedSchemaDiff.print   100% 4 0 0   100% 4 0   100%
python/felis/diff.py FormattedSchemaDiff._print_header   100% 1 0 0   100% 0 0   100%
python/felis/diff.py FormattedSchemaDiff._handle_values_changed   100% 7 0 0   100% 2 0   100%
python/felis/diff.py FormattedSchemaDiff._handle_iterable_item_added   100% 5 0 0   100% 2 0   100%
python/felis/diff.py FormattedSchemaDiff._handle_iterable_item_removed   100% 5 0 0   100% 2 0   100%
python/felis/diff.py FormattedSchemaDiff._handle_dictionary_item_added   100% 6 0 0   100% 2 0   100%
python/felis/diff.py FormattedSchemaDiff._handle_dictionary_item_removed   100% 6 0 0   100% 2 0   100%
python/felis/diff.py FormattedSchemaDiff._get_id   59% 17 7 0   50% 12 4   55%
python/felis/diff.py FormattedSchemaDiff._get_key_display   100% 1 0 0   100% 0 0   100%
python/felis/diff.py FormattedSchemaDiff._parse_deepdiff_path   100% 11 0 0   75% 8 2   89%
python/felis/diff.py DatabaseDiff.__init__   100% 6 0 0   100% 0 0   100%
python/felis/diff.py DatabaseDiff.print   100% 2 0 0   50% 2 1   75%
python/felis/diff.py (no function)   100% 37 0 0   100% 0 0   100%
python/felis/metadata.py _handle_timestamp_column   100% 3 0 0   100% 2 0   100%
python/felis/metadata.py get_datatype_with_variants   85% 13 2 0   75% 8 2   81%
python/felis/metadata.py MetaDataBuilder.__init__   100% 8 0 0   100% 2 0   100%
python/felis/metadata.py MetaDataBuilder.build   100% 8 0 0   100% 4 0   100%
python/felis/metadata.py MetaDataBuilder.build_tables   100% 5 0 0   100% 4 0   100%
python/felis/metadata.py MetaDataBuilder.build_primary_key   100% 1 0 0   100% 0 0   100%
python/felis/metadata.py MetaDataBuilder.build_table   91% 11 1 0   50% 4 2   80%
python/felis/metadata.py MetaDataBuilder.build_column   100% 17 0 0   100% 6 0   100%
python/felis/metadata.py MetaDataBuilder.build_constraints   100% 5 0 0   100% 4 0   100%
python/felis/metadata.py MetaDataBuilder.build_constraint   95% 21 1 0   90% 10 1   94%
python/felis/metadata.py MetaDataBuilder.build_index   100% 5 0 0   100% 0 0   100%
python/felis/metadata.py MetaDataBuilder.build_indexes   80% 10 2 0   75% 8 2   78%
python/felis/metadata.py create_metadata   100% 9 0 0   83% 6 1   93%
python/felis/metadata.py (no function)   100% 30 0 0   100% 0 0   100%
python/felis/tap_schema.py TableManager.__init__   73% 15 4 0   50% 6 1   67%
python/felis/tap_schema.py TableManager._load_from_yaml   86% 7 1 0   50% 2 1   78%
python/felis/tap_schema.py TableManager._reflect_from_database   0% 6 6 0   100% 0 0   0%
python/felis/tap_schema.py TableManager._apply_extensions   100% 16 0 0   100% 8 0   100%
python/felis/tap_schema.py TableManager.__getitem__   100% 3 0 0   100% 2 0   100%
python/felis/tap_schema.py TableManager.schema   100% 1 0 0   100% 0 0   100%
python/felis/tap_schema.py TableManager.metadata   100% 1 0 0   100% 0 0   100%
python/felis/tap_schema.py TableManager.get_tap_schema_std_path   100% 1 0 0   100% 0 0   100%
python/felis/tap_schema.py TableManager.get_tap_schema_std_resource   100% 1 0 0   100% 0 0   100%
python/felis/tap_schema.py TableManager.get_table_names_std   100% 1 0 0   100% 0 0   100%
python/felis/tap_schema.py TableManager.get_schema_name_std   0% 1 1 0   100% 0 0   0%
python/felis/tap_schema.py TableManager.load_schema_resource   100% 2 0 0   100% 0 0   100%
python/felis/tap_schema.py TableManager._load_schema   0% 1 1 0   100% 0 0   0%
python/felis/tap_schema.py TableManager._create_table_map   100% 2 0 0   100% 0 0   100%
python/felis/tap_schema.py TableManager._check_tables   100% 2 0 0   100% 2 0   100%
python/felis/tap_schema.py TableManager.initialize_database   100% 3 0 0   100% 0 0   100%
python/felis/tap_schema.py TableManager.select   100% 8 0 0   100% 2 0   100%
python/felis/tap_schema.py DataLoader.__init__   100% 9 0 0   100% 0 0   100%
python/felis/tap_schema.py DataLoader.load   100% 8 0 0   100% 6 0   100%
python/felis/tap_schema.py DataLoader._insert_schemas   100% 2 0 0   100% 0 0   100%
python/felis/tap_schema.py DataLoader._get_table_name   100% 1 0 0   100% 0 0   100%
python/felis/tap_schema.py DataLoader._insert_tables   100% 3 0 0   100% 2 0   100%
python/felis/tap_schema.py DataLoader._insert_columns   100% 10 0 0   100% 4 0   100%
python/felis/tap_schema.py DataLoader._get_key   100% 5 0 0   100% 2 0   100%
python/felis/tap_schema.py DataLoader._insert_keys   100% 13 0 0   100% 8 0   100%
python/felis/tap_schema.py DataLoader._generate_all_inserts   100% 6 0 0   100% 0 0   100%
python/felis/tap_schema.py DataLoader._execute_inserts   57% 7 3 0   100% 2 0   67%
python/felis/tap_schema.py DataLoader._compiled_inserts   100% 1 0 0   100% 0 0   100%
python/felis/tap_schema.py DataLoader._print_sql   100% 2 0 0   100% 2 0   100%
python/felis/tap_schema.py DataLoader._write_sql_to_file   75% 4 1 0   75% 4 1   75%
python/felis/tap_schema.py DataLoader._insert   100% 3 0 0   100% 0 0   100%
python/felis/tap_schema.py DataLoader._get_size   100% 10 0 0   100% 6 0   100%
python/felis/tap_schema.py DataLoader._is_indexed   100% 6 0 0   100% 6 0   100%
python/felis/tap_schema.py MetadataInserter.__init__   100% 2 0 0   100% 0 0   100%
python/felis/tap_schema.py MetadataInserter.insert_metadata   100% 10 0 0   100% 2 0   100%
python/felis/tap_schema.py (no function)   100% 68 0 0   100% 0 0   100%
python/felis/tests/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
python/felis/tests/postgresql.py TemporaryPostgresInstance.__init__   0% 2 2 0   100% 0 0   0%
python/felis/tests/postgresql.py TemporaryPostgresInstance.url   0% 1 1 0   100% 0 0   0%
python/felis/tests/postgresql.py TemporaryPostgresInstance.engine   0% 1 1 0   100% 0 0   0%
python/felis/tests/postgresql.py TemporaryPostgresInstance.begin   0% 2 2 0   100% 0 0   0%
python/felis/tests/postgresql.py TemporaryPostgresInstance.print_info   0% 9 9 0   0% 2 0   0%
python/felis/tests/postgresql.py setup_postgres_test_db   25% 8 6 0   50% 2 1   30%
python/felis/tests/postgresql.py (no function)   100% 22 0 0   100% 0 0   100%
python/felis/tests/run_cli.py run_cli   86% 14 2 0   80% 10 2   83%
python/felis/tests/run_cli.py (no function)   100% 5 0 0   100% 0 0   100%
python/felis/types.py FelisType.__init_subclass__   100% 7 0 0   100% 0 0   100%
python/felis/types.py FelisType.felis_type   50% 4 2 0   100% 0 0   50%
python/felis/types.py (no function)   100% 33 0 0   100% 0 0   100%
tests/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.setUp   100% 3 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.tearDown   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_invalid_command   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_help   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_create   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_create_with_echo   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_create_with_dry_run   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_create_with_ignore_constraints   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_validate   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_validate_with_log_file   67% 6 2 0   50% 4 2   60%
tests/test_cli.py CliTestCase.test_validate_with_id_generation   100% 2 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_validate_with_id_generation_error   100% 2 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_validate_with_extra_checks   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_create_with_initialize_and_drop_error   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_load_tap_schema   100% 3 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_load_tap_schema_with_dry_run_and_output_file   67% 6 2 0   50% 4 2   60%
tests/test_cli.py CliTestCase.test_init_tap_schema   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_init_tap_schema_mock   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_init_tap_schema_with_extensions   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_init_tap_schema_with_custom_extensions   100% 5 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_diff   100% 3 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_diff_database   100% 7 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_diff_alembic   100% 3 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_diff_error   100% 2 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_diff_error_on_change   100% 3 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_dump_yaml   100% 2 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase._check_strip_ids   88% 8 1 0   90% 10 1   89%
tests/test_cli.py CliTestCase.test_dump_yaml_with_strip_ids   75% 8 2 0   100% 0 0   75%
tests/test_cli.py CliTestCase.test_dump_json   100% 2 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_dump_with_dereference_resources_and_sort_columns   100% 18 0 0   100% 2 0   100%
tests/test_cli.py CliTestCase.test_dump_json_with_strip_ids   75% 8 2 0   100% 0 0   75%
tests/test_cli.py CliTestCase._check_columns_sorted   100% 4 0 0   100% 2 0   100%
tests/test_cli.py CliTestCase.test_dump_yaml_with_sort_columns   100% 5 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_dump_json_with_sort_columns   100% 5 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_dump_with_invalid_file_extension_error   100% 1 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_create_and_drop_indexes   100% 4 0 0   100% 0 0   100%
tests/test_cli.py CliTestCase.test_generate_and_load_sql   91% 23 2 0   75% 4 1   89%
tests/test_cli.py ColumnRefsTestCase.setUp   100% 11 0 0   100% 0 0   100%
tests/test_cli.py ColumnRefsTestCase.tearDown   100% 1 0 0   100% 0 0   100%
tests/test_cli.py ColumnRefsTestCase.test_validate_with_column_ref_index_increment   100% 1 0 0   100% 0 0   100%
tests/test_cli.py ColumnRefsTestCase.test_validate_with_column_ref_index_increment_error   100% 1 0 0   100% 0 0   100%
tests/test_cli.py ColumnRefsTestCase.test_load_tap_schema_with_column_refs   100% 2 0 0   100% 0 0   100%
tests/test_cli.py ColumnRefsTestCase.test_load_tap_schema_with_column_ref_index_increment   100% 2 0 0   100% 0 0   100%
tests/test_cli.py (no function)   98% 64 1 0   50% 2 1   97%
tests/test_database_context.py BaseDatabaseContextTest.setUp   100% 4 0 0   100% 0 0   100%
tests/test_database_context.py BaseDatabaseContextTest._create_database_context   100% 1 0 0   100% 0 0   100%
tests/test_database_context.py BaseDatabaseContextTest.test_database_context   95% 20 1 0   83% 6 1   92%
tests/test_database_context.py BaseDatabaseContextTest.test_initialize_is_idempotent   100% 5 0 0   100% 0 0   100%
tests/test_database_context.py BaseDatabaseContextTest.test_drop_is_idempotent   100% 4 0 0   100% 0 0   100%
tests/test_database_context.py SQLiteTestCase.setUp   100% 3 0 0   100% 0 0   100%
tests/test_database_context.py PostgreSQLTestCase.setUp   0% 4 4 0   100% 0 0   0%
tests/test_database_context.py PostgreSQLTestCase.test_missing_schema_name   0% 3 3 0   100% 0 0   0%
tests/test_database_context.py MySQLTestCase.setUp   56% 9 4 0   0% 2 0   45%
tests/test_database_context.py MySQLTestCase.test_missing_schema_name   0% 3 3 0   100% 0 0   0%
tests/test_database_context.py MockTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_database_context.py MockTestCase.test_mock_connection_engine_error   100% 3 0 0   100% 0 0   100%
tests/test_database_context.py DatabaseContextTestCase.test_create_with_bad_url   100% 3 0 0   100% 0 0   100%
tests/test_database_context.py DatabaseContextTestCase.test_create_with_bad_dialect   100% 4 0 0   100% 0 0   100%
tests/test_database_context.py SupportedDialectsTestCase.test_supported_dialects   100% 4 0 0   100% 0 0   100%
tests/test_database_context.py SupportedDialectsTestCase.test_supported_dialect_with_driver   100% 3 0 0   100% 0 0   100%
tests/test_database_context.py SupportedDialectsTestCase.test_unsupported_dialect   100% 5 0 0   100% 0 0   100%
tests/test_database_context.py (no function)   98% 40 1 0   50% 2 1   95%
tests/test_datamodel.py ColumnTestCase.test_validation   100% 36 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnTestCase.test_description   100% 6 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnTestCase.test_values   100% 53 0 0   94% 18 1   99%
tests/test_datamodel.py ColumnTestCase.test_values.default_coldata   100% 1 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnTestCase.test_timestamp   100% 2 0 0   100% 0 0   100%
tests/test_datamodel.py TableTestCase.test_validation   100% 13 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnGroupTestCase.test_validation   100% 26 0 0   100% 0 0   100%
tests/test_datamodel.py ConstraintTestCase.test_base_constraint   100% 11 0 0   100% 0 0   100%
tests/test_datamodel.py ConstraintTestCase.test_unique_constraint   100% 11 0 0   100% 0 0   100%
tests/test_datamodel.py ConstraintTestCase.test_foreign_key_constraint   100% 19 0 0   100% 0 0   100%
tests/test_datamodel.py ConstraintTestCase.test_check_constraint   100% 11 0 0   100% 0 0   100%
tests/test_datamodel.py ConstraintTestCase.test_bad_constraint_type   100% 2 0 0   100% 0 0   100%
tests/test_datamodel.py ConstraintTestCase.test_constraint_column_checks   100% 14 0 0   100% 0 0   100%
tests/test_datamodel.py ConstraintTestCase.test_constraint_column_checks._create_test_schema   100% 7 0 0   100% 0 0   100%
tests/test_datamodel.py IndexTestCase.test_index_validation   100% 17 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaTestCase.test_validation   100% 18 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaTestCase.test_schema_object_ids   100% 10 0 0   100% 2 0   100%
tests/test_datamodel.py SchemaTestCase.test_check_unique_constraint_names   100% 7 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaTestCase.test_check_unique_index_names   100% 8 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaTestCase.test_model_validate   100% 3 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaTestCase.test_id_generation   100% 8 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaTestCase.test_get_table_by_column   100% 7 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaTestCase.test_find_object_by_id   100% 8 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaTestCase.test_from_file   100% 9 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaTestCase.test_from_resource   100% 8 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaTestCase.test_find_table_by_name   100% 9 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaVersionTest.test_validation   100% 12 0 0   100% 0 0   100%
tests/test_datamodel.py ValidationFlagsTest.test_check_tap_table_indexes   100% 11 0 0   100% 0 0   100%
tests/test_datamodel.py ValidationFlagsTest.test_check_tap_principal   100% 6 0 0   100% 0 0   100%
tests/test_datamodel.py ValidationFlagsTest.test_check_description   100% 8 0 0   100% 0 0   100%
tests/test_datamodel.py RedundantDatatypesTest.test_mysql_datatypes   100% 36 0 0   100% 0 0   100%
tests/test_datamodel.py RedundantDatatypesTest.test_mysql_datatypes.ColumnGenerator.__init__   100% 4 0 0   100% 0 0   100%
tests/test_datamodel.py RedundantDatatypesTest.test_mysql_datatypes.ColumnGenerator.col   100% 1 0 0   100% 0 0   100%
tests/test_datamodel.py RedundantDatatypesTest.test_precision   100% 2 0 0   100% 0 0   100%
tests/test_datamodel.py SchemaSerializationTest.test_serialization   100% 11 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.setUp   100% 10 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.tearDown   100% 1 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.test_schema_resource   92% 50 4 0   100% 0 0   92%
tests/test_datamodel.py ResourceTestCase.test_schema_resource_missing_column_error   100% 7 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.test_schema_resource_missing_ref_name_error   100% 7 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.test_schema_resource_not_found_error   100% 7 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.test_schema_resource_table_not_found_error   100% 7 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.test_schema_resource_bad_uri_error   100% 7 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.test_ref_schema_with_indexes   100% 12 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.test_ref_schema_with_foreign_key   100% 11 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.test_ref_schema_serialization   87% 15 2 0   100% 0 0   87%
tests/test_datamodel.py ResourceTestCase.test_ref_schema_with_dereference_columns   100% 7 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.test_tap_column_index_with_overrides   94% 18 1 0   88% 8 1   92%
tests/test_datamodel.py ResourceTestCase.test_from_uri_with_relative_resource_uri   100% 13 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.test_from_uri_with_absolute_resource_uri   100% 14 0 0   100% 0 0   100%
tests/test_datamodel.py ResourceTestCase.test_absolute_resource_uri_ignores_ref_schema_directory   100% 14 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnOverridesTestCase.test_all_override_fields_exist_on_column   100% 4 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnOverridesTestCase.test_overrides_all   100% 9 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnOverridesTestCase.test_overrides_subset   100% 9 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnOverridesTestCase.test_overrides_default   100% 8 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnOverridesTestCase.test_overrides_with_explicit_none_values   100% 8 0 0   100% 2 0   100%
tests/test_datamodel.py ColumnOverridesTestCase.test_extra_fields_in_overrides   100% 3 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnOverridesTestCase.test_overrides_accept_alias_keys   100% 5 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnOverridesTestCase.test_datatype_deserialize_and_serialize   100% 8 0 0   100% 0 0   100%
tests/test_datamodel.py ColumnOverridesTestCase.test_non_nullable_overrides_data_is_none   100% 1 0 0   100% 0 0   100%
tests/test_datamodel.py (no function)   99% 87 1 0   50% 2 1   98%
tests/test_diff.py TestSchemaDiff._diff   100% 1 0 0   100% 0 0   100%
tests/test_diff.py TestSchemaDiff.test_schema_diff   100% 84 0 0   100% 0 0   100%
tests/test_diff.py TestSchemaDiff.test_index_diff   100% 16 0 0   100% 0 0   100%
tests/test_diff.py TestSchemaDiff.test_print   100% 3 0 0   100% 0 0   100%
tests/test_diff.py TestSchemaDiff.test_formatted_print   100% 3 0 0   100% 0 0   100%
tests/test_diff.py TestSchemaDiff.test_parse_deepdiff_path   100% 3 0 0   100% 0 0   100%
tests/test_diff.py TestSchemaDiff.test_get_id_error   100% 4 0 0   100% 0 0   100%
tests/test_diff.py TestDatabaseDiff.test_database_diff   100% 14 0 0   100% 0 0   100%
tests/test_diff.py (no function)   100% 15 0 0   100% 0 0   100%
tests/test_import_modules.py (no function)   83% 6 1 0   50% 2 1   75%
tests/test_metadata.py MetaDataTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_metadata.py MetaDataTestCase.test_create_all   100% 54 0 0   89% 18 2   97%
tests/test_metadata.py MetaDataTestCase.test_create_all._sorted_indexes   100% 1 0 0   100% 0 0   100%
tests/test_metadata.py MetaDataTestCase.test_create_all._sorted_constraints   100% 1 0 0   100% 0 0   100%
tests/test_metadata.py MetaDataTestCase.test_builder   97% 33 1 0   82% 22 4   91%
tests/test_metadata.py MetaDataTestCase.test_timestamp   100% 12 0 0   100% 2 0   100%
tests/test_metadata.py MetaDataTestCase.test_ignore_constraints   100% 7 0 0   100% 2 0   100%
tests/test_metadata.py MetaDataTestCase.test_table_name_postfix   100% 6 0 0   100% 2 0   100%
tests/test_metadata.py MetaDataTestCase.test_fk_actions   100% 9 0 0   100% 6 0   100%
tests/test_metadata.py (no function)   95% 20 1 0   50% 2 1   91%
tests/test_postgres.py TestPostgresql.setUpClass   50% 2 1 0   100% 0 0   50%
tests/test_postgres.py TestPostgresql.test_initialize_create_and_drop   0% 22 22 0   0% 2 0   0%
tests/test_postgres.py TestPostgresql.test_create_and_drop_indexes   0% 18 18 0   100% 0 0   0%
tests/test_postgres.py TestPostgresql.test_create_and_drop_indexes.check_indexes_exist   0% 11 11 0   0% 8 0   0%
tests/test_postgres.py (no function)   100% 16 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerTestCase.test_create_table_manager   100% 9 0 0   100% 2 0   100%
tests/test_tap_schema.py TableManagerTestCase.test_table_name_postfix   100% 3 0 0   100% 2 0   100%
tests/test_tap_schema.py DataLoaderTestCase.setUp   100% 3 0 0   100% 0 0   100%
tests/test_tap_schema.py DataLoaderTestCase.tearDown   100% 1 0 0   100% 0 0   100%
tests/test_tap_schema.py DataLoaderTestCase.test_sqlite   100% 5 0 0   100% 0 0   100%
tests/test_tap_schema.py DataLoaderTestCase.test_sql_output   100% 13 0 0   100% 0 0   100%
tests/test_tap_schema.py DataLoaderTestCase.test_unique_keys   100% 13 0 0   100% 4 0   100%
tests/test_tap_schema.py DataLoaderTestCase.test_select_with_filter   100% 7 0 0   100% 0 0   100%
tests/test_tap_schema.py _find_row   100% 4 0 0   100% 0 0   100%
tests/test_tap_schema.py TapSchemaSqliteSetup.__init__   100% 5 0 0   100% 0 0   100%
tests/test_tap_schema.py TapSchemaSqliteSetup.schema   100% 1 0 0   100% 0 0   100%
tests/test_tap_schema.py TapSchemaSqliteSetup.mgr   100% 1 0 0   100% 0 0   100%
tests/test_tap_schema.py TapSchemaSqliteSetup.metadata   100% 1 0 0   100% 0 0   100%
tests/test_tap_schema.py TapSchemaDataTest.setUp   100% 1 0 0   100% 0 0   100%
tests/test_tap_schema.py TapSchemaDataTest.test_schemas   100% 14 0 0   100% 0 0   100%
tests/test_tap_schema.py TapSchemaDataTest.test_tables   100% 17 0 0   100% 0 0   100%
tests/test_tap_schema.py TapSchemaDataTest.test_columns   100% 58 0 0   100% 0 0   100%
tests/test_tap_schema.py TapSchemaDataTest.test_keys   100% 16 0 0   100% 0 0   100%
tests/test_tap_schema.py TapSchemaDataTest.test_key_columns   100% 14 0 0   100% 0 0   100%
tests/test_tap_schema.py TapSchemaDataTest.test_bad_table_name   100% 2 0 0   100% 0 0   100%
tests/test_tap_schema.py ForceUnboundArraySizeTest.setUp   100% 1 0 0   100% 0 0   100%
tests/test_tap_schema.py ForceUnboundArraySizeTest.test_force_unbounded_arraysize   100% 12 0 0   100% 4 0   100%
tests/test_tap_schema.py CompositeKeysTestCase.setUp   100% 12 0 0   100% 0 0   100%
tests/test_tap_schema.py CompositeKeysTestCase.test_keys   100% 3 0 0   100% 0 0   100%
tests/test_tap_schema.py CompositeKeysTestCase.test_key_columns   100% 6 0 0   100% 0 0   100%
tests/test_tap_schema.py ColumnRefsTestCase.setUp   100% 11 0 0   100% 0 0   100%
tests/test_tap_schema.py ColumnRefsTestCase.test_column_refs   95% 19 1 0   88% 8 1   93%
tests/test_tap_schema.py TableManagerExtensionsTestCase.setUp   100% 5 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.tearDown   100% 1 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_applied   100% 6 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_column_count   100% 8 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_with_data_loader   100% 13 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_invalid_extensions_file   100% 3 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_empty_extensions   100% 5 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_with_null_table_extensions   100% 8 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_invalid_column_missing_name   100% 5 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_column_id_auto_generation   100% 6 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_column_id_preserved   100% 6 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_multiple_tables_extended   100% 14 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_nonexistent_table_skipped   100% 6 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_column_properties_preserved   100% 6 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_apply_schema_to_metadata_true   100% 3 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_apply_schema_to_metadata_false   100% 4 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_with_table_name_postfix   100% 3 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_metadata_builder_called   100% 7 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_preserve_original_columns   100% 6 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_no_extensions_path_provided   100% 3 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_path_empty_string   100% 3 0 0   100% 0 0   100%
tests/test_tap_schema.py TableManagerExtensionsTestCase.test_extensions_file_not_found   100% 3 0 0   100% 0 0   100%
tests/test_tap_schema.py (no function)   99% 76 1 0   50% 2 1   97%
tests/test_tap_schema_postgres.py TestTapSchemaPostgresql.setUp   33% 6 4 0   50% 2 1   38%
tests/test_tap_schema_postgres.py TestTapSchemaPostgresql.test_create_metadata   0% 5 5 0   100% 0 0   0%
tests/test_tap_schema_postgres.py TestTapSchemaPostgresql.test_reflect_database   0% 29 29 0   100% 0 0   0%
tests/test_tap_schema_postgres.py TestTapSchemaPostgresql.test_nonstandard_names   0% 12 12 0   0% 2 0   0%
tests/test_tap_schema_postgres.py TestTapSchemaPostgresql.test_bad_engine   0% 5 5 0   100% 0 0   0%
tests/test_tap_schema_postgres.py TestTapSchemaPostgresql.tearDown   0% 2 2 0   100% 0 0   0%
tests/test_tap_schema_postgres.py (no function)   96% 27 1 0   50% 2 1   93%
Total     92% 4074 313 23   84% 764 85   91%

No items found using the specified filter.