env.c 862 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include <reproc/run.h>
  2. #include "assert.h"
  3. int main(void)
  4. {
  5. const char *argv[] = { RESOURCE_DIRECTORY "/env", NULL };
  6. const char *envp[] = { "IP=127.0.0.1", "PORT=8080", NULL };
  7. char *output = NULL;
  8. reproc_sink sink = reproc_sink_string(&output);
  9. int r = -1;
  10. r = reproc_run_ex(argv,
  11. (reproc_options){ .env.behavior = REPROC_ENV_EMPTY,
  12. .env.extra = envp },
  13. sink, sink);
  14. ASSERT_OK(r);
  15. ASSERT(output != NULL);
  16. const char *current = output;
  17. for (size_t i = 0; i < 2; i++) {
  18. size_t size = strlen(envp[i]);
  19. ASSERT_GE_SIZE(strlen(current), size);
  20. ASSERT_EQ_MEM(current, envp[i], size);
  21. current += size;
  22. current += *current == '\r';
  23. current += *current == '\n';
  24. }
  25. ASSERT_EQ_SIZE(strlen(current), (size_t) 0);
  26. reproc_free(output);
  27. }