|
1 | 1 | final: prev:
|
2 | 2 | with final.lib;
|
3 | 3 | with final.haskell.lib;
|
4 |
| -let |
| 4 | +{ |
5 | 5 | generateOpenAPIClient = import ./generate-client.nix { pkgs = final; };
|
6 |
| - generateCode = { fileName, extraFlags ? [ ] }: |
7 |
| - let |
8 |
| - name = builtins.replaceStrings [ "_" ] [ "-" ] (strings.removeSuffix ".yaml" (strings.removeSuffix ".json" (strings.removeSuffix ".yml" fileName))); |
9 |
| - in |
10 |
| - { |
11 |
| - name = name; |
12 |
| - path = (generateOpenAPIClient { |
13 |
| - name = "openapi"; |
14 |
| - src = ../specifications + "/${fileName}"; |
15 |
| - extraFlags = extraFlags; |
16 |
| - }).code; |
17 |
| - }; |
18 |
| - goldenTestCode = generateCode { fileName = "z_complex_self_made_example.yml"; }; |
19 |
| - codeForSpecsLevelOne = [ |
20 |
| - (generateCode { fileName = "google-payment.json"; }) |
21 |
| - (generateCode { fileName = "hetzner.json"; }) |
22 |
| - (generateCode { fileName = "official-api-with-examples.yaml"; }) |
23 |
| - (generateCode { fileName = "official-callback-example.yaml"; }) |
24 |
| - (generateCode { fileName = "official-link-example.yaml"; }) |
25 |
| - (generateCode { fileName = "official-petstore-expanded.yaml"; }) |
26 |
| - (generateCode { fileName = "official-uspto.yaml"; }) |
27 |
| - (generateCode { fileName = "petstore-expanded.json"; }) |
28 |
| - (generateCode { fileName = "selenium.yaml"; extraFlags = [ "--response-type-suffix=\"Response'\"" ]; }) |
29 |
| - (generateCode { fileName = "spot_api.yml"; extraFlags = [ "--opaque-schema=\"aggTrade\"" ]; }) |
30 |
| - (generateCode { fileName = "uber.json"; }) |
31 |
| - (generateCode { fileName = "z_complex_self_made_example.yml"; }) |
32 |
| - ]; |
33 |
| - codeForSpecsLevelTwo = [ |
34 |
| - (generateCode { fileName = "official-petstore.yaml"; }) |
35 |
| - (generateCode { fileName = "petstore-running-example.yaml"; }) |
36 |
| - (generateCode { fileName = "stripe-api.yml"; extraFlags = [ "--property-type-suffix=\"'\"" "--convert-to-camel-case" ]; }) |
37 |
| - ]; |
38 |
| - codeForSpecsLevelThree = [ |
39 |
| - (generateCode { fileName = "petstore-running-example.yaml"; }) |
40 |
| - ]; |
| 6 | + openapi3-code-generator = justStaticExecutables final.haskellPackages.openapi3-code-generator; |
41 | 7 | haskellPackages =
|
42 | 8 | prev.haskellPackages.override (
|
43 | 9 | old:
|
|
59 | 25 | );
|
60 | 26 | }
|
61 | 27 | );
|
62 |
| -in |
63 |
| -{ |
64 |
| - generateOpenAPIClient = import ./generate-client.nix { pkgs = final; }; |
65 |
| - openapi3-code-generator = justStaticExecutables final.haskellPackages.openapi3-code-generator; |
66 |
| - haskellPackages = haskellPackages; |
67 |
| - mockServer = disableOptimization (disableLibraryProfiling (haskellPackages.callCabal2nix "level-3-mock-server" (../testing/level3/mock-server) { })); |
68 |
| - testSystem1 = final.symlinkJoin { |
69 |
| - name = "test-system-1"; |
70 |
| - paths = (builtins.map |
71 |
| - (pkg: |
72 |
| - disableOptimization (disableLibraryProfiling (haskellPackages.callCabal2nix "${pkg.name}-compiled" pkg.path { })) |
73 |
| - ) |
74 |
| - codeForSpecsLevelOne); |
75 |
| - }; |
76 |
| - testSystem2 = final.symlinkJoin { |
77 |
| - name = "test-system-2"; |
78 |
| - paths = (builtins.map |
79 |
| - (pkg: |
80 |
| - let |
81 |
| - openapi = disableOptimization (disableLibraryProfiling (haskellPackages.callCabal2nix "${pkg.name}-compiled" pkg.path { })); |
82 |
| - base = disableOptimization (disableLibraryProfiling (haskellPackages.callCabal2nix "level2-base" ../testing/level2/level2-base { openapi = openapi; })); |
83 |
| - in |
84 |
| - disableOptimization (disableLibraryProfiling (haskellPackages.callCabal2nix "${pkg.name}-tests" (../testing/level2 + "/${pkg.name}") { level2-base = base; openapi = openapi; })) |
85 |
| - ) |
86 |
| - codeForSpecsLevelTwo); |
87 |
| - }; |
88 |
| - testSystem3 = final.symlinkJoin { |
89 |
| - name = "test-system-3"; |
90 |
| - paths = (builtins.map |
91 |
| - (pkg: |
92 |
| - let |
93 |
| - openapi = disableOptimization (disableLibraryProfiling (haskellPackages.callCabal2nix "${pkg.name}-compiled" pkg.path { })); |
94 |
| - in |
95 |
| - overrideCabal (disableOptimization (disableLibraryProfiling (haskellPackages.callCabal2nix "${pkg.name}-tests" (../testing/level3 + "/${pkg.name}") { openapi = openapi; }))) (old: { |
96 |
| - preCheck = (old.preCheck or "") + '' |
97 |
| - ${final.killall}/bin/killall -r mock-server-exe || true |
98 |
| - ${final.mockServer}/bin/mock-server-exe & |
99 |
| - ''; |
100 |
| - postCheck = (old.postCheck or "") + '' |
101 |
| - ${final.killall}/bin/killall -r mock-server-exe |
102 |
| - ''; |
103 |
| - }) |
104 |
| - ) |
105 |
| - codeForSpecsLevelThree); |
106 |
| - }; |
107 |
| - testGolden = final.stdenv.mkDerivation { |
108 |
| - name = "test-golden"; |
109 |
| - src = ../testing/golden-output; |
110 |
| - |
111 |
| - buildCommand = '' |
112 |
| - diff -r ${goldenTestCode.path} $src |
113 |
| - mkdir -p $out |
114 |
| - echo "Golden test success" > $out/success |
115 |
| - ''; |
116 |
| - }; |
117 |
| - testGoldenGenerate = final.stdenv.mkDerivation { |
118 |
| - name = "test-golden-generate"; |
119 |
| - buildCommand = '' |
120 |
| - cp -R ${goldenTestCode.path} $out |
121 |
| - ''; |
122 |
| - }; |
123 | 28 | }
|
0 commit comments