Skip to content
  • Phil de Joux's avatar
    f8cd5634
    Show provenance of import constraint · f8cd5634
    Phil de Joux authored
    With this change to the solver message rendering, I also fix some bugs around project imports, adding tests for those cases. Reviewers asked that the Y-shaped import checks (using IORef) be made on a separate pull request. Removing those lead to cascading deletions.
    
    - Regenerate expected .out files
    - Show tree provenance of import constraint
    - Add trimmed down PackageTests/VersionPriority
    - Add changelog entry
    - Use NonEmpty
    - Fix check for cyclical import
    - Use primes for next iteration
    - Remove unused LANGUAGE pragmas
    - Rename to projectConfigPathRoot
    - Docs for ProjectConfigPath and showProjectConfigPath
    - Renaming
    - Add cyclical import tests with 1 and 2 hops in cycle
    - Use full path for cyclical error message
    - Expected output has project with full project path
    - Add fullPath local function
    - Project directory as FilePath, not Maybe FilePath
    - Use (_, projectFileName) binding splitFileName
    - Need full path to project parsing legacy
    - Inline seenImports conversion
    - Add cyclical checks with same file names and hops
    - Add noncyclical tests that hop over folders
    - Add a project testing skipping in and out of a folder
    - Update expectations of cyclical tests
    - Use canonicalizePath for collapsing .. when possible
    - Capture trace for later
    - Add module for ProjectConfigPath
    - Move functions for ProjectConfigPath to its module
    - Fetch URI is not prefixed with ./https://etc
    - Document normaliseConfigPath
    - Add doctests for normaliseConfigPath
    - Add doctest of canonicalizeConfigPath
    - Show an example of canonical paths
    - Use importer and importee in canonicalizeConfigPaths
    - Add logging
    - Use normLocPath, drop -XMultiWayIf
    - Remove seenImports parameter from parseProject
    - Follow hlint suggestion: Move brackets to avoid $
    - Follow hlint warning: Use mapM
    - Follow hlint warning: Use traverse_
    - Follow hlint suggestion: Use <$>
    - Add failing test skipping across folder
    - Remove normaliseConfigPath
    - Add hasDuplicatesConfigPath
    - Remove lengthConfigPath and nubConfigPath
    - Mention cabal-install-solver in the changelog
    - Left align project import tree with other content
    - Rerun tests to generate left-aligned tree output
    - Don't show "constraint from project requires ..."
    - Regenerate test outputs without (constraint from project ...)
    - Move fail reason printing to project config path module
    - Minimize diff of showFR
    - Show an "imported by: " list instead of a tree
    - Update info logging, avoiding leading spaces
    - When logging I found leading spaces were trimmed
    - Don't log relative location and path
    - Use unicode tree symbol in haddocks
    - A duplicate importing tests
    - Add Y-forking import test
    - A test for detecting when the same config is imported via many different paths
    - Fix a typo with ../noncyclical-same-filename-b.config
    - Add an intercepting cabal-testsuite/cabal.project
    - Use IORef to detect seen imports
    - Get rid of seenImports
    - Use IORef [FilePath] of uniqueImports
    - Add consProjectConfigPath
    - Expand the haddocks of newtype ProjectConfigPath
    - Clarify, it's the project root directory
    - Rename a function to makeRelativeConfigPath
    - Fix whitespace
    - Update output snippet in changelog
    - Put the info logging together
    - Split cycles and duplicates detection
    - Add fixes and duplicate import to the change log
    - Better reporting of duplicate imports
    - Report cycles and duplicates using unique file name
    - This is after canonicalizeConfigPath, relative to the project directory
    - Get rid of fullLocPath, use normLocPath only
    - Do reporting using paths relative to the directory of the project
    - Issue a warning for Y-shaped duplicate imports
    - Add duplicateImportMsg
    - Use pretty printing for duplicate import message
    - Use pretty printing for all ProjectConfigPath printing
    - Drop a parameter from duplicateImportMsg
    - Correct haddocks on docProjectConfigPath
    - Satisfy fourmolu
    - Remove the surplus space in "imported by "
    - Log project parsing at the debug level, up from info
    - Simplify the changelog snippet
    - Use normalized paths for solver messages
    - Satisfy fourmolu
    - Relative to the directory of the project
    - Duplicate imports are reported as warnings
    - No need to mention v2-build
    - Remove IORef
    - Subdue a check for duplicate imports
    - TODO: Catch duplicates across different import paths. We know how to do this
    - Remove check for duplicate imports
    - Improve the canonicalizeConfigPath doctests
    - Add haddocks, drop configPath from go
    - Make importsBy NonEmpty
    - Use testDir in doctests
    - Use canonical test directory
    - Regenerate expected outputs
    - Assume head of the path is the duplicate
    - Get rid of duplicateImportMsg
    - Remove unused imports in ProjectConfigPath
    - Follow hlint suggestion: use fewer imports
    - Remove fullConfigPathRoot
    - Follow hlint suggestion: redundant bracket
    - Use the original "source" variable name
    - Put the source next to its contents
    - Go with the original "seenImports" variable name
    - Avoid -XMultiWayIf
    - Not needed since we aren't checking for duplicates right now
    - Be consistent in naming sources
    - Move project dir alongside related params
    - Rename to pathRequiresVersion
    - Add back "constraint from"
    - Talk only of cycles and not duplicates
    - Don't report line number for cyclical import
    - Remove 2nd example in changelog
    - Remove Y-forked duplicate import test
    - Add "imported by" to assertOutputContains
    - Cull excess doctests of canonicalizeConfigPath
    - Add deep path doctest
    - Update haddocks of canonicalizeConfigPath
    - remove idempotent speculation (it isn't idempotent)
    - use "indirection" to describe "." and ".."
    - makes the path relative to the given directory
    - Remove seenImports
    - Use Explicit ProjectConfigPath
    - Missed one "constraint from" in changelog example
    - Don't check (verbosity >= verbose) separately
    - While the same level of verbosity as info, it is clearer to not check the level separately.
    - Might calculate the path but not use it.
    - Add AbsoluteDir
    - Keep provenance normalised for display
    - Remove stale REVIEW comment
    - Storing provenance normalized avoids this
    - Fix whitespace
    - Satisfy HLint warning: Redundant flip
    - Gut the repo/hashable packages
    - Revert AbsoluteDir to FilePath
    f8cd5634
    Show provenance of import constraint
    Phil de Joux authored
    With this change to the solver message rendering, I also fix some bugs around project imports, adding tests for those cases. Reviewers asked that the Y-shaped import checks (using IORef) be made on a separate pull request. Removing those lead to cascading deletions.
    
    - Regenerate expected .out files
    - Show tree provenance of import constraint
    - Add trimmed down PackageTests/VersionPriority
    - Add changelog entry
    - Use NonEmpty
    - Fix check for cyclical import
    - Use primes for next iteration
    - Remove unused LANGUAGE pragmas
    - Rename to projectConfigPathRoot
    - Docs for ProjectConfigPath and showProjectConfigPath
    - Renaming
    - Add cyclical import tests with 1 and 2 hops in cycle
    - Use full path for cyclical error message
    - Expected output has project with full project path
    - Add fullPath local function
    - Project directory as FilePath, not Maybe FilePath
    - Use (_, projectFileName) binding splitFileName
    - Need full path to project parsing legacy
    - Inline seenImports conversion
    - Add cyclical checks with same file names and hops
    - Add noncyclical tests that hop over folders
    - Add a project testing skipping in and out of a folder
    - Update expectations of cyclical tests
    - Use canonicalizePath for collapsing .. when possible
    - Capture trace for later
    - Add module for ProjectConfigPath
    - Move functions for ProjectConfigPath to its module
    - Fetch URI is not prefixed with ./https://etc
    - Document normaliseConfigPath
    - Add doctests for normaliseConfigPath
    - Add doctest of canonicalizeConfigPath
    - Show an example of canonical paths
    - Use importer and importee in canonicalizeConfigPaths
    - Add logging
    - Use normLocPath, drop -XMultiWayIf
    - Remove seenImports parameter from parseProject
    - Follow hlint suggestion: Move brackets to avoid $
    - Follow hlint warning: Use mapM
    - Follow hlint warning: Use traverse_
    - Follow hlint suggestion: Use <$>
    - Add failing test skipping across folder
    - Remove normaliseConfigPath
    - Add hasDuplicatesConfigPath
    - Remove lengthConfigPath and nubConfigPath
    - Mention cabal-install-solver in the changelog
    - Left align project import tree with other content
    - Rerun tests to generate left-aligned tree output
    - Don't show "constraint from project requires ..."
    - Regenerate test outputs without (constraint from project ...)
    - Move fail reason printing to project config path module
    - Minimize diff of showFR
    - Show an "imported by: " list instead of a tree
    - Update info logging, avoiding leading spaces
    - When logging I found leading spaces were trimmed
    - Don't log relative location and path
    - Use unicode tree symbol in haddocks
    - A duplicate importing tests
    - Add Y-forking import test
    - A test for detecting when the same config is imported via many different paths
    - Fix a typo with ../noncyclical-same-filename-b.config
    - Add an intercepting cabal-testsuite/cabal.project
    - Use IORef to detect seen imports
    - Get rid of seenImports
    - Use IORef [FilePath] of uniqueImports
    - Add consProjectConfigPath
    - Expand the haddocks of newtype ProjectConfigPath
    - Clarify, it's the project root directory
    - Rename a function to makeRelativeConfigPath
    - Fix whitespace
    - Update output snippet in changelog
    - Put the info logging together
    - Split cycles and duplicates detection
    - Add fixes and duplicate import to the change log
    - Better reporting of duplicate imports
    - Report cycles and duplicates using unique file name
    - This is after canonicalizeConfigPath, relative to the project directory
    - Get rid of fullLocPath, use normLocPath only
    - Do reporting using paths relative to the directory of the project
    - Issue a warning for Y-shaped duplicate imports
    - Add duplicateImportMsg
    - Use pretty printing for duplicate import message
    - Use pretty printing for all ProjectConfigPath printing
    - Drop a parameter from duplicateImportMsg
    - Correct haddocks on docProjectConfigPath
    - Satisfy fourmolu
    - Remove the surplus space in "imported by "
    - Log project parsing at the debug level, up from info
    - Simplify the changelog snippet
    - Use normalized paths for solver messages
    - Satisfy fourmolu
    - Relative to the directory of the project
    - Duplicate imports are reported as warnings
    - No need to mention v2-build
    - Remove IORef
    - Subdue a check for duplicate imports
    - TODO: Catch duplicates across different import paths. We know how to do this
    - Remove check for duplicate imports
    - Improve the canonicalizeConfigPath doctests
    - Add haddocks, drop configPath from go
    - Make importsBy NonEmpty
    - Use testDir in doctests
    - Use canonical test directory
    - Regenerate expected outputs
    - Assume head of the path is the duplicate
    - Get rid of duplicateImportMsg
    - Remove unused imports in ProjectConfigPath
    - Follow hlint suggestion: use fewer imports
    - Remove fullConfigPathRoot
    - Follow hlint suggestion: redundant bracket
    - Use the original "source" variable name
    - Put the source next to its contents
    - Go with the original "seenImports" variable name
    - Avoid -XMultiWayIf
    - Not needed since we aren't checking for duplicates right now
    - Be consistent in naming sources
    - Move project dir alongside related params
    - Rename to pathRequiresVersion
    - Add back "constraint from"
    - Talk only of cycles and not duplicates
    - Don't report line number for cyclical import
    - Remove 2nd example in changelog
    - Remove Y-forked duplicate import test
    - Add "imported by" to assertOutputContains
    - Cull excess doctests of canonicalizeConfigPath
    - Add deep path doctest
    - Update haddocks of canonicalizeConfigPath
    - remove idempotent speculation (it isn't idempotent)
    - use "indirection" to describe "." and ".."
    - makes the path relative to the given directory
    - Remove seenImports
    - Use Explicit ProjectConfigPath
    - Missed one "constraint from" in changelog example
    - Don't check (verbosity >= verbose) separately
    - While the same level of verbosity as info, it is clearer to not check the level separately.
    - Might calculate the path but not use it.
    - Add AbsoluteDir
    - Keep provenance normalised for display
    - Remove stale REVIEW comment
    - Storing provenance normalized avoids this
    - Fix whitespace
    - Satisfy HLint warning: Redundant flip
    - Gut the repo/hashable packages
    - Revert AbsoluteDir to FilePath
Loading