From f6a23eb192fba87f35fe5eec9d9c9414365d1f3b Mon Sep 17 00:00:00 2001 From: Jaewon Choi <jaewon.james.choi@gmail.com> Date: Mon, 23 Oct 2017 02:29:01 +0900 Subject: [PATCH] Fix compatibile issue on test --- .gitignore | 1 + include/commands.h | 4 +- include/utils.h | 2 +- src/commands.c | 4 +- tests/src/command_parsing_test.cc | 118 ++++++++++++++--------------- tests/src/command_validate_test.cc | 2 +- 6 files changed, 66 insertions(+), 65 deletions(-) diff --git a/.gitignore b/.gitignore index 2a53121..834539a 100644 --- a/.gitignore +++ b/.gitignore @@ -116,3 +116,4 @@ tags # End of https://www.gitignore.io/api/c,vim,c++,linux,cmake mysh +mysh-test diff --git a/include/commands.h b/include/commands.h index 7fbe4d9..c0b66fe 100644 --- a/include/commands.h +++ b/include/commands.h @@ -7,8 +7,8 @@ struct single_command char** argv; }; -int evaluate_command(int n_commands, struct single_command (*commands)[]); +int evaluate_command(int n_commands, struct single_command (*commands)[512]); -void free_commands(int n_commands, struct single_command (*commands)[]); +void free_commands(int n_commands, struct single_command (*commands)[512]); #endif // MYSH_COMMANDS_H_ diff --git a/include/utils.h b/include/utils.h index 5f3403d..54fa69f 100644 --- a/include/utils.h +++ b/include/utils.h @@ -5,7 +5,7 @@ void mysh_parse_command(const char* command, int* n_commands, - struct single_command (*commands)[]); + struct single_command (*commands)[512]); void parse_single_command(const char* command, int *argc, char*** argv); diff --git a/src/commands.c b/src/commands.c index 2a4e6ec..13e9c33 100644 --- a/src/commands.c +++ b/src/commands.c @@ -28,7 +28,7 @@ static int is_built_in_command(const char* command_name) /* * Description: Currently this function only handles single built_in commands. You should modify this structure to launch process and offer pipeline functionality. */ -int evaluate_command(int n_commands, struct single_command (*commands)[]) +int evaluate_command(int n_commands, struct single_command (*commands)[512]) { if (n_commands > 0) { struct single_command* com = (*commands); @@ -58,7 +58,7 @@ int evaluate_command(int n_commands, struct single_command (*commands)[]) return 0; } -void free_commands(int n_commands, struct single_command (*commands)[]) +void free_commands(int n_commands, struct single_command (*commands)[512]) { for (int i = 0; i < n_commands; ++i) { struct single_command *com = (*commands) + i; diff --git a/tests/src/command_parsing_test.cc b/tests/src/command_parsing_test.cc index 6f943a1..3ba041d 100644 --- a/tests/src/command_parsing_test.cc +++ b/tests/src/command_parsing_test.cc @@ -1,102 +1,102 @@ +#ifdef __cplusplus extern "C" { +#endif #include "utils.h" +#include "commands.h" +#ifdef __cplusplus } +#endif #include "gtest/gtest.h" #include <stdlib.h> -static void free_string_array(char*** argv, int num_str); - TEST(CommandParsingTest, BasicCommand) { - char** argv = NULL; - int argc = -1; + struct single_command commands[512]; + int n_commands = 0; - mysh_parse_command("cd test", &argc, &argv); + mysh_parse_command("cd test", &n_commands, &commands); - ASSERT_EQ(argc, 2); - EXPECT_STREQ(argv[0], "cd"); - EXPECT_STREQ(argv[1], "test"); + ASSERT_EQ(n_commands, 1); + ASSERT_EQ(commands[0].argc, 2); + EXPECT_STREQ(commands[0].argv[0], "cd"); + EXPECT_STREQ(commands[0].argv[1], "test"); - free_string_array(&argv, argc); + free_commands(n_commands, &commands); } TEST(CommandParsingTest, SingleCommand) { - char** argv = NULL; - int argc = -1; + struct single_command commands[512]; + int n_commands = 0; - mysh_parse_command("pwd", &argc, &argv); + mysh_parse_command("pwd", &n_commands, &commands); - ASSERT_EQ(argc, 1); - EXPECT_STREQ(argv[0], "pwd"); + ASSERT_EQ(n_commands, 1); + ASSERT_EQ(commands[0].argc, 1); + EXPECT_STREQ(commands[0].argv[0], "pwd"); - free_string_array(&argv, argc); + free_commands(n_commands, &commands); } TEST(CommandParsingTest, Redirection1) { - char** argv = NULL; - int argc = -1; + struct single_command commands[512]; + int n_commands = 0; - mysh_parse_command("pwd > curdir.txt", &argc, &argv); + mysh_parse_command("pwd > curdir.txt", &n_commands, &commands); - ASSERT_EQ(argc, 3); - EXPECT_STREQ(argv[0], "pwd"); - EXPECT_STREQ(argv[1], ">"); - EXPECT_STREQ(argv[2], "curdir.txt"); + ASSERT_EQ(n_commands, 1); + ASSERT_EQ(commands[0].argc, 3); + EXPECT_STREQ(commands[0].argv[0], "pwd"); + EXPECT_STREQ(commands[0].argv[1], ">"); + EXPECT_STREQ(commands[0].argv[2], "curdir.txt"); - free_string_array(&argv, argc); + free_commands(n_commands, &commands); } TEST(CommandParsingTest, Redirection2) { - char** argv = NULL; - int argc = -1; + struct single_command commands[512]; + int n_commands = 0; + + mysh_parse_command("pwd > curdir.txt | less", &n_commands, &commands); - mysh_parse_command("pwd > curdir.txt | less", &argc, &argv); + ASSERT_EQ(n_commands, 2); + ASSERT_EQ(commands[0].argc, 3); + EXPECT_STREQ(commands[0].argv[0], "pwd"); + EXPECT_STREQ(commands[0].argv[1], ">"); + EXPECT_STREQ(commands[0].argv[2], "curdir.txt"); - ASSERT_EQ(argc, 5); - EXPECT_STREQ(argv[0], "pwd"); - EXPECT_STREQ(argv[1], ">"); - EXPECT_STREQ(argv[2], "curdir.txt"); - EXPECT_STREQ(argv[3], "|"); - EXPECT_STREQ(argv[4], "less"); + ASSERT_EQ(commands[1].argc, 1); + EXPECT_STREQ(commands[1].argv[0], "less"); - free_string_array(&argv, argc); + free_commands(n_commands, &commands); } TEST(CommandParsingTest, SpaceBeforeString) { - char** argv = NULL; - int argc = -1; + struct single_command commands[512]; + int n_commands = 0; - mysh_parse_command(" \n \t pwd > curdir.txt | less", &argc, &argv); + mysh_parse_command(" \n \t pwd > curdir.txt | less", &n_commands, &commands); - ASSERT_EQ(argc, 5); - EXPECT_STREQ(argv[0], "pwd"); - EXPECT_STREQ(argv[1], ">"); - EXPECT_STREQ(argv[2], "curdir.txt"); - EXPECT_STREQ(argv[3], "|"); - EXPECT_STREQ(argv[4], "less"); + ASSERT_EQ(n_commands, 2); + ASSERT_EQ(commands[0].argc, 3); + EXPECT_STREQ(commands[0].argv[0], "pwd"); + EXPECT_STREQ(commands[0].argv[1], ">"); + EXPECT_STREQ(commands[0].argv[2], "curdir.txt"); - free_string_array(&argv, argc); + ASSERT_EQ(commands[1].argc, 1); + EXPECT_STREQ(commands[1].argv[0], "less"); + + free_commands(n_commands, &commands); } TEST(CommandParsingTest, EmptyCommand) { - char** argv = NULL; - int argc = -1; - - mysh_parse_command(" \n \t ", &argc, &argv); - - ASSERT_EQ(argc, 1); - EXPECT_STREQ(argv[0], ""); - - free_string_array(&argv, argc); -} + struct single_command commands[512]; + int n_commands = 0; -static void free_string_array(char*** argv, int num_str) { - for (int i = 0; i < num_str; ++i) { - free((*argv)[i]); - } + mysh_parse_command(" \n \t ", &n_commands, &commands); - free(*argv); + ASSERT_EQ(commands[0].argc, 1); + EXPECT_STREQ(commands[0].argv[0], ""); - *argv = NULL; + free_commands(n_commands, &commands); } diff --git a/tests/src/command_validate_test.cc b/tests/src/command_validate_test.cc index 5274854..4da9bac 100644 --- a/tests/src/command_validate_test.cc +++ b/tests/src/command_validate_test.cc @@ -1,5 +1,5 @@ extern "C" { -#include "commands.h" +#include "built_in.h" } #include "gtest/gtest.h" -- GitLab