authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-03-11 11:56:08-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-03-11 11:56:08-04:00
loge1fbb24d64caa956846405bd42aed59e5b9513f2
tree86a1d3151a5431a7578339fc2a967fb234b27f2f
parentb4e6e301e1a5411d09a306fb96cf4a5c8d0b754f
signature Commit is signed but in an unrecognized format.

add test for spawning child process with empty environment

thanks to BenoitJGirard for pointing out the child process implementation needs 3 extra null bytes in #2031

4 files changed, 25 insertions(+), 0 deletions(-)

std/build.zig+6
......@@ -1530,6 +1530,12 @@ pub const RunStep = struct {
15301530 }
15311531 }
15321532
1533 pub fn clearEnvironment(self: *RunStep) void {
1534 const new_env_map = self.builder.allocator.create(BufMap) catch unreachable;
1535 new_env_map.* = BufMap.init(self.builder.allocator);
1536 self.env_map = new_env_map;
1537 }
1538
15331539 pub fn addPathDir(self: *RunStep, search_path: []const u8) void {
15341540 const PATH = if (builtin.os == builtin.Os.windows) "Path" else "PATH";
15351541 const env_map = self.getEnvMap();
test/build_examples.zig+1
......@@ -19,6 +19,7 @@ pub fn addCases(cases: *tests.BuildExamplesContext) void {
1919 cases.addBuildFile("test/standalone/pkg_import/build.zig");
2020 cases.addBuildFile("test/standalone/use_alias/build.zig");
2121 cases.addBuildFile("test/standalone/brace_expansion/build.zig");
22 cases.addBuildFile("test/standalone/empty_env/build.zig");
2223 if (false) {
2324 // TODO this test is disabled because it is failing on the CI server's linux. when this is fixed
2425 // enable it for at least linux
test/standalone/empty_env/build.zig created+12
......@@ -0,0 +1,12 @@
1const Builder = @import("std").build.Builder;
2
3pub fn build(b: *Builder) void {
4 const main = b.addExecutable("main", "main.zig");
5 main.setBuildMode(b.standardReleaseOptions());
6
7 const run = main.run();
8 run.clearEnvironment();
9
10 const test_step = b.step("test", "Test it");
11 test_step.dependOn(&run.step);
12}
test/standalone/empty_env/main.zig created+6
......@@ -0,0 +1,6 @@
1const std = @import("std");
2
3pub fn main() void {
4 const env_map = std.os.getEnvMap(std.debug.global_allocator) catch @panic("unable to get env map");
5 std.testing.expect(env_map.count() == 0);
6}