|
54 | 54 |
|
55 | 55 | makeTests = goPackage: let |
56 | 56 | buildGoModule = pkgs.buildGoModule.override {go = goPackage;}; |
57 | | - in |
58 | | - buildGoModule { |
59 | | - name = "go-jsonschema-tests"; |
| 57 | + |
| 58 | + # Tests for main module |
| 59 | + mainTests = buildGoModule { |
| 60 | + name = "go-jsonschema-tests-main"; |
60 | 61 | src = cleanSrc; |
61 | 62 | vendorHash = "sha256-CBxxloy9W9uJq4l2zUrp6VJlu5lNCX55ks8OOWkHDF4="; |
62 | 63 | buildPhase = '' |
63 | 64 | export HOME=$TMPDIR |
64 | | -
|
65 | 65 | mkdir -p coverage/pkg |
66 | | - mkdir -p coverage/tests |
67 | | -
|
68 | 66 | echo "Running tests in root module with coverage..." |
69 | 67 | go test -v -race -covermode=atomic -coverpkg=./... -cover ./... -args -test.gocoverdir="$PWD/coverage/pkg" |
| 68 | + ''; |
| 69 | + installPhase = '' |
| 70 | + mkdir -p $out |
| 71 | + cp -r coverage/pkg $out/ || true |
| 72 | + echo "Main module tests passed" > $out/result |
| 73 | + ''; |
| 74 | + }; |
70 | 75 |
|
71 | | - echo "Running tests in tests module with coverage..." |
72 | | - go test -v -race -covermode=atomic -coverpkg=./... -cover ./tests -args -test.gocoverdir="$PWD/coverage/tests" |
73 | | -
|
74 | | - echo "Generating coverage report..." |
75 | | - go tool covdata textfmt -i=./coverage/tests,./coverage/pkg -o coverage.out |
| 76 | + # Tests for tests module (integration tests) |
| 77 | + integrationTests = buildGoModule { |
| 78 | + name = "go-jsonschema-tests-integration"; |
| 79 | + src = cleanSrc; |
| 80 | + vendorHash = "sha256-VCSDBMTWCz2KTPEOotBtNTBDDqhDSEE+zDvxX7X9a0s="; |
| 81 | + modRoot = "tests"; |
| 82 | + buildPhase = '' |
| 83 | + export HOME=$TMPDIR |
| 84 | + mkdir -p coverage/tests |
| 85 | + echo "Running integration tests with coverage..." |
| 86 | + go test -v -race -covermode=atomic -coverpkg=./... -cover ./... -args -test.gocoverdir="$PWD/coverage/tests" |
76 | 87 | ''; |
77 | 88 | installPhase = '' |
78 | 89 | mkdir -p $out |
79 | | - cp coverage.out $out/ || true |
80 | | - echo "All tests passed successfully with coverage" > $out/test-results |
| 90 | + cp -r coverage/tests $out/ || true |
| 91 | + echo "Integration tests passed" > $out/result |
81 | 92 | ''; |
82 | 93 | }; |
| 94 | + in |
| 95 | + pkgs.runCommand "go-jsonschema-tests" { |
| 96 | + buildInputs = [mainTests integrationTests]; |
| 97 | + } '' |
| 98 | + mkdir -p $out |
| 99 | + echo "All tests passed successfully" > $out/test-results |
| 100 | + ''; |
83 | 101 | in { |
84 | 102 | packages = { |
85 | 103 | go-jsonschema-go124 = makePackage pkgs.go_1_24; |
|
0 commit comments