diff options
Diffstat (limited to 'source/Test/Unit/Migration.hs')
| -rw-r--r-- | source/Test/Unit/Migration.hs | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/source/Test/Unit/Migration.hs b/source/Test/Unit/Migration.hs deleted file mode 100644 index d9042cc..0000000 --- a/source/Test/Unit/Migration.hs +++ /dev/null @@ -1,161 +0,0 @@ -{-# LANGUAGE NoImplicitPrelude #-} - -module Test.Unit.Migration (unitTests) where - -import Base -import Felix.Migration -import Felix.Parse qualified as Parse -import Felix.Prelude qualified as Prelude -import Felix.Source -import Syntax.Interface qualified as Syntax - -import System.Directory (getCurrentDirectory) -import System.FilePath.Posix qualified as Posix -import Test.Tasty -import Test.Tasty.HUnit - - -unitTests :: TestTree -unitTests = - testGroup "Migration manifest" - [ testCase "resolves references from prepared mount roots" - resolvesManifestReferences - , testCase "selects one driver for the complete graph" - selectsCompleteGraphDriver - ] - -resolvesManifestReferences :: Assertion -resolvesManifestReferences = do - mounts <- - expectRight - =<< prepareSourceMounts - [ (sourceMountId "project", "/tmp/felix-project") - , (sourceMountId "library", "/tmp/felix-library") - , (sourceMountId "debug", "/tmp/felix-debug") - ] - forM_ - (toList activeMigrationRoots - <> toList protectedMigrationModules - <> toList phase53LibraryMigrationModules) - \reference -> do - assertEqual - "manifest role" - MigrationLibrary - (migrationModuleRefRole reference) - candidate <- - expectRight - (migrationModuleCandidatePath mounts reference) - assertEqual - "mount-relative candidate" - ("/tmp/felix-library" - Posix.</> safeRelativePathFilePath - (migrationModuleRefPath reference)) - candidate - forM_ (toList typedMigrationModules) \reference -> - assertEqual - "typed module mount role" - (if reference `elem` - (toList protectedMigrationModules - <> toList phase53LibraryMigrationModules) - then MigrationLibrary - else MigrationProject) - (migrationModuleRefRole reference) - -selectsCompleteGraphDriver :: Assertion -selectsCompleteGraphDriver = do - root <- getCurrentDirectory - mounts <- - expectRight - =<< prepareSourceMounts - [ (sourceMountId "project", root) - , (sourceMountId "library", root Posix.</> "library") - , (sourceMountId "debug", root Posix.</> "debug") - ] - selection <- - expectRight - (resolveMigrationSelection mounts typedMigrationModules) - reserved <- - expectRight - =<< Prelude.parseReservedPreludeSource - Prelude.emptyBootstrapSourceInput - let bootstrapSyntax = - Parse.identifiedParsedModuleSyntaxInterface - (Prelude.reservedParsedPreludeModule reserved) - syntaxInputs source - | migrationSelectionContains selection source = - [bootstrapSyntax] - | otherwise = [] - parseRoot path = do - request <- expectRight (searchedRoot path) - Parse.parseSourceWorkspaceMeasuredWithSyntaxInputs - mounts request syntaxInputs - (producer, _producerMeasurements) <- - expectRight - =<< parseRoot "test/phase3/typed-producer.tex" - assertEqual "selected root uses typed driver" - TypedMigrationGraph - (classifyMigrationGraph selection producer) - assertEqual "selected parse receives the bootstrap syntax input" - [Syntax.moduleSyntaxAssertedId bootstrapSyntax] - (Syntax.moduleSyntaxDirectInputs - (Parse.parsedModuleSyntaxInterface - (Parse.parsedWorkspaceRootModule producer))) - (importer, _importerMeasurements) <- - expectRight - =<< parseRoot "test/phase3/legacy-importer.tex" - assertEqual "unselected importer keeps the complete graph legacy" - LegacyMigrationGraph - (classifyMigrationGraph selection importer) - forM_ - [ ( "set/bipartition.tex" - , ["set.tex", "set/cons.tex", "set/powerset.tex"] - ) - , ("set/product.tex", ["set.tex"]) - , ("set/filter.tex", ["set.tex", "set/powerset.tex"]) - , ( "relation.tex" - , ["set.tex", "set/powerset.tex", "set/product.tex"] - ) - , ( "relation/properties.tex" - , ["set.tex", "relation.tex"] - ) - , ( "relation/uniqueness.tex" - , ["set.tex", "relation.tex"] - ) - , ( "function.tex" - , ["set.tex", "relation.tex", "relation/uniqueness.tex"] - ) - , ( "set/cantor.tex" - , ["set/powerset.tex", "function.tex"] - ) - , ( "set/fixpoint.tex" - , ["set/powerset.tex", "function.tex"] - ) - ] - \(path, expectedImports) -> do - (phase53, _phase53Measurements) <- - expectRight =<< parseRoot path - assertEqual - (path <> " closure uses the typed driver") - TypedMigrationGraph - (classifyMigrationGraph selection phase53) - assertEqual - (path <> " direct imports") - expectedImports - [ safeRelativePathFilePath - (sourceAddressRelativePath - (Parse.parsedImportedAddress imported)) - | imported <- Parse.parsedModuleImports - (Parse.parsedWorkspaceRootModule phase53) - ] - (functionImporter, _functionMeasurements) <- - expectRight =<< parseRoot "set/equinumerosity.tex" - assertEqual "unselected function importer remains legacy" - LegacyMigrationGraph - (classifyMigrationGraph selection functionImporter) - -expectRight :: Show err => Either err value -> IO value -expectRight = \case - Left err -> - assertFailure (show err) >> fail "unreachable" - Right value -> - pure value |
