diff --git a/pkgs/by-name/pu/pulumi/extra/test-resource-schema.nix b/pkgs/by-name/pu/pulumi/extra/test-resource-schema.nix new file mode 100644 index 000000000000..99ca01b0b7bf --- /dev/null +++ b/pkgs/by-name/pu/pulumi/extra/test-resource-schema.nix @@ -0,0 +1,35 @@ +{ + lib, + runCommand, + pulumi, + jq, +}: +{ + package, + name ? lib.removePrefix "pulumi-" (lib.getName package), + version ? lib.getVersion package, +}: +runCommand "pulumi-resource-${name}-schema-version-check" + { + resourceName = name; + expectedVersion = if version != null then version else "null"; + nativeBuildInputs = [ + jq + pulumi + package + ]; + env = { + PULUMI_SKIP_UPDATE_CHECK = "1"; + PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION = "1"; + }; + __darwinAllowLocalNetworking = true; + meta.timeout = 120; + } + '' + actualVersion=$(pulumi package get-schema -- "$resourceName" | jq -j .version) + if [[ $expectedVersion != "$actualVersion" ]]; then + echo "Expected schema version $expectedVersion, but got $actualVersion" >&2 + false + fi + mkdir -p "$out" + '' diff --git a/pkgs/by-name/pu/pulumi/plugins.nix b/pkgs/by-name/pu/pulumi/plugins.nix index a90ca04eab88..026ee5260b2d 100644 --- a/pkgs/by-name/pu/pulumi/plugins.nix +++ b/pkgs/by-name/pu/pulumi/plugins.nix @@ -9,6 +9,7 @@ makeScopeWithSplicing' { otherSplices = generateSplicesForMkScope attributePathToSplice; extra = self: { mkPulumiPackage = self.callPackage ./extra/mk-pulumi-package.nix { }; + testResourceSchema = self.callPackage ./extra/test-resource-schema.nix { }; }; f = self: