Skip to content

Commit 78a27b4

Browse files
authored
Add GHC 9.6 to CI and fix tests (#193)
Tests needing fixing for recent minio Also: - set minimum tested version to 8.10 - remove building with cabal 3.6 - update stack.yaml to add crypton-connection Update live server test env var handling
1 parent 34a186e commit 78a27b4

File tree

5 files changed

+258
-214
lines changed

5 files changed

+258
-214
lines changed

.github/workflows/ci.yml

Lines changed: 171 additions & 169 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,26 @@ jobs:
2424
ormolu:
2525
runs-on: ubuntu-latest
2626
steps:
27-
- uses: actions/checkout@v3
28-
- uses: haskell-actions/run-ormolu@v12
27+
- uses: actions/checkout@v4
28+
- uses: haskell-actions/run-ormolu@v15
2929
with:
3030
version: "0.5.0.1"
3131

3232
hlint:
3333
runs-on: ubuntu-latest
3434
steps:
35-
- uses: actions/checkout@v3
35+
- uses: actions/checkout@v4
3636

37-
- name: 'Set up HLint'
38-
uses: haskell/actions/hlint-setup@v2
39-
with:
40-
version: '3.5'
37+
- name: "Set up HLint"
38+
uses: haskell/actions/hlint-setup@v2
39+
with:
40+
version: "3.5"
4141

42-
- name: 'Run HLint'
43-
uses: haskell/actions/hlint-run@v2
44-
with:
45-
path: '["src/", "test/", "examples"]'
46-
fail-on: warning
42+
- name: "Run HLint"
43+
uses: haskell/actions/hlint-run@v2
44+
with:
45+
path: '["src/", "test/", "examples"]'
46+
fail-on: warning
4747

4848
cabal:
4949
name: ${{ matrix.os }} / ghc-${{ matrix.ghc }} / cabal-${{ matrix.cabal }}
@@ -52,96 +52,95 @@ jobs:
5252
strategy:
5353
matrix:
5454
os: [ubuntu-latest, windows-latest] # Removed macos-latest due to cert issues.
55-
cabal: ["3.6", "3.8", "latest"]
55+
cabal: ["3.8", "latest"]
5656
ghc:
57+
- "9.6"
5758
- "9.4"
5859
- "9.2"
5960
- "9.0"
6061
- "8.10"
61-
- "8.8"
62-
- "8.6"
63-
exclude:
64-
- os: windows-latest
65-
ghc: "9.4"
66-
cabal: "3.6"
62+
# exclude:
63+
# - os: windows-latest
64+
# ghc: "9.4"
65+
# cabal: "3.6"
6766

6867
steps:
69-
- uses: actions/checkout@v3
70-
if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master'
71-
72-
- uses: haskell/actions/setup@v2
73-
id: setup-haskell-cabal
74-
name: Setup Haskell
75-
with:
76-
ghc-version: ${{ matrix.ghc }}
77-
cabal-version: ${{ matrix.cabal }}
78-
79-
- name: Configure
80-
run: |
81-
cabal configure --enable-tests --enable-benchmarks --test-show-details=direct -fexamples -fdev -flive-test
82-
83-
- name: Freeze
84-
run: |
85-
cabal freeze
86-
87-
- uses: actions/cache@v3
88-
name: Cache ~/.cabal/packages, ~/.cabal/store and dist-newstyle
89-
with:
90-
path: |
91-
~/.cabal/packages
92-
~/.cabal/store
93-
dist-newstyle
94-
key: ${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('**/*.cabal', '**/cabal.project', '**/cabal.project.freeze') }}
95-
restore-keys: ${{ runner.os }}-${{ matrix.ghc }}-
96-
97-
- name: Install dependencies
98-
run: |
99-
cabal build --only-dependencies
100-
101-
- name: Build
102-
run: |
103-
cabal build
104-
105-
- name: Setup MinIO for testing (Linux)
106-
if: matrix.os == 'ubuntu-latest'
107-
run: |
108-
mkdir -p /tmp/minio /tmp/minio-config/certs
109-
cp test/cert/* /tmp/minio-config/certs/
110-
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/linux-amd64/minio; chmod +x ./minio)
111-
sudo cp /tmp/minio-config/certs/public.crt /usr/local/share/ca-certificates/
112-
sudo update-ca-certificates
113-
114-
- name: Setup MinIO for testing (MacOS)
115-
if: matrix.os == 'macos-latest'
116-
run: |
117-
mkdir -p /tmp/minio /tmp/minio-config/certs
118-
cp test/cert/* /tmp/minio-config/certs/
119-
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/darwin-amd64/minio; chmod +x ./minio)
120-
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /tmp/minio-config/certs/public.crt
121-
122-
- name: Setup MinIO for testing (Windows)
123-
if: matrix.os == 'windows-latest'
124-
run: |
125-
New-Item -ItemType Directory -Path "$env:temp/minio-config/certs/"
126-
Copy-Item -Path test\cert\* -Destination "$env:temp/minio-config/certs/"
127-
Invoke-WebRequest -Uri https://dl.minio.io/server/minio/release/windows-amd64/minio.exe -OutFile $HOME/minio.exe
128-
Import-Certificate -FilePath "$env:temp/minio-config/certs/public.crt" -CertStoreLocation Cert:\LocalMachine\Root
129-
130-
- name: Test (Non-Windows)
131-
if: matrix.os != 'windows-latest'
132-
run: |
133-
/tmp/minio/minio server --quiet --certs-dir /tmp/minio-config/certs data1 data2 data3 data4 2>&1 > minio.log &
134-
ghc --version
135-
cabal --version
136-
cabal test
137-
138-
- name: Test (Windows)
139-
if: matrix.os == 'windows-latest'
140-
run: |
141-
Start-Process -NoNewWindow -FilePath "$HOME/minio.exe" -ArgumentList "--certs-dir", "$env:temp/minio-config/certs", "server", "$env:temp/data1", "$env:temp/data2", "$env:temp/data3", "$env:temp/data4"
142-
ghc --version
143-
cabal --version
144-
cabal test
68+
- uses: actions/checkout@v4
69+
if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master'
70+
71+
- uses: haskell/actions/setup@v2
72+
id: setup-haskell-cabal
73+
name: Setup Haskell
74+
with:
75+
ghc-version: ${{ matrix.ghc }}
76+
cabal-version: ${{ matrix.cabal }}
77+
78+
- name: Configure
79+
run: |
80+
cabal configure --enable-tests --enable-benchmarks --test-show-details=direct -fexamples -fdev -flive-test
81+
82+
- name: Freeze
83+
run: |
84+
cabal freeze
85+
86+
- uses: actions/cache@v3
87+
name: Cache ~/.cabal/packages, ~/.cabal/store and dist-newstyle
88+
with:
89+
path: |
90+
~/.cabal/packages
91+
~/.cabal/store
92+
dist-newstyle
93+
key: ${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('**/*.cabal', '**/cabal.project', '**/cabal.project.freeze') }}
94+
restore-keys: ${{ runner.os }}-${{ matrix.ghc }}-
95+
96+
- name: Install dependencies
97+
run: |
98+
cabal build --only-dependencies
99+
100+
- name: Build
101+
run: |
102+
cabal build
103+
104+
- name: Setup MinIO for testing (Linux)
105+
if: matrix.os == 'ubuntu-latest'
106+
run: |
107+
mkdir -p /tmp/minio /tmp/minio-config/certs
108+
cp test/cert/* /tmp/minio-config/certs/
109+
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/linux-amd64/minio; chmod +x ./minio)
110+
sudo cp /tmp/minio-config/certs/public.crt /usr/local/share/ca-certificates/
111+
sudo update-ca-certificates
112+
113+
- name: Setup MinIO for testing (MacOS)
114+
if: matrix.os == 'macos-latest'
115+
run: |
116+
mkdir -p /tmp/minio /tmp/minio-config/certs
117+
cp test/cert/* /tmp/minio-config/certs/
118+
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/darwin-amd64/minio; chmod +x ./minio)
119+
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /tmp/minio-config/certs/public.crt
120+
121+
- name: Setup MinIO for testing (Windows)
122+
if: matrix.os == 'windows-latest'
123+
run: |
124+
New-Item -ItemType Directory -Path "$env:temp/minio-config/certs/"
125+
Copy-Item -Path test\cert\* -Destination "$env:temp/minio-config/certs/"
126+
Invoke-WebRequest -Uri https://dl.minio.io/server/minio/release/windows-amd64/minio.exe -OutFile $HOME/minio.exe
127+
Import-Certificate -FilePath "$env:temp/minio-config/certs/public.crt" -CertStoreLocation Cert:\LocalMachine\Root
128+
129+
- name: Test (Non-Windows)
130+
if: matrix.os != 'windows-latest'
131+
run: |
132+
/tmp/minio/minio server --quiet --certs-dir /tmp/minio-config/certs data1 data2 data3 data4 2>&1 > minio.log &
133+
ghc --version
134+
cabal --version
135+
cabal test
136+
137+
- name: Test (Windows)
138+
if: matrix.os == 'windows-latest'
139+
run: |
140+
Start-Process -NoNewWindow -FilePath "$HOME/minio.exe" -ArgumentList "--certs-dir", "$env:temp/minio-config/certs", "server", "$env:temp/data1", "$env:temp/data2", "$env:temp/data3", "$env:temp/data4"
141+
ghc --version
142+
cabal --version
143+
cabal test
145144
146145
stack:
147146
name: stack / ghc ${{ matrix.ghc }}
@@ -151,80 +150,83 @@ jobs:
151150
ghc:
152151
- "8.10.7"
153152
- "9.0.2"
154-
- "9.2.4"
153+
- "9.2.8"
154+
- "9.4.8"
155+
- "9.6.5"
155156
os: [ubuntu-latest]
156157

157158
steps:
158-
- uses: actions/checkout@v3
159-
if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master'
160-
161-
- uses: haskell/actions/setup@v2
162-
name: Setup Haskell Stack
163-
with:
164-
enable-stack: true
165-
ghc-version: ${{ matrix.ghc }}
166-
stack-version: 'latest'
167-
168-
- uses: actions/cache@v3
169-
name: Cache ~/.stack
170-
with:
171-
path: ~/.stack
172-
key: ${{ runner.os }}-stack-global-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }}
173-
restore-keys: |
174-
${{ runner.os }}-stack-global-
175-
- uses: actions/cache@v3
176-
name: Cache .stack-work
177-
with:
178-
path: .stack-work
179-
key: ${{ runner.os }}-stack-work-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }}-${{ hashFiles('**/*.hs') }}
180-
restore-keys: |
181-
${{ runner.os }}-stack-work-
182-
183-
- name: Install dependencies
184-
run: |
185-
stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks --only-dependencies
186-
187-
- name: Build
188-
run: |
189-
stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks --flag minio-hs:examples --flag minio-hs:live-test --flag minio-hs:dev
190-
191-
- name: Setup MinIO for testing (Linux)
192-
if: matrix.os == 'ubuntu-latest'
193-
run: |
194-
mkdir -p /tmp/minio /tmp/minio-config/certs
195-
cp test/cert/* /tmp/minio-config/certs/
196-
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/linux-amd64/minio; chmod +x ./minio)
197-
sudo cp /tmp/minio-config/certs/public.crt /usr/local/share/ca-certificates/
198-
sudo update-ca-certificates
199-
200-
- name: Setup MinIO for testing (MacOS)
201-
if: matrix.os == 'macos-latest'
202-
run: |
203-
mkdir -p /tmp/minio /tmp/minio-config/certs
204-
cp test/cert/* /tmp/minio-config/certs/
205-
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/darwin-amd64/minio; chmod +x ./minio)
206-
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /tmp/minio-config/certs/public.crt
207-
208-
- name: Setup MinIO for testing (Windows)
209-
if: matrix.os == 'windows-latest'
210-
run: |
211-
New-Item -ItemType Directory -Path "$env:temp/minio-config/certs/"
212-
Copy-Item -Path test\cert\* -Destination "$env:temp/minio-config/certs/"
213-
Invoke-WebRequest -Uri https://dl.minio.io/server/minio/release/windows-amd64/minio.exe -OutFile $HOME/minio.exe
214-
Import-Certificate -FilePath "$env:temp/minio-config/certs/public.crt" -CertStoreLocation Cert:\LocalMachine\Root
215-
216-
- name: Test (Non-Windows)
217-
if: matrix.os != 'windows-latest'
218-
run: |
219-
/tmp/minio/minio server --quiet --certs-dir /tmp/minio-config/certs data1 data2 data3 data4 2>&1 > minio.log &
220-
ghc --version
221-
stack --version
222-
stack test --system-ghc --flag minio-hs:live-test --flag minio-hs:dev
223-
224-
- name: Test (Windows)
225-
if: matrix.os == 'windows-latest'
226-
run: |
227-
Start-Process -NoNewWindow -FilePath "$HOME/minio.exe" -ArgumentList "--certs-dir", "$env:temp/minio-config/certs", "server", "$env:temp/data1", "$env:temp/data2", "$env:temp/data3", "$env:temp/data4"
228-
ghc --version
229-
cabal --version
230-
stack test --system-ghc --flag minio-hs:live-test --flag minio-hs:dev
159+
- uses: actions/checkout@v4
160+
if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master'
161+
162+
- name: Install Haskell Stack
163+
run: |
164+
if ! which stack
165+
then
166+
curl -sSL https://get.haskellstack.org/ | sh
167+
fi
168+
169+
- uses: actions/cache@v3
170+
name: Cache ~/.stack
171+
with:
172+
path: ~/.stack
173+
key: ${{ runner.os }}-stack-global-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }}
174+
restore-keys: |
175+
${{ runner.os }}-stack-global-
176+
- uses: actions/cache@v3
177+
name: Cache .stack-work
178+
with:
179+
path: .stack-work
180+
key: ${{ runner.os }}-stack-work-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }}-${{ hashFiles('**/*.hs') }}
181+
restore-keys: |
182+
${{ runner.os }}-stack-work-
183+
184+
- name: Install dependencies
185+
run: |
186+
stack --version
187+
stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks --only-dependencies
188+
189+
- name: Build
190+
run: |
191+
stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks --flag minio-hs:examples --flag minio-hs:live-test --flag minio-hs:dev
192+
193+
- name: Setup MinIO for testing (Linux)
194+
if: matrix.os == 'ubuntu-latest'
195+
run: |
196+
mkdir -p /tmp/minio /tmp/minio-config/certs
197+
cp test/cert/* /tmp/minio-config/certs/
198+
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/linux-amd64/minio; chmod +x ./minio)
199+
sudo cp /tmp/minio-config/certs/public.crt /usr/local/share/ca-certificates/
200+
sudo update-ca-certificates
201+
202+
- name: Setup MinIO for testing (MacOS)
203+
if: matrix.os == 'macos-latest'
204+
run: |
205+
mkdir -p /tmp/minio /tmp/minio-config/certs
206+
cp test/cert/* /tmp/minio-config/certs/
207+
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/darwin-amd64/minio; chmod +x ./minio)
208+
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /tmp/minio-config/certs/public.crt
209+
210+
- name: Setup MinIO for testing (Windows)
211+
if: matrix.os == 'windows-latest'
212+
run: |
213+
New-Item -ItemType Directory -Path "$env:temp/minio-config/certs/"
214+
Copy-Item -Path test\cert\* -Destination "$env:temp/minio-config/certs/"
215+
Invoke-WebRequest -Uri https://dl.minio.io/server/minio/release/windows-amd64/minio.exe -OutFile $HOME/minio.exe
216+
Import-Certificate -FilePath "$env:temp/minio-config/certs/public.crt" -CertStoreLocation Cert:\LocalMachine\Root
217+
218+
- name: Test (Non-Windows)
219+
if: matrix.os != 'windows-latest'
220+
run: |
221+
/tmp/minio/minio server --quiet --certs-dir /tmp/minio-config/certs data1 data2 data3 data4 2>&1 > minio.log &
222+
ghc --version
223+
stack --version
224+
stack test --system-ghc --flag minio-hs:live-test --flag minio-hs:dev
225+
226+
- name: Test (Windows)
227+
if: matrix.os == 'windows-latest'
228+
run: |
229+
Start-Process -NoNewWindow -FilePath "$HOME/minio.exe" -ArgumentList "--certs-dir", "$env:temp/minio-config/certs", "server", "$env:temp/data1", "$env:temp/data2", "$env:temp/data3", "$env:temp/data4"
230+
ghc --version
231+
cabal --version
232+
stack test --system-ghc --flag minio-hs:live-test --flag minio-hs:dev

minio-hs.cabal

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,11 @@ extra-doc-files:
2222
extra-source-files:
2323
examples/*.hs
2424
stack.yaml
25-
tested-with: GHC == 8.6.5
26-
, GHC == 8.8.4
27-
, GHC == 8.10.7
25+
tested-with: GHC == 8.10.7
2826
, GHC == 9.0.2
29-
, GHC == 9.2.7
30-
, GHC == 9.4.5
27+
, GHC == 9.2.8
28+
, GHC == 9.4.8
29+
, GHC == 9.6.5
3130

3231
source-repository head
3332
type: git

0 commit comments

Comments
 (0)