diff --git a/include/utils.h b/include/utils.h
new file mode 100644
index 0000000000000000000000000000000000000000..57345da8a0ef78ebb377ac1ec600b5eba6a9faaa
--- /dev/null
+++ b/include/utils.h
@@ -0,0 +1,7 @@
+#ifndef MYSH_UTILS_H_
+#define MYSH_UTILS_H_
+
+void mysh_parse_command(const char* command,
+                        int *argc, char** argv);
+
+#endif // MYSH_UTILS_H_
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..f8b643afbf2c84dc03b777743d3e53a22045cf49
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,4 @@
+int main()
+{
+  return 0;
+}
diff --git a/src/utils.c b/src/utils.c
new file mode 100644
index 0000000000000000000000000000000000000000..681ab85fb646ab1f1201f052b898177b042adcd3
--- /dev/null
+++ b/src/utils.c
@@ -0,0 +1,7 @@
+#include "utils.h"
+
+void mysh_parse_command(const char* command,
+                        int *argc, char** argv)
+{
+  // TODO: Fill this!
+}
diff --git a/tests/src/command_parsing_test.cc b/tests/src/command_parsing_test.cc
index f876538f125483b89d3817004603306c09f808cd..b7822c6b06b6c8fd554002099e44119ba23df29b 100644
--- a/tests/src/command_parsing_test.cc
+++ b/tests/src/command_parsing_test.cc
@@ -1,5 +1,28 @@
+extern "C" {
+#include "utils.h"
+}
+
 #include "gtest/gtest.h"
 
-TEST(CommandParsingTest, Basic) {
-  EXPECT_EQ(1, 1);
+#include <stdlib.h>
+
+TEST(CommandParsingTest, BasicCommand) {
+  char** argv;
+  int argc = -1;
+
+  argv = (char**)malloc(2);
+  for (int i = 0; i < 2; ++i) {
+    argv[i] = (char*)malloc(512);
+  }
+
+  mysh_parse_command("cd test", &argc, argv);
+
+  EXPECT_EQ(argc, 2);
+  EXPECT_STREQ(argv[0], "cd");
+  EXPECT_STREQ(argv[1], "test");
+
+  for (int i = 0; i < 2; ++i) {
+    free(argv[i]);
+  }
+  free(argv);
 }