about summary refs log tree commit diff
path: root/src/test/stdtest/os.rs
blob: 1236a790925f8f7841b6a985240cf0893392a500 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import core::*;

import std::generic_os::setenv;
import std::generic_os::getenv;
import option;

#[test]
#[ignore(reason = "fails periodically on mac")]
fn test_setenv() {
    // NB: Each test of setenv needs to use different variable names or the
    // tests will not be threadsafe
    setenv("NAME1", "VALUE");
    assert (getenv("NAME1") == option::some("VALUE"));
}

#[test]
fn test_setenv_overwrite() {
    setenv("NAME2", "1");
    setenv("NAME2", "2");
    assert (getenv("NAME2") == option::some("2"));
}

// Windows GetEnvironmentVariable requires some extra work to make sure
// the buffer the variable is copied into is the right size
#[test]
fn test_getenv_big() {
    let s = "";
    let i = 0;
    while i < 100 { s += "aaaaaaaaaa"; i += 1; }
    setenv("NAME3", s);
    assert (getenv("NAME3") == option::some(s));
}

#[test]
fn get_exe_path() {
    let path = std::os::get_exe_path();
    assert option::is_some(path);
    let path = option::get(path);
    log path;

    // Hard to test this function
    if std::os::target_os() != "win32" {
        assert str::starts_with(path, std::fs::path_sep());
    } else {
        assert path[1] == ':' as u8;
    }
}

// Local Variables:
// mode: rust;
// fill-column: 78;
// indent-tabs-mode: nil
// c-basic-offset: 4
// buffer-file-coding-system: utf-8-unix
// End: