When exteopnscad is called with a source filepath outside of the current directory, relative filepaths such as "../config.scad" would fail to read if no such file relative to the programs directory, not the source file, existed.
This change uses the directory of the initial source file as the location for relative file lookups.
Testing
I couldn't find an example of automated tests for handwritten scad files, so I'm putting a test script here.
From the root directory of the project, invoke the following commands. This tests relative paths going up and down the filesystem, along with checking the same directory.
cabal run extopenscad -- -O tests/imports/neighbour.scad
cabal run extopenscad -- -O tests/imports/relative/parent.scad
cabal run extopenscad -- -O tests/imports/relative/deep/grandparent.scad
cabal run extopenscad -- -O tests/imports/child.scad
All of these calls should succeed in generating the same shape, cube(1,2,3).
cd into tests/imports and run the following command to check that relative paths from the invoking directory work.
cabal run extopenscad -- -O neighbour.scad
This command should also succeed, producing the same shape.
Fix for issue: https://github.com/Haskell-Things/ImplicitCAD/issues/276
When exteopnscad is called with a source filepath outside of the current directory, relative filepaths such as "../config.scad" would fail to read if no such file relative to the programs directory, not the source file, existed.
This change uses the directory of the initial source file as the location for relative file lookups.
Testing
I couldn't find an example of automated tests for handwritten
scad
files, so I'm putting a test script here.From the root directory of the project, invoke the following commands. This tests relative paths going up and down the filesystem, along with checking the same directory.
cabal run extopenscad -- -O tests/imports/neighbour.scad
cabal run extopenscad -- -O tests/imports/relative/parent.scad
cabal run extopenscad -- -O tests/imports/relative/deep/grandparent.scad
cabal run extopenscad -- -O tests/imports/child.scad
All of these calls should succeed in generating the same shape,
cube(1,2,3)
.cd
intotests/imports
and run the following command to check that relative paths from the invoking directory work.cabal run extopenscad -- -O neighbour.scad
This command should also succeed, producing the same shape.