public async Task TestEnvironmentVariablesAreRead()
        {
            var reporter  = new TestReporter();
            var overrides = new Overrides
            {
                Replacements = new List <ReplacementDefinition>
                {
                    new ReplacementDefinition {
                        Token = "herpa", EnvironmentVariable = "HERPA"
                    },
                    new ReplacementDefinition {
                        Token = "thomas", EnvironmentVariable = "THOMAS"
                    }
                }
            };

            Environment.SetEnvironmentVariable("HERPA", "derpa");
            Environment.SetEnvironmentVariable("THOMAS", "fromtidmouth");

            var sut = new ReplacementTokensFromEnvironmentVariablesTransformer(reporter);
            await sut.TransformAsync(overrides);

            var expectedReplacements = new List <ReplacementDefinition>
            {
                new ReplacementDefinition {
                    Token = "herpa", EnvironmentVariable = "HERPA", Value = "derpa"
                },
                new ReplacementDefinition {
                    Token = "thomas", EnvironmentVariable = "THOMAS", Value = "fromtidmouth"
                }
            };

            overrides.Replacements.ShouldDeepEqual(expectedReplacements);
        }
        public async Task TestEmptyOverridesShouldRemainEmpty()
        {
            var reporter       = new TestReporter();
            var emptyOverrides = new Overrides {
                Replacements = new List <ReplacementDefinition>()
            };

            var sut = new ReplacementTokensFromEnvironmentVariablesTransformer(reporter);
            await sut.TransformAsync(emptyOverrides);

            emptyOverrides.Replacements.ShouldBeEmpty();
        }
        public async Task TestOverridesWithOnlyVerbatimReplacementsShouldRemainUnchanged()
        {
            var reporter        = new TestReporter();
            var tokenValuePairs = new Dictionary <string, string> {
                { "herpa", "derpa" }, { "thomas", "fromtidmouth" }
            };
            var overrides      = CreateFrom(tokenValuePairs);
            var overridesClone = CreateFrom(tokenValuePairs);

            var sut = new ReplacementTokensFromEnvironmentVariablesTransformer(reporter);
            await sut.TransformAsync(overrides);

            overrides.ShouldDeepEqual(overridesClone);
        }
        public async Task TestUnsetEnvVarEmitsWarningMessage()
        {
            var reporter  = new TestReporter();
            var overrides = new Overrides
            {
                Replacements = new List <ReplacementDefinition>
                {
                    new ReplacementDefinition {
                        Token = "herpa", EnvironmentVariable = "HERPA"
                    },
                }
            };

            var sut = new ReplacementTokensFromEnvironmentVariablesTransformer(reporter);
            await sut.TransformAsync(overrides);

            reporter.WarnMessages.ShouldNotBeEmpty();
        }