From ee8132a9782161c37b70c1027634d8ac9c45eefa Mon Sep 17 00:00:00 2001 From: Vladimir Safonkin Date: Thu, 24 Dec 2020 12:36:37 +0300 Subject: [PATCH] [Ubuntu] Migrate tests for Haskell to Pester (#2314) * Add Pester tests for Haskell on Ubuntu * Add tests for all installed ghc versions * Minor fix * Minor fix * Fix number of installed ghc versions test * Fix GHC number test --- images/linux/scripts/installers/haskell.sh | 24 ++-------------- images/linux/scripts/tests/Common.Tests.ps1 | 31 +++++++++++++++++++++ 2 files changed, 34 insertions(+), 21 deletions(-) create mode 100644 images/linux/scripts/tests/Common.Tests.ps1 diff --git a/images/linux/scripts/installers/haskell.sh b/images/linux/scripts/installers/haskell.sh index 9b351cc31..5a747950c 100644 --- a/images/linux/scripts/installers/haskell.sh +++ b/images/linux/scripts/installers/haskell.sh @@ -6,6 +6,7 @@ # Source the helpers for use with the script source $HELPER_SCRIPTS/etc-environment.sh +source $HELPER_SCRIPTS/invoke-tests.sh # Install Herbert V. Riedel's PPA for managing multiple version of ghc on ubuntu. # https://launchpad.net/~hvr/+archive/ubuntu/ghc @@ -33,27 +34,8 @@ apt-get install -y cabal-install-$cabalVersion # Install the latest stable release of haskell stack curl -sSL https://get.haskellstack.org/ | sh -# Run tests to determine that the software installed as expected -echo "Testing to make sure that script performed as expected, and basic scenarios work" -# Check all ghc versions -for version in ${ghcInstalledVersions[@]}; do - if ! command -v /opt/ghc/$version/bin/ghc; then - echo "ghc $version was not installed" - exit 1 - fi -done - -# Check cabal -if ! command -v /opt/cabal/$cabalVersion/bin/cabal; then - echo "cabal $cabalVersion was not installed" - exit 1 -fi - -# Check stack -if ! command -v stack; then - exit 1 -fi - # Create symlink for ghc and cabal in /usr/bin ln -s "/opt/ghc/$defaultGHCVersion/bin/ghc" "/usr/bin/ghc" ln -s "/opt/cabal/$cabalVersion/bin/cabal" "/usr/bin/cabal" + +invoke_tests "Common" "Haskell" \ No newline at end of file diff --git a/images/linux/scripts/tests/Common.Tests.ps1 b/images/linux/scripts/tests/Common.Tests.ps1 new file mode 100644 index 000000000..7a6133d06 --- /dev/null +++ b/images/linux/scripts/tests/Common.Tests.ps1 @@ -0,0 +1,31 @@ +Describe "Haskell" { + + $GHCCommonPath = "/opt/ghc" + $GHCVersions = Get-ChildItem -Path $GHCCommonPath | Where-Object { $_.Name -match "\d+\.\d+" } + + $testCase = @{ GHCVersions = $GHCVersions } + + It "GHC directory contains three version of GHC" -TestCases $testCase { + param ([object] $GHCVersions) + $GHCVersions.Count | Should -Be 3 + } + + $testCases = $GHCVersions | ForEach-Object { @{ GHCPath = "${_}/bin/ghc"} } + + It "GHC version " -TestCases $testCases { + param ([string] $GHCPath) + "$GHCPath --version" | Should -ReturnZeroExitCode + } + + It "Default GHC" { + "ghc --version" | Should -ReturnZeroExitCode + } + + It "Cabal" { + "cabal --version" | Should -ReturnZeroExitCode + } + + It "Stack" { + "stack --version" | Should -ReturnZeroExitCode + } +} \ No newline at end of file