diff options
author | Brad Richardson <everythingfunctional@protonmail.com> | 2020-10-15 10:28:02 -0500 |
---|---|---|
committer | Brad Richardson <everythingfunctional@protonmail.com> | 2020-10-15 10:28:02 -0500 |
commit | 84884be16503e506cd5ad7f927297fd7d25de779 (patch) | |
tree | c991207d12d4baae29ed13d8048bdc7ae26c3b58 | |
parent | c2638957dd9aca90831e0b434fec9ccc05c77acc (diff) | |
download | fpm-84884be16503e506cd5ad7f927297fd7d25de779.tar.gz fpm-84884be16503e506cd5ad7f927297fd7d25de779.zip |
Add test for module object file name
-rw-r--r-- | bootstrap/src/BuildModel.hs | 21 | ||||
-rw-r--r-- | bootstrap/unit_test/ModuleSourceConstructionTest.hs | 9 |
2 files changed, 19 insertions, 11 deletions
diff --git a/bootstrap/src/BuildModel.hs b/bootstrap/src/BuildModel.hs index 043173f..6446a12 100644 --- a/bootstrap/src/BuildModel.hs +++ b/bootstrap/src/BuildModel.hs @@ -44,25 +44,24 @@ data Source = } | Module { moduleSourceFileName :: FilePath + , moduleObjectFileName :: FilePath -> FilePath } processRawSource :: RawSource -> Source processRawSource rawSource = let sourceFileName = rawSourceFilename rawSource parsedContents = parseContents rawSource + objectFileName = + \bd -> bd </> (pathSeparatorsToUnderscores sourceFileName) <.> "o" in if hasProgramDeclaration parsedContents - then Program - { programSourceFileName = sourceFileName - , programObjectFileName = \buildDirectory -> - buildDirectory - </> (pathSeparatorsToUnderscores - sourceFileName - ) - <.> "o" - , programModulesUsed = getModulesUsed parsedContents - } + then Program { programSourceFileName = sourceFileName + , programObjectFileName = objectFileName + , programModulesUsed = getModulesUsed parsedContents + } else if hasModuleDeclaration parsedContents - then Module { moduleSourceFileName = sourceFileName } + then Module { moduleSourceFileName = sourceFileName + , moduleObjectFileName = objectFileName + } else undefined pathSeparatorsToUnderscores :: FilePath -> FilePath diff --git a/bootstrap/unit_test/ModuleSourceConstructionTest.hs b/bootstrap/unit_test/ModuleSourceConstructionTest.hs index fae7c89..fd69844 100644 --- a/bootstrap/unit_test/ModuleSourceConstructionTest.hs +++ b/bootstrap/unit_test/ModuleSourceConstructionTest.hs @@ -28,6 +28,9 @@ test = return $ givenInput [ then' "it is a Module" checkIsModule , then' "its source file name is the same as the original" checkModuleSourceFileName + , then' + "its object file name is the 'flattened' path of the source file with '.o' appeneded" + checkModuleObjectFileName ] ] @@ -46,3 +49,9 @@ checkModuleSourceFileName :: Source -> Result checkModuleSourceFileName m@(Module{}) = assertEquals moduleSourceFileName' $ moduleSourceFileName m checkModuleSourceFileName _ = fail' "wasn't a Module" + +checkModuleObjectFileName :: Source -> Result +checkModuleObjectFileName m@(Module{}) = + assertEquals ("." </> "some_file_somewhere.f90.o") + $ (moduleObjectFileName m) "." +checkModuleObjectFileName _ = fail' "wasn't a Module" |