diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-04-13 09:19:07 -0700 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-04-13 12:41:37 -0700 |
| commit | dfc548dddafbf4e58a568329ebbe29f1eb36a0e8 (patch) | |
| tree | 2a5556c9569230186275df690e96c1f5318f5128 /src/compiletest/header.rs | |
| parent | d2482fd7631d05b1888e3beac0df3f25d33867b8 (diff) | |
| download | rust-dfc548dddafbf4e58a568329ebbe29f1eb36a0e8.tar.gz rust-dfc548dddafbf4e58a568329ebbe29f1eb36a0e8.zip | |
add option exec-env to set env variables during test execution
Diffstat (limited to 'src/compiletest/header.rs')
| -rw-r--r-- | src/compiletest/header.rs | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/compiletest/header.rs b/src/compiletest/header.rs index 75f4eb98050..0db9672f50d 100644 --- a/src/compiletest/header.rs +++ b/src/compiletest/header.rs @@ -17,13 +17,16 @@ type test_props = { // pretty-printed pp_exact: option<str>, // Modules from aux directory that should be compiled - aux_builds: [str] + aux_builds: [str], + // Environment settings to use during execution + exec_env: [(str,str)] }; // Load any test directives embedded in the file fn load_props(testfile: str) -> test_props { let mut error_patterns = []; let mut aux_builds = []; + let mut exec_env = []; let mut compile_flags = option::none; let mut pp_exact = option::none; iter_header(testfile) {|ln| @@ -43,12 +46,17 @@ fn load_props(testfile: str) -> test_props { option::iter(parse_aux_build(ln)) {|ab| aux_builds += [ab]; } + + option::iter(parse_exec_env(ln)) {|ee| + exec_env += [ee]; + } }; ret { error_patterns: error_patterns, compile_flags: compile_flags, pp_exact: pp_exact, - aux_builds: aux_builds + aux_builds: aux_builds, + exec_env: exec_env }; } @@ -97,6 +105,18 @@ fn parse_compile_flags(line: str) -> option<str> { parse_name_value_directive(line, "compile-flags") } +fn parse_exec_env(line: str) -> option<(str, str)> { + parse_name_value_directive(line, "exec-env").map {|nv| + // nv is either FOO or FOO=BAR + let strs = str::splitn_char(nv, '=', 1u); + alt strs.len() { + 1u { (strs[0], "") } + 2u { (strs[0], strs[1]) } + n { fail #fmt["Expected 1 or 2 strings, not %u", n]; } + } + } +} + fn parse_pp_exact(line: str, testfile: str) -> option<str> { alt parse_name_value_directive(line, "pp-exact") { option::some(s) { option::some(s) } |
