-
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
33 changed files
with
1,141 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
name: Coverage Upload | ||
|
||
on: | ||
workflow_run: | ||
workflows: [testing] | ||
types: | ||
- completed | ||
|
||
jobs: | ||
run_tests: | ||
runs-on: ubuntu-latest | ||
steps: | ||
# https://github.com/actions/github-script | ||
# Based on: https://github.com/orgs/community/discussions/34652 | ||
- name: 'Download artifact' | ||
uses: actions/github-script@v7 | ||
with: | ||
script: | | ||
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
run_id: context.payload.workflow_run.id, | ||
}); | ||
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { | ||
return artifact.name == "coverage-report" | ||
})[0]; | ||
let download = await github.rest.actions.downloadArtifact({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
artifact_id: matchArtifact.id, | ||
archive_format: 'zip', | ||
}); | ||
let fs = require('fs'); | ||
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/coverage-report.zip`, Buffer.from(download.data)); | ||
- name: 'Unzip artifact' | ||
run: unzip coverage-report.zip | ||
# https://github.com/actions/download-artifact | ||
# - name: Download artifact | ||
# id: download-artifact | ||
# uses: actions/download-artifact@v4 | ||
# with: | ||
# run-id: ${{ github.event.workflow_run.id }} | ||
# https://github.com/codacy/codacy-coverage-reporter-action | ||
# - name: Run codacy-coverage-reporter | ||
# uses: codacy/codacy-coverage-reporter-action@v1 | ||
# with: | ||
# project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} | ||
# coverage-reports: coverage.xml | ||
- name: Publish Code Coverage Results | ||
run: | | ||
auth="--project-token ${{ secrets.CODACY_PROJECT_TOKEN }}" | ||
commit_uuid="--commit-uuid ${{ github.event.workflow_run.head_sha }}" | ||
bash <(curl -Ls https://coverage.codacy.com/get.sh) report $auth $commit_uuid --force-coverage-parser go -r coverage.out --partial &&\ | ||
bash <(curl -Ls https://coverage.codacy.com/get.sh) final $auth $commit_uuid |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
name: testing | ||
|
||
on: | ||
push: | ||
branches: | ||
- 'main' | ||
tags: | ||
- 'v*' | ||
pull_request: | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
test: | ||
name: Integration Tests (Cobbler ${{ matrix.cobbler_version }}) | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
cobbler_version: | ||
# - d8f60bbf14a838c8c8a1dba98086b223e35fe70a # 3.3.0 - TypeError during import | ||
- f5b0599acce32de4288c76e4f601aece0c664fed # 3.3.1 | ||
# - 9044aa990a94752fa5bd5a24051adde099280bfa # 3.3.2 - Testing Docker Image broken | ||
# - 5c498dbf2af6e3782b37605a477759e1aacc16b2 # 3.3.3 - Testing Docker Image broken | ||
- 3ed865b79ce69fca7464e0957f4bcadcc9917a9d # 3.3.4 | ||
- 718e3256a5989941e8a678404fdea07364255637 # 3.3.5 | ||
- df356046f3cf27be62a61001b982d5983800cfd9 # 3.3.6 | ||
fail-fast: false | ||
steps: | ||
- name: Check out code into the Go module directory | ||
uses: actions/checkout@v4 | ||
- name: Set up Go | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version-file: 'go.mod' | ||
id: go | ||
- name: Install system dependencies | ||
run: | | ||
sudo apt-get install -y xorriso | ||
- name: Get dependencies | ||
run: | | ||
go mod download | ||
- name: Replace git version hash | ||
run: | | ||
sed -i "s/cobbler_commit=.*/cobbler_commit=${{ matrix.cobbler_version }}/" testing/start.sh | ||
- name: Restore OS ISO | ||
id: cache-iso-restore | ||
uses: actions/cache/restore@v4 | ||
with: | ||
path: | | ||
*.iso | ||
key: ${{ runner.os }}-${{ matrix.cobbler_version }}-iso | ||
- name: Make Test | ||
run: | | ||
make test | ||
- name: Save OS ISO | ||
id: cache-iso-save | ||
uses: actions/cache/save@v4 | ||
with: | ||
path: | | ||
*.iso | ||
key: ${{ steps.cache-iso-restore.outputs.cache-primary-key }} | ||
# https://github.com/actions/upload-artifact | ||
- name: Upload coverage report to GH artifacts | ||
if: matrix.cobbler_version == 'df356046f3cf27be62a61001b982d5983800cfd9' | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: coverage-report | ||
path: coverage.out | ||
if-no-files-found: error |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -29,3 +29,9 @@ docs/_build | |
|
||
# goreleaser | ||
dist/ | ||
|
||
# Tests | ||
testing/cobbler_source/ | ||
extracted_iso_image/ | ||
*.iso | ||
coverage.out |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
package cmd | ||
|
||
import ( | ||
"bytes" | ||
"fmt" | ||
"github.com/cobbler/cobblerclient" | ||
"github.com/spf13/cobra" | ||
"io" | ||
"strings" | ||
"testing" | ||
) | ||
|
||
func Test_AclSetupCmd(t *testing.T) { | ||
type args struct { | ||
command []string | ||
} | ||
tests := []struct { | ||
name string | ||
args args | ||
want string | ||
wantErr bool | ||
}{ | ||
{ | ||
name: "adduser", | ||
args: args{command: []string{"--config", "../testing/.cobbler.yaml", "aclsetup", "--adduser", "cobbler"}}, | ||
want: "Event ID:", | ||
wantErr: false, | ||
}, | ||
{ | ||
name: "addgroup", | ||
args: args{command: []string{"--config", "../testing/.cobbler.yaml", "aclsetup", "--addgroup", "cobbler"}}, | ||
want: "Event ID:", | ||
wantErr: false, | ||
}, | ||
{ | ||
name: "removeuser", | ||
args: args{command: []string{"--config", "../testing/.cobbler.yaml", "aclsetup", "--removeuser", "cobbler"}}, | ||
want: "Event ID:", | ||
wantErr: false, | ||
}, | ||
{ | ||
name: "removegroup", | ||
args: args{command: []string{"--config", "../testing/.cobbler.yaml", "aclsetup", "--removegroup", "cobbler"}}, | ||
want: "Event ID:", | ||
wantErr: false, | ||
}, | ||
} | ||
for _, tt := range tests { | ||
t.Run(tt.name, func(t *testing.T) { | ||
// Arrange | ||
cobra.OnInitialize(initConfig, setupLogger) | ||
rootCmd := NewRootCmd() | ||
rootCmd.SetArgs(tt.args.command) | ||
stdout := bytes.NewBufferString("") | ||
stderr := bytes.NewBufferString("") | ||
rootCmd.SetOut(stdout) | ||
rootCmd.SetErr(stderr) | ||
|
||
// Act | ||
err := rootCmd.Execute() | ||
|
||
// Assert | ||
cobblerclient.FailOnError(t, err) | ||
FailOnStdErr(t, stderr) | ||
stdoutBytes, err := io.ReadAll(stdout) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
stdoutString := string(stdoutBytes) | ||
if !strings.Contains(stdoutString, tt.want) { | ||
fmt.Println(stdoutString) | ||
t.Fatal("No Event ID present") | ||
} | ||
}) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
package cmd |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package cmd | ||
|
||
// TODO: distro report | ||
// TODO: distro report --name=test | ||
// TODO: distro edit | ||
// TODO: distro find | ||
// TODO: distro copy | ||
// TODO: distro rename | ||
// TODO: distro add | ||
// TODO: distro remove |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
package cmd | ||
|
||
import ( | ||
"bytes" | ||
"fmt" | ||
"github.com/cobbler/cobblerclient" | ||
"github.com/spf13/cobra" | ||
"io" | ||
"strings" | ||
"testing" | ||
) | ||
|
||
func Test_EventStatusCmd(t *testing.T) { | ||
// Arrange | ||
cobra.OnInitialize(initConfig, setupLogger) | ||
rootCmd := NewRootCmd() | ||
rootCmd.SetArgs([]string{"--config", "../testing/.cobbler.yaml", "event", "status", "--event-id", "garbage"}) | ||
stdout := bytes.NewBufferString("") | ||
stderr := bytes.NewBufferString("") | ||
rootCmd.SetOut(stdout) | ||
rootCmd.SetErr(stderr) | ||
|
||
// Act | ||
err := rootCmd.Execute() | ||
|
||
// Assert | ||
if err == nil { | ||
t.Fatal("expected error, got none") | ||
} | ||
if !strings.Contains(err.Error(), "no event with that id") { | ||
t.Fatal("server didn't complain about garbage event id") | ||
} | ||
} | ||
|
||
func Test_EventListCmd(t *testing.T) { | ||
// Arrange | ||
cobra.OnInitialize(initConfig, setupLogger) | ||
rootCmd := NewRootCmd() | ||
rootCmd.SetArgs([]string{"--config", "../testing/.cobbler.yaml", "event", "list"}) | ||
stdout := bytes.NewBufferString("") | ||
stderr := bytes.NewBufferString("") | ||
rootCmd.SetOut(stdout) | ||
rootCmd.SetErr(stderr) | ||
|
||
// Act | ||
err := rootCmd.Execute() | ||
|
||
// Assert | ||
cobblerclient.FailOnError(t, err) | ||
FailOnStdErr(t, stderr) | ||
stdoutBytes, err := io.ReadAll(stdout) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
stdoutString := string(stdoutBytes) | ||
if !strings.Contains(stdoutString, "Time (last transitioned)") { | ||
fmt.Println(stdoutString) | ||
t.Fatal("no table header with time present") | ||
} | ||
} | ||
|
||
func Test_EventLogCmd(t *testing.T) { | ||
// Arrange | ||
cobra.OnInitialize(initConfig, setupLogger) | ||
rootCmd := NewRootCmd() | ||
rootCmd.SetArgs([]string{"--config", "../testing/.cobbler.yaml", "event", "log", "--event-id", "garbage"}) | ||
stdout := bytes.NewBufferString("") | ||
stderr := bytes.NewBufferString("") | ||
rootCmd.SetOut(stdout) | ||
rootCmd.SetErr(stderr) | ||
|
||
// Act | ||
err := rootCmd.Execute() | ||
|
||
// Assert | ||
cobblerclient.FailOnError(t, err) | ||
FailOnStdErr(t, stderr) | ||
stdoutBytes, err := io.ReadAll(stdout) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
stdoutString := string(stdoutBytes) | ||
if !strings.Contains(stdoutString, "?") { | ||
fmt.Println(stdoutString) | ||
t.Fatal("server didn't complain about garbage event id") | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package cmd | ||
|
||
// TODO: file report | ||
// TODO: file report --name=test | ||
// TODO: file edit | ||
// TODO: file find | ||
// TODO: file copy | ||
// TODO: file rename | ||
// TODO: file add | ||
// TODO: file remove |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package cmd | ||
|
||
import ( | ||
"bytes" | ||
"fmt" | ||
"github.com/cobbler/cobblerclient" | ||
"github.com/spf13/cobra" | ||
"io" | ||
"strings" | ||
"testing" | ||
) | ||
|
||
func Test_HardlinkCmd(t *testing.T) { | ||
// Arrange | ||
cobra.OnInitialize(initConfig, setupLogger) | ||
rootCmd := NewRootCmd() | ||
rootCmd.SetArgs([]string{"--config", "../testing/.cobbler.yaml", "hardlink"}) | ||
stdout := bytes.NewBufferString("") | ||
stderr := bytes.NewBufferString("") | ||
rootCmd.SetOut(stdout) | ||
rootCmd.SetErr(stderr) | ||
|
||
// Act | ||
err := rootCmd.Execute() | ||
|
||
// Assert | ||
cobblerclient.FailOnError(t, err) | ||
FailOnStdErr(t, stderr) | ||
stdoutBytes, err := io.ReadAll(stdout) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
stdoutString := string(stdoutBytes) | ||
if !strings.Contains(stdoutString, "Event ID:") { | ||
fmt.Println(stdoutString) | ||
t.Fatal("No Event ID present") | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package cmd | ||
|
||
// TODO: image report | ||
// TODO: image report --name=test | ||
// TODO: image edit | ||
// TODO: image find | ||
// TODO: image copy | ||
// TODO: image rename | ||
// TODO: image add | ||
// TODO: image remove |
Oops, something went wrong.