forked from canonical/iot-agent
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yml
More file actions
111 lines (110 loc) · 4.05 KB
/
Taskfile.yml
File metadata and controls
111 lines (110 loc) · 4.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
version: '3'
tasks:
initialize:
cmds:
- task: install-mockery
- task: install-schema-generate
- task: prebuild
prebuild:
cmds:
- task: generate-message-structs
- task: update-mocks
build:
cmds:
- task: prebuild
- task: create-stub-password-embed
- go build -o agent bin/agent/main.go
- task: remove-stub-password-embed
generate-message-structs:
desc: Generate agent and dms structs from schemas
cmds:
- task: generate-agent-message-structs
- task: generate-dms-message-structs
generate-agent-message-structs:
desc: This will generate the Go structs from the schema definitions
cmds:
- mkdir -p pkg/messages pkg/masking
# if this one is regenerated it will break the InstalledDate and InstalledSize fields
#- schema-generate -o pkg/messages/messages.go -p messages ./schemas/schemas.json
- schema-generate -o pkg/masking/masking.go -p masking ./schemas/masking_schemas.json
generate-dms-message-structs:
desc: This will generate the Go structs from the schema definitions
cmds:
- mkdir -p pkg/messages
- schema-generate -o pkg/messages/dms_messages.go -p messages ./dms-schemas/schemas.json
- schema-generate -o pkg/messages/dms_rest.go -p messages ./dms-schemas/rest_schemas.json
install-mockery:
desc: Installs the mockery mock generating tool
cmds:
- go install github.com/vektra/mockery/v2@v2.22.0
install-schema-generate:
desc: Install Everactive's version of schema-generate
cmds:
- go install github.com/everactive/generate/...@v1.0.1
update-mocks:
desc: Updates / generates the mocks necessary for testing
cmds:
- task: create-stub-password-embed
- mockery --dir pkg/legacy --all --inpackage
- mockery --dir pkg/server --all --inpackage
- mockery --dir identity --all --inpackage
- mockery --dir snapdapi --all --inpackage
- mockery --dir pkg/nats --all --inpackage
- sed -i 's/nats "github.com\/nats-io\/"/nats "github.com\/nats-io\/nats.go"/' pkg/nats/mock_NatsConnInterface.go
- mockery --dir pkg/changelogger --all --inpackage
- task: remove-stub-password-embed
test:
desc: Run tests for the iot agent
cmds:
- rm -rf current
- mkdir -p current
- task: create-stub-password-embed
- |
export OVERRIDE_SNAP_COMMON=${PWD}
export OVERRIDE_SNAP_DATA=${PWD}
go test ./...
- task: remove-stub-password-embed
test-race:
desc: Run race detection tests
cmds:
- rm -rf current
- mkdir -p current
- task: create-stub-password-embed
- |
export OVERRIDE_SNAP_COMMON=${PWD}
export OVERRIDE_SNAP_DATA=${PWD}
go test -count=1 -p 1 ./... -race
- task: remove-stub-password-embed
coverage:
desc: Generate a test coverage report
cmds:
- rm -rf current
- mkdir -p current
- task: create-stub-password-embed
- |
export OVERRIDE_SNAP_COMMON=${PWD}
export OVERRIDE_SNAP_DATA=${PWD}
go test -coverprofile coverage_report $(go list ./... | grep -v vendor)
- |
while read p; do
grep -v "${p}" ./coverage_report > ./coverage_report_tmp
mv ./coverage_report_tmp ./coverage_report
done <./exclude-from-code-coverage.txt
go tool cover -func=coverage_report
- task: remove-stub-password-embed
lint:
desc: Run the golangci-lint on the repo
cmds:
- golangci-lint run
create-stub-password-embed:
- echo "some-password-doesnt-really-matter" > pkg/nats/password.txt
remove-stub-password-embed:
- rm pkg/nats/password.txt || true
build-agent:
- task: create-stub-password-embed
- go build -o agent bin/agent/main.go
- task: remove-stub-password-embed
precommit:
- task: test
- task: test-race
- task: build-agent