66 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "test_shell_commander.h"
 | |
| #include "commander.h"
 | |
| #include "str8.h"
 | |
| #include "tester.h"
 | |
| #include <stdbool.h>
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| 
 | |
| TestFuncResult test_commander_cmd_success(void) {
 | |
|   Str8List cmd = {0};
 | |
|   wapp_str8_list_push_back(&cmd, &wapp_str8_node_from_cstr("echo"));
 | |
|   wapp_str8_list_push_back(&cmd, &wapp_str8_node_from_cstr("hello world"));
 | |
| 
 | |
|   CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_DISCARD, NULL, &cmd);
 | |
|   bool succeeded   = result.exited && result.exit_code == EXIT_SUCCESS &&
 | |
|                      result.error == SHELL_ERR_NO_ERROR;
 | |
| 
 | |
|   return wapp_tester_result(succeeded);
 | |
| }
 | |
| 
 | |
| TestFuncResult test_commander_cmd_failure(void) {
 | |
|   Str8List cmd = {0};
 | |
|   wapp_str8_list_push_back(&cmd, &wapp_str8_node_from_cstr("grep"));
 | |
| 
 | |
|   CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_DISCARD, NULL, &cmd);
 | |
|   bool failed      = result.exited && result.exit_code != EXIT_SUCCESS &&
 | |
|                      result.error == SHELL_ERR_NO_ERROR;
 | |
| 
 | |
|   return wapp_tester_result(failed);
 | |
| }
 | |
| 
 | |
| TestFuncResult test_commander_cmd_out_buf_success(void) {
 | |
|   Str8 buf          = wapp_str8_buf(64);
 | |
|   Str8 expected     = wapp_str8_buf(64);
 | |
|   char msg[]        = "hello world";
 | |
|   wapp_str8_copy_cstr_capped(&expected, msg);
 | |
| 
 | |
|   Str8List cmd = {0};
 | |
|   wapp_str8_list_push_back(&cmd, &wapp_str8_node_from_cstr("echo"));
 | |
|   wapp_str8_list_push_back(&cmd, &wapp_str8_node_from_cstr(msg));
 | |
| 
 | |
|   CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_CAPTURE, &buf, &cmd);
 | |
|   bool succeeded   = result.exited && result.exit_code == EXIT_SUCCESS &&
 | |
|                      result.error == SHELL_ERR_NO_ERROR && wapp_str8_equal_to_count(&buf, &expected, strlen(msg));
 | |
| 
 | |
|   return wapp_tester_result(succeeded);
 | |
| }
 | |
| 
 | |
| TestFuncResult test_commander_cmd_out_buf_failure(void) {
 | |
|   Str8 buf         = wapp_str8_buf(4);
 | |
|   Str8 expected    = wapp_str8_buf(64);
 | |
|   char msg[]       = "hello world";
 | |
|   wapp_str8_copy_cstr_capped(&expected, msg);
 | |
| 
 | |
|   Str8List cmd = {0};
 | |
|   wapp_str8_list_push_back(&cmd, &wapp_str8_node_from_cstr("echo"));
 | |
|   wapp_str8_list_push_back(&cmd, &wapp_str8_node_from_cstr(msg));
 | |
| 
 | |
|   CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_CAPTURE, &buf, &cmd);
 | |
|   bool failed      = !result.exited && result.exit_code != EXIT_SUCCESS &&
 | |
|                      result.error == SHELL_ERR_OUT_BUF_FULL && !wapp_str8_equal(&buf, &expected);
 | |
| 
 | |
|   return wapp_tester_result(failed);
 | |
| }
 |