- /+ dub.json: {
- "name": "environment_variables"
- } +/
- module environment_variables;
- import std;
-
- void main()
- {
- auto currDir = environment.get("CURR_DIR", __FILE_FULL_PATH__.dirName());
- // preGenerateCommands uses system.environments < settings.environments < deppkg.environments < root.environments < deppkg.preGenerateEnvironments < root.preGenerateEnvironments
- // preBuildCommands uses system.environments < settings.environments < deppkg.environments < root.environments < deppkg.buildEnvironments < root.buildEnvironments < deppkg.preBuildEnvironments < root.preBuildEnvironments
- // Build tools uses system.environments < settings.environments < deppkg.environments < root.environments < deppkg.buildEnvironments < root.buildEnvironments
- // postBuildCommands uses system.environments < settings.environments < deppkg.environments < root.environments < deppkg.buildEnvironments < root.buildEnvironments < deppkg.postBuildEnvironments < root.postBuildEnvironments
- // postGenerateCommands uses system.environments < settings.environments < deppkg.environments < root.environments < deppkg.postGenerateEnvironments < root.postGenerateEnvironments
- // preRunCommands uses system.environments < settings.environments < deppkg.environments < root.environments < deppkg.runEnvironments < root.runEnvironments < deppkg.preRunEnvironments < root.preRunEnvironments
- // User application uses system.environments < settings.environments < deppkg.environments < root.environments < deppkg.runEnvironments < root.runEnvironments
- // postRunCommands uses system.environments < settings.environments < deppkg.environments < root.environments < deppkg.runEnvironments < root.runEnvironments < deppkg.postRunEnvironments < root.postRunEnvironments
-
- // Test cases covers:
- // preGenerateCommands [in root]
- // priority check: system.environments < settings.environments
- // priority check: settings.environments < deppkg.environments
- // priority check: deppkg.environments < root.environments
- // priority check: root.environments < deppkg.preGenerateEnvironments
- // priority check: deppkg.preGenerateEnvironments < root.preGenerateEnvironments
- // postGenerateCommands [in root]
- // expantion check: deppkg.VAR4
- // preBuildCommands [in deppkg]
- // root.environments < deppkg.buildEnvironments
- // deppkg.buildEnvironments < root.buildEnvironments
- // root.buildEnvironments < deppkg.postBuildEnvironments
- // deppkg.preBuildEnvironments < root.preBuildEnvironments
- // postBuildCommands [in deppkg]
- // expantion check: deppkg.VAR4
- // preRunCommands [in deppkg][in root]
- // expantion check: deppkg.VAR4
- // Application run
- // expantion check: root.VAR1
- // expantion check: settings.VAR2
- // expantion check: root.VAR3
- // expantion check: deppkg.VAR4
- // expantion check: system.VAR5
- // expantion check: system.SYSENVVAREXPCHECK
- // postRunCommands [in deppkg][in root]
- // expantion check: deppkg.VAR4
- auto res = execute([environment.get("DUB", "dub"), "run", "-f"], [
- "PRIORITYCHECK_SYS_SET": "system.PRIORITYCHECK_SYS_SET",
- "SYSENVVAREXPCHECK": "system.SYSENVVAREXPCHECK",
- "VAR5": "system.VAR5"
- ], Config.none, size_t.max, currDir.buildPath("environment-variables"));
- scope (failure)
- writeln("environment-variables test failed... Testing stdout is:\n-----\n", res.output);
-
- // preGenerateCommands [in root]
- assert(res.output.canFind("root.preGenerate: setting.PRIORITYCHECK_SYS_SET"), "preGenerate environment variables priority check is failed.");
- assert(res.output.canFind("root.preGenerate: deppkg.PRIORITYCHECK_SET_DEP"), "preGenerate environment variables priority check is failed.");
- assert(res.output.canFind("root.preGenerate: deppkg.PRIORITYCHECK_DEP_ROOT"), "preGenerate environment variables priority check is failed.");
- assert(res.output.canFind("root.preGenerate: deppkg.PRIORITYCHECK_ROOT_DEPSPEC"), "preGenerate environment variables priority check is failed.");
- assert(res.output.canFind("root.preGenerate: root.PRIORITYCHECK_DEPSPEC_ROOTSPEC"), "preGenerate environment variables priority check is failed.");
-
- // postGenerateCommands [in root]
- assert(res.output.canFind("root.postGenerate: deppkg.VAR4", "postGenerate environment variables expantion check is failed."));
-
- // preBuildCommands [in deppkg]
- assert(res.output.canFind("deppkg.preBuild: deppkg.PRIORITYCHECK_ROOT_DEPBLDSPEC"), "preBuild environment variables priority check is failed.");
- assert(res.output.canFind("deppkg.preBuild: root.PRIORITYCHECK_DEPBLDSPEC_ROOTBLDSPEC"), "preBuild environment variables priority check is failed.");
- assert(res.output.canFind("deppkg.preBuild: deppkg.PRIORITYCHECK_ROOTBLDSPEC_DEPSPEC"), "preBuild environment variables priority check is failed.");
- assert(res.output.canFind("deppkg.preBuild: root.PRIORITYCHECK_DEPSPEC_ROOTSPEC"), "preBuild environment variables priority check is failed.");
-
- // postBuildCommands [in deppkg]
- assert(res.output.canFind("deppkg.postBuild: deppkg.VAR4"), "postBuild environment variables expantion check is failed.");
-
- // preRunCommands [in deppkg][in root]
- assert(!res.output.canFind("deppkg.preRun: deppkg.VAR4"), "preRun that is defined dependent library does not call.");
- assert(res.output.canFind("root.preRun: deppkg.VAR4"), "preRun environment variables expantion check is failed.");
-
- // Application run
- assert(res.output.canFind("app.run: root.VAR1"), "run environment variables expantion check is failed.");
- assert(res.output.canFind("app.run: settings.VAR2"), "run environment variables expantion check is failed.");
- assert(res.output.canFind("app.run: root.VAR3"), "run environment variables expantion check is failed.");
- assert(res.output.canFind("app.run: deppkg.VAR4"), "run environment variables expantion check is failed.");
- assert(res.output.canFind("app.run: system.VAR5"), "run environment variables expantion check is failed.");
- assert(res.output.canFind("app.run: system.SYSENVVAREXPCHECK"), "run environment variables expantion check is failed.");
-
- // postRunCommands [in deppkg][in root]
- assert(!res.output.canFind("deppkg.postRun: deppkg.VAR4"), "postRunCommands that is defined dependent library does not call.");
- assert(res.output.canFind("root.postRun: deppkg.VAR4"), "postRun environment variables expantion check is failed.");
- }