pulumi/tests/integration/config_capture_e2e/nodejs/index.ts

46 lines
1.5 KiB
TypeScript

// Copyright 2016-2018, Pulumi Corporation. All rights reserved.
import * as assert from "assert";
import * as crypto from "crypto";
import * as os from "os";
import * as fs from "fs";
import * as path from "path";
import * as pulumi from "@pulumi/pulumi";
function tempDirName(prefix: string) {
const b = crypto.randomBytes(4);
return prefix + "-" + b.toString("hex");
}
(async function() {
// Just test that basic config works.
const config = new pulumi.Config();
const outsideCapture = await pulumi.runtime.serializeFunction(() => {
assert("it works" == config.require("value"));
console.log("outside capture works")
});
const insideCapture = await pulumi.runtime.serializeFunction(() => {
const config = new pulumi.Config();
assert("it works" == config.require("value"));
console.log("inside capture works")
});
const outsideDir = path.join(os.tmpdir(), tempDirName("outside"));
const insideDir = path.join(os.tmpdir(), tempDirName("inside"));
fs.mkdirSync(outsideDir);
fs.mkdirSync(insideDir);
const nodeModulesPath = path.join(process.cwd(), "node_modules");
fs.symlinkSync(nodeModulesPath, outsideDir + "/node_modules");
fs.symlinkSync(nodeModulesPath, insideDir + "/node_modules");
fs.writeFileSync(path.join(outsideDir, "index.js"), outsideCapture.text);
fs.writeFileSync(path.join(insideDir, "index.js"), insideCapture.text);
require(outsideDir).handler();
require(insideDir).handler();
})()