mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +00:00
test_feature - clean up .ifc.cache. files after test was executed
This commit is contained in:
@@ -78,8 +78,6 @@ src/bonsai/bonsai/translations.py
|
||||
|
||||
# bonsai test temp files
|
||||
src/bonsai/test/files/temp
|
||||
src/bonsai/test/files/basic.ifc.cache.blend
|
||||
src/bonsai/test/files/basic.ifc.cache.sqlite
|
||||
|
||||
# bonsai data
|
||||
src/bonsai/bonsai/bim/data/build/
|
||||
|
||||
@@ -679,7 +679,7 @@ Scenario: Load project elements - all georeferencing coordinate situations with
|
||||
|
||||
Scenario: Link IFC
|
||||
Given an empty IFC project
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I link IFC project from "{cwd}/test/files/basic.ifc"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_loaded" is "True"
|
||||
And the collection "IfcProject/basic.ifc" exists
|
||||
And the object "Chunk" exists
|
||||
@@ -690,7 +690,7 @@ Scenario: Link IFC - disabled false origin mode
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "DISABLED"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
When I link IFC project from "{cwd}/test/files/geolocation.ifc"
|
||||
Then the object "Chunk" exists
|
||||
And the object "Chunk" has a vertex at "2,2,-1"
|
||||
And the object "Chunk" has a vertex at "9,-1,-1"
|
||||
@@ -701,7 +701,7 @@ Scenario: Link IFC - from an empty IFC project - automatic false origin mode (0,
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
When I link IFC project from "{cwd}/test/files/geolocation.ifc"
|
||||
Then the object "Chunk" exists
|
||||
And the object "Chunk" has a vertex at "2,2,-1"
|
||||
And the object "Chunk" has a vertex at "9,-1,-1"
|
||||
@@ -712,7 +712,7 @@ Scenario: Link IFC - from an empty Blender session - automatic false origin mode
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
When I link IFC project from "{cwd}/test/files/geolocation.ifc"
|
||||
Then the object "Chunk" exists
|
||||
And the object "Chunk" has a vertex at "-11,-2,0"
|
||||
And the object "Chunk" has a vertex at "-4,-5,0"
|
||||
@@ -724,7 +724,7 @@ Scenario: Link IFC - manual false origin mode
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "MANUAL"
|
||||
And I set "scene.BIMProjectProperties.false_origin" to "10000,0,0"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
When I link IFC project from "{cwd}/test/files/geolocation.ifc"
|
||||
Then the object "Chunk" exists
|
||||
And the object "Chunk" has a vertex at "-8,2,-1"
|
||||
And the object "Chunk" has a vertex at "-1,-1,-1"
|
||||
@@ -735,8 +735,8 @@ Scenario: Link IFC - automatic false origin mode - two different false origins a
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation-mapconversion-angle.ifc', use_cache=False)"
|
||||
When I link IFC project from "{cwd}/test/files/geolocation.ifc"
|
||||
And I link IFC project from "{cwd}/test/files/geolocation-mapconversion-angle.ifc"
|
||||
Then the object "Col:IfcProject/geolocation.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation-mapconversion-angle.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation.ifc:Chunk" has a vertex at "-11,-2,0"
|
||||
@@ -751,8 +751,8 @@ Scenario: Link IFC - automatic false origin mode - two different false origins a
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation-mapconversion-angle.ifc', use_cache=False)"
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
When I link IFC project from "{cwd}/test/files/geolocation-mapconversion-angle.ifc"
|
||||
And I link IFC project from "{cwd}/test/files/geolocation.ifc"
|
||||
Then the object "Col:IfcProject/geolocation.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation-mapconversion-angle.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation-mapconversion-angle.ifc:Chunk" has a vertex at "-11,-2,0"
|
||||
@@ -767,9 +767,9 @@ Scenario: Link IFC - automatic false origin mode - three identical false origins
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation-unit1.ifc', use_cache=False)"
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation-unit2.ifc', use_cache=False)"
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation-unit3.ifc', use_cache=False)"
|
||||
When I link IFC project from "{cwd}/test/files/geolocation-unit1.ifc"
|
||||
And I link IFC project from "{cwd}/test/files/geolocation-unit2.ifc"
|
||||
And I link IFC project from "{cwd}/test/files/geolocation-unit3.ifc"
|
||||
Then the object "Col:IfcProject/geolocation-unit1.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation-unit2.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation-unit3.ifc:Chunk" exists
|
||||
@@ -779,7 +779,7 @@ Scenario: Link IFC - automatic false origin mode - three identical false origins
|
||||
|
||||
Scenario: Toggle link visibility - wireframe mode
|
||||
Given an empty IFC project
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
And I link IFC project from "{cwd}/test/files/basic.ifc"
|
||||
When I press "bim.toggle_link_visibility(link='{cwd}/test/files/basic.ifc', mode='WIREFRAME')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_wireframe" is "True"
|
||||
And the object "Chunk" should display as "WIRE"
|
||||
@@ -789,7 +789,7 @@ Scenario: Toggle link visibility - wireframe mode
|
||||
|
||||
Scenario: Toggle link selectability
|
||||
Given an empty IFC project
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
And I link IFC project from "{cwd}/test/files/basic.ifc"
|
||||
When I press "bim.toggle_link_selectability(link='{cwd}/test/files/basic.ifc')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_selectable" is "False"
|
||||
And the collection "IfcProject/basic.ifc" is unselectable
|
||||
@@ -799,7 +799,7 @@ Scenario: Toggle link selectability
|
||||
|
||||
Scenario: Toggle link visibility - visible mode
|
||||
Given an empty IFC project
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
And I link IFC project from "{cwd}/test/files/basic.ifc"
|
||||
When I press "bim.toggle_link_visibility(link='{cwd}/test/files/basic.ifc', mode='VISIBLE')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_hidden" is "True"
|
||||
And the object "IfcProject/basic.ifc" is not visible
|
||||
@@ -809,14 +809,14 @@ Scenario: Toggle link visibility - visible mode
|
||||
|
||||
Scenario: Unload link
|
||||
Given an empty Blender session
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
And I link IFC project from "{cwd}/test/files/basic.ifc"
|
||||
When I press "bim.unload_link(filepath='{cwd}/test/files/basic.ifc')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_loaded" is "False"
|
||||
And the collection "IfcProject/basic.ifc" does not exist
|
||||
|
||||
Scenario: Load link
|
||||
Given an empty Blender session
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
And I link IFC project from "{cwd}/test/files/basic.ifc"
|
||||
And I press "bim.unload_link(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.load_link(filepath='{cwd}/test/files/basic.ifc')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_loaded" is "True"
|
||||
@@ -824,7 +824,7 @@ Scenario: Load link
|
||||
|
||||
Scenario: Unlink IFC
|
||||
Given an empty Blender session
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
And I link IFC project from "{cwd}/test/files/basic.ifc"
|
||||
And I press "bim.unload_link(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.unlink_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
Then "scene.BIMProjectProperties.links.get('{cwd}/test/files/basic.ifc')" is "None"
|
||||
|
||||
@@ -32,6 +32,7 @@ import ifcopenshell.util.element
|
||||
import ifcopenshell.util.representation
|
||||
import bonsai.tool as tool
|
||||
import bonsai.bim.handler
|
||||
from collections.abc import Generator
|
||||
from bonsai.bim.ifc import IfcStore
|
||||
from bonsai.tool.brick import BrickStore
|
||||
from bonsai.bim.module.model.data import AuthoringData
|
||||
@@ -66,7 +67,10 @@ Can be useful for debugging, but has caveats - can't use ``wm.read_homefile``
|
||||
as resets the ``bpy.context`` and some it's members become `None`.
|
||||
"""
|
||||
|
||||
TMP = Path(f"{variables['cwd']}/test/files/temp")
|
||||
TMP = Path.cwd() / "test/files/temp"
|
||||
TEST_FILES_DIR = Path.cwd() / "test/files"
|
||||
|
||||
CLEAN_LINKED_FILES_CACHE = False
|
||||
|
||||
|
||||
class PanelSpy:
|
||||
@@ -292,6 +296,19 @@ def vectors_are_equal(v1, v2):
|
||||
return all(is_x(v1[i], v2[i]) for i in range(len(v1)))
|
||||
|
||||
|
||||
@pytest.fixture(scope="function", autouse=True)
|
||||
def run_for_each_test() -> Generator[None]:
|
||||
# Code before this runs before each test
|
||||
yield
|
||||
# Code after this runs after each test
|
||||
|
||||
global CLEAN_LINKED_FILES_CACHE
|
||||
if CLEAN_LINKED_FILES_CACHE:
|
||||
for filepath in TEST_FILES_DIR.glob("*.ifc.cache.*"):
|
||||
filepath.unlink()
|
||||
CLEAN_LINKED_FILES_CACHE = False
|
||||
|
||||
|
||||
@given("an untestable scenario")
|
||||
def an_untestable_scenario():
|
||||
pass
|
||||
@@ -346,6 +363,16 @@ def saving_ifc_project() -> None:
|
||||
tool.Project.save_test_project()
|
||||
|
||||
|
||||
@given(parsers.parse('I link IFC project from "{filepath}"'))
|
||||
@when(parsers.parse('I link IFC project from "{filepath}"'))
|
||||
@then(parsers.parse('I link IFC project from "{filepath}"'))
|
||||
def i_link_ifc_project_from_filepath(filepath: str) -> None:
|
||||
global CLEAN_LINKED_FILES_CACHE
|
||||
filepath = replace_variables(filepath)
|
||||
CLEAN_LINKED_FILES_CACHE = True
|
||||
bpy.ops.bim.link_ifc(filepath=filepath, use_cache=False)
|
||||
|
||||
|
||||
@given("the Brickschema is stubbed")
|
||||
def the_brickschema_is_stubbed():
|
||||
# This makes things run faster since we don't need to load the entire brick schema
|
||||
|
||||
Reference in New Issue
Block a user