def test_substitute_env_var_in_config_variable_file(monkeypatch): monkeypatch.setenv("FOO", "val_of_arg_0") config_variables_dict = { "arg0": "${FOO}", "arg2": { "v1": 2 }, "replace_me": "wrong" } assert (substitute_config_variable( "abc${arg0}", config_variables_dict) == "abcval_of_arg_0") monkeypatch.delenv("FOO") with pytest.raises(MissingConfigVariableError): substitute_config_variable("abc${arg0}", config_variables_dict) with open( file_relative_path( __file__, "../test_fixtures/great_expectations_basic_with_variables.yml", )) as f: config = yaml.load(f) monkeypatch.setenv("replace_me", "correct") # this is how dict is created in data_context.get_config_with_variables_substituted, for env var override config_variables_dict = { **config_variables_dict, **dict(os.environ), } config = substitute_all_config_variables(config, config_variables_dict) assert ( config["datasources"]["mydatasource"]["batch_kwargs_generators"] ["mygenerator"]["reader_options"]["test_variable_sub1"] == "correct")
def test_substitute_config_variable(): config_variables_dict = {"arg0": "val_of_arg_0", "arg2": {"v1": 2}} assert ( substitute_config_variable("abc${arg0}", config_variables_dict) == "abcval_of_arg_0" ) assert ( substitute_config_variable("abc$arg0", config_variables_dict) == "abcval_of_arg_0" ) assert ( substitute_config_variable("${arg0}", config_variables_dict) == "val_of_arg_0" ) assert substitute_config_variable("hhhhhhh", config_variables_dict) == "hhhhhhh" with pytest.raises(MissingConfigVariableError) as exc: substitute_config_variable( "abc${arg1} def${foo}", config_variables_dict ) # does NOT equal "abc${arg1}" assert ( """Unable to find a match for config substitution variable: `arg1`. Please add this missing variable to your `uncommitted/config_variables.yml` file or your environment variables. See https://great-expectations.readthedocs.io/en/latest/reference/data_context_reference.html#managing-environment-and-secrets""" in exc.value.message ) assert ( substitute_config_variable("${arg2}", config_variables_dict) == config_variables_dict["arg2"] ) assert exc.value.missing_config_variable == "arg1"
def test_substitute_config_variable(): config_variables_dict = { "arg0": "val_of_arg_0", "arg2": { "v1": 2 } } assert substitute_config_variable("abc${arg0}", config_variables_dict) == "abcval_of_arg_0" assert substitute_config_variable("abc$arg0", config_variables_dict) == "abcval_of_arg_0" assert substitute_config_variable("${arg0}", config_variables_dict) == "val_of_arg_0" assert substitute_config_variable("hhhhhhh", config_variables_dict) == "hhhhhhh" with pytest.raises(InvalidConfigError) as exc: substitute_config_variable("abc${arg1}", config_variables_dict) # does NOT equal "abc${arg1}" assert exc.value.message.startswith("Unable to find match for config variable arg1") assert substitute_config_variable("${arg2}", config_variables_dict) == config_variables_dict["arg2"]
def test_substitute_config_variable(): config_variables_dict = { "arg0": "val_of_arg_0", "arg2": { "v1": 2 } } assert substitute_config_variable("abc${arg0}", config_variables_dict) == "abcval_of_arg_0" assert substitute_config_variable("abc$arg0", config_variables_dict) == "abcval_of_arg_0" assert substitute_config_variable("${arg0}", config_variables_dict) == "val_of_arg_0" assert substitute_config_variable("hhhhhhh", config_variables_dict) == "hhhhhhh" assert substitute_config_variable("abc${arg1}", config_variables_dict) == "abc${arg1}" assert substitute_config_variable("${arg2}", config_variables_dict) == config_variables_dict["arg2"]
def test_substitute_config_variable(): config_variables_dict = { "arg0": "val_of_arg_0", "arg2": { "v1": 2 }, "aRg3": "val_of_aRg_3", "ARG4": "val_of_ARG_4", } assert (substitute_config_variable( "abc${arg0}", config_variables_dict) == "abcval_of_arg_0") assert (substitute_config_variable( "abc$arg0", config_variables_dict) == "abcval_of_arg_0") assert (substitute_config_variable( "${arg0}", config_variables_dict) == "val_of_arg_0") assert substitute_config_variable("hhhhhhh", config_variables_dict) == "hhhhhhh" with pytest.raises(MissingConfigVariableError) as exc: substitute_config_variable( "abc${arg1} def${foo}", config_variables_dict) # does NOT equal "abc${arg1}" assert ("""Unable to find a match for config substitution variable: `arg1`. Please add this missing variable to your `uncommitted/config_variables.yml` file or your environment variables. See https://great-expectations.readthedocs.io/en/latest/reference/data_context_reference.html#managing-environment-and-secrets""" in exc.value.message) assert (substitute_config_variable( "${arg2}", config_variables_dict) == config_variables_dict["arg2"]) assert exc.value.missing_config_variable == "arg1" # Null cases assert substitute_config_variable("", config_variables_dict) == "" assert substitute_config_variable(None, config_variables_dict) == None # Test with mixed case assert (substitute_config_variable( "prefix_${aRg3}_suffix", config_variables_dict) == "prefix_val_of_aRg_3_suffix") assert (substitute_config_variable( "${aRg3}", config_variables_dict) == "val_of_aRg_3") # Test with upper case assert (substitute_config_variable( "prefix_$ARG4/suffix", config_variables_dict) == "prefix_val_of_ARG_4/suffix") assert substitute_config_variable("$ARG4", config_variables_dict) == "val_of_ARG_4" # Test with multiple substitutions assert (substitute_config_variable( "prefix${arg0}$aRg3", config_variables_dict) == "prefixval_of_arg_0val_of_aRg_3") # Escaped `$` (don't substitute, but return un-escaped string) assert (substitute_config_variable( r"abc\${arg0}\$aRg3", config_variables_dict) == "abc${arg0}$aRg3") # Multiple configurations together assert ( substitute_config_variable( r"prefix$ARG4.$arg0/$aRg3:${ARG4}/\$dontsub${arg0}:${aRg3}.suffix", config_variables_dict, ) == "prefixval_of_ARG_4.val_of_arg_0/val_of_aRg_3:val_of_ARG_4/$dontsubval_of_arg_0:val_of_aRg_3.suffix" )