From c23909de7e37c5d1b7853638299380bc9cc19096 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sun, 24 Nov 2024 11:27:54 +0000 Subject: [PATCH 1/2] ci(mergify): upgrade configuration to current format (#4454) Co-authored-by: Mergify <37929162+mergify[bot]@users.noreply.github.com> --- .github/mergify.yml | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/.github/mergify.yml b/.github/mergify.yml index 15e2dd2653..c0b76f7eec 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -2,26 +2,19 @@ queue_rules: - name: default # Mergify always respects the branch protection settings # so we can left empty mergify own ones - conditions: [] - -pull_request_rules: - - name: Automatically merge pull requests - conditions: + queue_conditions: - label=merge me - '#approved-reviews-by>=1' - actions: - queue: - method: squash - name: default - # The queue action automatically updates PRs that - # have entered the queue, but in order to do that - # they must have passed CI. Since our CI is a bit - # flaky, PRs can fail to get in, which then means - # they don't get updated, which is extra annoying. - # This just adds the updating as an independent - # step. + merge_conditions: [] + merge_method: squash + +pull_request_rules: - name: Automatically update pull requests conditions: - label=merge me actions: update: + - name: refactored queue action rule + conditions: [] + actions: + queue: From fea01358646a767980eb8645f7ef8878d83725fe Mon Sep 17 00:00:00 2001 From: Georgii Gerasev <54953043+VenInf@users.noreply.github.com> Date: Mon, 25 Nov 2024 12:07:49 +0300 Subject: [PATCH 2/2] More tests and better docs for cabal-add (#4455) * new tests * change codeAction title * more tests and docs --------- Co-authored-by: fendor --- .../src/Ide/Plugin/Cabal/CabalAdd.hs | 9 +++-- plugins/hls-cabal-plugin/test/CabalAdd.hs | 20 +++++++++-- .../cabal-add-multitarget/bench/Main.hs | 6 ++++ .../cabal-add-multitarget.cabal | 33 +++++++++++++++++++ .../cabal-add-multitarget/lib/InternalLib.hs | 6 ++++ .../cabal-add-multitarget/lib/MyLib.hs | 6 ++++ .../cabal-add-multitarget/src/Main.hs | 5 +++ .../cabal-add-multitarget/test/Main.hs | 6 ++++ .../testdata/cabal-add-testdata/cabal.project | 1 + 9 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/bench/Main.hs create mode 100644 plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/cabal-add-multitarget.cabal create mode 100644 plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/lib/InternalLib.hs create mode 100644 plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/lib/MyLib.hs create mode 100644 plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/src/Main.hs create mode 100644 plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/test/Main.hs diff --git a/plugins/hls-cabal-plugin/src/Ide/Plugin/Cabal/CabalAdd.hs b/plugins/hls-cabal-plugin/src/Ide/Plugin/Cabal/CabalAdd.hs index c7569bff72..ed43099998 100644 --- a/plugins/hls-cabal-plugin/src/Ide/Plugin/Cabal/CabalAdd.hs +++ b/plugins/hls-cabal-plugin/src/Ide/Plugin/Cabal/CabalAdd.hs @@ -156,9 +156,8 @@ addDependencySuggestCodeAction plId verTxtDocId suggestions haskellFilePath caba -- | Gives the build targets that are used in the `CabalAdd`. -- Note the unorthodox usage of `readBuildTargets`: -- If the relative path to the haskell file is provided, - -- the `readBuildTargets` will return a main build target. - -- This behaviour is acceptable for now, but changing to a way of getting - -- all build targets in a file is advised. + -- the `readBuildTargets` will return build targets, where this + -- module is mentioned (in exposed-modules or other-modules). getBuildTargets :: GenericPackageDescription -> FilePath -> FilePath -> IO [BuildTarget] getBuildTargets gpd cabalFilePath haskellFilePath = do let haskellFileRelativePath = makeRelative (dropFileName cabalFilePath) haskellFilePath @@ -167,10 +166,10 @@ addDependencySuggestCodeAction plId verTxtDocId suggestions haskellFilePath caba mkCodeAction :: FilePath -> Maybe String -> (T.Text, T.Text) -> CodeAction mkCodeAction cabalFilePath target (suggestedDep, suggestedVersion) = let - versionTitle = if T.null suggestedVersion then T.empty else " version " <> suggestedVersion + versionTitle = if T.null suggestedVersion then T.empty else "-" <> suggestedVersion targetTitle = case target of Nothing -> T.empty - Just t -> " target " <> T.pack t + Just t -> " at " <> T.pack t title = "Add dependency " <> suggestedDep <> versionTitle <> targetTitle version = if T.null suggestedVersion then Nothing else Just suggestedVersion diff --git a/plugins/hls-cabal-plugin/test/CabalAdd.hs b/plugins/hls-cabal-plugin/test/CabalAdd.hs index 2f9b16d1b3..3b36f82bc2 100644 --- a/plugins/hls-cabal-plugin/test/CabalAdd.hs +++ b/plugins/hls-cabal-plugin/test/CabalAdd.hs @@ -27,16 +27,30 @@ cabalAddTests :: TestTree cabalAddTests = testGroup "CabalAdd Tests" - [ runHaskellTestCaseSession "Code Actions - Can add hidden package" ("cabal-add-testdata" "cabal-add-exe") + [ runHaskellTestCaseSession "Code Actions - Can add hidden package to an executable" ("cabal-add-testdata" "cabal-add-exe") (generateAddDependencyTestSession "cabal-add-exe.cabal" ("src" "Main.hs") "split" [253]) - , runHaskellTestCaseSession "Code Actions - Guard against HPack" ("cabal-add-testdata" "cabal-add-packageYaml") - (generatePackageYAMLTestSession ("src" "Main.hs")) , runHaskellTestCaseSession "Code Actions - Can add hidden package to a library" ("cabal-add-testdata" "cabal-add-lib") (generateAddDependencyTestSession "cabal-add-lib.cabal" ("src" "MyLib.hs") "split" [348]) , runHaskellTestCaseSession "Code Actions - Can add hidden package to a test" ("cabal-add-testdata" "cabal-add-tests") (generateAddDependencyTestSession "cabal-add-tests.cabal" ("test" "Main.hs") "split" [478]) , runHaskellTestCaseSession "Code Actions - Can add hidden package to a benchmark" ("cabal-add-testdata" "cabal-add-bench") (generateAddDependencyTestSession "cabal-add-bench.cabal" ("bench" "Main.hs") "split" [403]) + + , runHaskellTestCaseSession "Code Actions - Can add hidden package to an executable, multiple targets" ("cabal-add-testdata" "cabal-add-multitarget") + (generateAddDependencyTestSession "cabal-add-multitarget.cabal" ("src" "Main.hs") "split" [269]) + , runHaskellTestCaseSession "Code Actions - Can add hidden package to a library, multiple targets" ("cabal-add-testdata" "cabal-add-multitarget") + (generateAddDependencyTestSession "cabal-add-multitarget.cabal" ("lib" "MyLib.hs") "split" [413]) + , runHaskellTestCaseSession "Code Actions - Can add hidden package to an internal library, multiple targets" ("cabal-add-testdata" "cabal-add-multitarget") + (generateAddDependencyTestSession "cabal-add-multitarget.cabal" ("lib" "InternalLib.hs") "split" [413]) + , runHaskellTestCaseSession "Code Actions - Can add hidden package to a test, multiple targets" ("cabal-add-testdata" "cabal-add-multitarget") + (generateAddDependencyTestSession "cabal-add-multitarget.cabal" ("test" "Main.hs") "split" [655]) + , runHaskellTestCaseSession "Code Actions - Can add hidden package to a benchmark, multiple targets" ("cabal-add-testdata" "cabal-add-multitarget") + (generateAddDependencyTestSession "cabal-add-multitarget.cabal" ("bench" "Main.hs") "split" [776]) + + + , runHaskellTestCaseSession "Code Actions - Guard against HPack" ("cabal-add-testdata" "cabal-add-packageYaml") + (generatePackageYAMLTestSession ("src" "Main.hs")) + , testHiddenPackageSuggestions "Check CabalAdd's parser, no version" [ "It is a member of the hidden package 'base'" , "It is a member of the hidden package 'Blammo-wai'" diff --git a/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/bench/Main.hs b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/bench/Main.hs new file mode 100644 index 0000000000..e5c42398f2 --- /dev/null +++ b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/bench/Main.hs @@ -0,0 +1,6 @@ +module Main (main) where + +import Data.List.Split + +main :: IO () +main = putStrLn "Test suite not yet implemented." diff --git a/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/cabal-add-multitarget.cabal b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/cabal-add-multitarget.cabal new file mode 100644 index 0000000000..677986768e --- /dev/null +++ b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/cabal-add-multitarget.cabal @@ -0,0 +1,33 @@ +cabal-version: 2.4 +name: cabal-add-multitarget +version: 0.1.0.0 +build-type: Simple + +executable cabal-add-exe + main-is: Main.hs + hs-source-dirs: src + ghc-options: -Wall + build-depends: base + default-language: Haskell2010 + +library + exposed-modules: MyLib + other-modules: InternalLib + build-depends: base >= 4 && < 5 + hs-source-dirs: lib + ghc-options: -Wall + +test-suite cabal-add-tests-test + main-is: Main.hs + hs-source-dirs: test + type: exitcode-stdio-1.0 + build-depends: base + default-language: Haskell2010 + +benchmark benchmark + main-is: Main.hs + build-depends: base + hs-source-dirs: bench + type: exitcode-stdio-1.0 + ghc-options: -threaded + diff --git a/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/lib/InternalLib.hs b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/lib/InternalLib.hs new file mode 100644 index 0000000000..5a3dd79258 --- /dev/null +++ b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/lib/InternalLib.hs @@ -0,0 +1,6 @@ +module InternalLib (internalFunc) where + +import Data.List.Split + +internalFunc :: IO () +internalFunc = putStrLn "internalFunc" diff --git a/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/lib/MyLib.hs b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/lib/MyLib.hs new file mode 100644 index 0000000000..bbb506d001 --- /dev/null +++ b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/lib/MyLib.hs @@ -0,0 +1,6 @@ +module MyLib (someFunc) where + +import Data.List.Split + +someFunc :: IO () +someFunc = putStrLn "someFunc" diff --git a/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/src/Main.hs b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/src/Main.hs new file mode 100644 index 0000000000..0bf3e99dae --- /dev/null +++ b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/src/Main.hs @@ -0,0 +1,5 @@ +module Main where + +import Data.List.Split + +main = putStrLn "Hello, Haskell!" \ No newline at end of file diff --git a/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/test/Main.hs b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/test/Main.hs new file mode 100644 index 0000000000..e5c42398f2 --- /dev/null +++ b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal-add-multitarget/test/Main.hs @@ -0,0 +1,6 @@ +module Main (main) where + +import Data.List.Split + +main :: IO () +main = putStrLn "Test suite not yet implemented." diff --git a/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal.project b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal.project index 786cb592de..21eb1f63eb 100644 --- a/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal.project +++ b/plugins/hls-cabal-plugin/test/testdata/cabal-add-testdata/cabal.project @@ -2,4 +2,5 @@ packages: cabal-add-exe cabal-add-lib cabal-add-tests cabal-add-bench + cabal-add-multitarget cabal-add-packageYaml