Skip to content

Commit

Permalink
add gtest to ci (#14)
Browse files Browse the repository at this point in the history
* add build / test to ci.yml

* add submodule

* replace ubuntu with macos on ci test

* update Makefile

* add leak rule to Makefile

* update test rule
  • Loading branch information
rask24 committed Jan 22, 2024
1 parent fa1450d commit 9d79a65
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 28 deletions.
22 changes: 22 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,25 @@ jobs:
python3 -m pip install norminette
- name: Run Norminette
run: make norm
build:
name: build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
submodules: recursive
- name: Build push_swap
run: make
test:
name: test
runs-on: macos-12
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
submodules: recursive
- name: Build push_swap
run: make
- name: Test
run: make test
76 changes: 51 additions & 25 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
NAME = push_swap
CFLAGS = -Werror -Wextra -Wall
CXXFLAGS = -std=c++17 -Wall -Wextra -Werror
PROD_FLAGS = -O3
DEV_FLAGS = -g -O0 -D DEV
DEV_FLAGS = -g -fsanitize=address -O0 -D DEV
LEAK_FLAGS = -O0 -D DEV -D LEAK
INCLUDE = -I $(INC_DIR)

SRC_DIR = src
BUILD_DIR = build
INC_DIR = include
LIBFT_DIR = libft
TEST_DIR = test
GTEST_DIR = test/gtest

SRC_DIR = ./src
BUILD_DIR = ./build
INC_DIR = ./include
LIBFT_DIR = ./libft
SRC = $(SRC_DIR)/main.c \
$(SRC_DIR)/check_args.c \
$(SRC_DIR)/generate_stack.c \
Expand All @@ -22,22 +28,25 @@ SRC = $(SRC_DIR)/main.c \
$(SRC_DIR)/utils/exit_with_error.c
OBJ = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o, $(SRC))
DEP = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.d, $(SRC))
DEPFLAGS = -MMD -MP
INCLUDE = -I $(INC_DIR)

CXXFLAGS = -std=c++20 -Wall -Wextra -Werror
TEST_DIR = ./test
OBJ_FILTER_MAIN = $(filter-out $(BUILD_DIR)/main.o, $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o, $(SRC)))
TEST_NAME = tester
TEST_SRC = $(TEST_DIR)/test_check_args.cpp \
$(TEST_DIR)/test_push_stack.cpp \
$(TEST_DIR)/test_reverse_rotate_stack.cpp \
$(TEST_DIR)/test_rotate_stack.cpp \
$(TEST_DIR)/test_swap_stack.cpp \
$(TEST_DIR)/test_sort.cpp
TEST_OBJ = $(filter-out $(BUILD_DIR)/main.o, $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o, $(SRC)))
$(TEST_DIR)/test_sort.cpp \
$(TEST_DIR)/test_ft_lst_before.cpp
TEST_OBJ = $(patsubst $(TEST_DIR)/%.cpp, $(BUILD_DIR)/$(TEST_DIR)/%.o, $(TEST_SRC))
DEPFLAGS = -MMD -MP
GTEST_SRC = $(GTEST_DIR)/gtest_main.cc $(GTEST_DIR)/gtest-all.cc
GTEST_OBJ = $(patsubst $(GTEST_DIR)/%.cc, $(BUILD_DIR)/$(GTEST_DIR)/%.o, $(GTEST_SRC))

GTEST_VERSION = 1.14.0
GTEST_DIR = ./test/gtest
GTEST_ARCHIVE = v$(GTEST_VERSION).tar.gz
GTEST_REPO_URL = https://github.com/google/googletest/archive/refs/tags/$(GTEST_ARCHIVE)
GTEST_SRC_DIR = googletest-$(GTEST_VERSION)
GTEST_FUSE_URL = https://raw.githubusercontent.com/google/googletest/ec44c6c1675c25b9827aacd08c02433cccde7780/googletest/scripts/$(GTEST_FUSE)
GTEST_FUSE = fuse_gtest_files.py

NORM = norminette
Expand All @@ -48,12 +57,13 @@ RED = \033[0;31m
RESET = \033[0m

all: CFLAGS += $(PROD_FLAGS)
all: title $(NAME)
all: title
all: $(NAME)

$(NAME): $(OBJ)
@printf "\n"
@make -C $(LIBFT_DIR)
@$(CC) $^ -L $(LIBFT_DIR) -lft -o $@
@$(CC) $(CFLAGS) $^ -L $(LIBFT_DIR) -lft -o $@

$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
@mkdir -p $(@D)
Expand All @@ -74,18 +84,34 @@ dev: CFLAGS += $(DEV_FLAGS)
dev: title
dev: $(NAME)

test: $(GTEST_DIR)
redev: fclean dev

leak: CFLAGS += $(LEAK_FLAGS)
leak: title
leak: $(NAME)

releak: fclean leak

test: all $(GTEST_OBJ) $(TEST_OBJ)
@echo "$(BLUE)test$(RESET)"
@$(CXX) $(CXXFLAGS) -I $(TEST_DIR) $(INCLUDE) -L $(LIBFT_DIR) -l ft -lpthread -o tester \
$(TEST_SRC) $(GTEST_DIR)/gtest_main.cc $(GTEST_DIR)/gtest-all.cc $(TEST_OBJ)
@./tester # --gtest_filter=Vector.other
@$(RM) tester
$(CXX) -L $(LIBFT_DIR) -lft -lpthread $(OBJ_FILTER_MAIN) $(TEST_OBJ) $(GTEST_OBJ) -o $(TEST_NAME)
./$(TEST_NAME)
@$(RM) $(TEST_NAME)

$(BUILD_DIR)/$(TEST_DIR)/%.o: $(TEST_DIR)/%.cpp
@mkdir -p $(@D)
$(CXX) $(CXXFLAGS) -I $(TEST_DIR) $(INCLUDE) -c $< -o $@

$(GTEST_OBJ): $(GTEST_DIR)
@mkdir -p $(@D)
$(CXX) $(CXXFLAGS) -I $(TEST_DIR) $(INCLUDE) -c $(GTEST_DIR)/gtest-all.cc -o $(BUILD_DIR)/$(GTEST_DIR)/gtest-all.o
$(CXX) $(CXXFLAGS) -I $(TEST_DIR) $(INCLUDE) -c $(GTEST_DIR)/gtest_main.cc -o $(BUILD_DIR)/$(GTEST_DIR)/gtest_main.o

$(GTEST_DIR):
@echo "$(BLUE)fetching google test$(RESET)"
@curl -#OL https://github.com/google/googletest/archive/refs/tags/$(GTEST_ARCHIVE)
@echo "$(BLUE)fetching fuse_gtest_files.py$(RESET)"
@curl -#OL https://raw.githubusercontent.com/google/googletest/ec44c6c1675c25b9827aacd08c02433cccde7780/googletest/scripts/$(GTEST_FUSE)
@echo "fetching google test"
@curl -#OL $(GTEST_REPO_URL)
@echo "fetching fuse_gtest_files.py"
@curl -#OL $(GTEST_FUSE_URL)
@tar -xzf $(GTEST_ARCHIVE) $(GTEST_SRC_DIR)
@python3 $(GTEST_FUSE) $(GTEST_SRC_DIR)/googletest $(GTEST_DIR)
@mv $(GTEST_SRC_DIR)/googletest/src/gtest_main.cc $(GTEST_DIR)
Expand All @@ -98,6 +124,6 @@ norm:
title:
@echo "$(BLUE)push_swap$(RESET)"

.PHONY: all clean fclean re dev test norm title
.PHONY: all clean fclean re dev redev leak releak test norm title

-include $(DEP)
7 changes: 4 additions & 3 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@
/* By: reasuke <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/01/10 12:37:36 by reasuke #+# #+# */
/* Updated: 2024/01/16 13:13:30 by reasuke ### ########.fr */
/* Updated: 2024/01/22 15:36:13 by reasuke ### ########.fr */
/* */
/* ************************************************************************** */

#include "push_swap.h"

#ifdef DEV

#ifdef LEAK
# ifdef __APPLE__

__attribute__((destructor))
Expand All @@ -23,6 +22,8 @@ void destructor(void)
}

# endif
#endif
#ifdef DEV

void put_void(void *content)
{
Expand Down

0 comments on commit 9d79a65

Please sign in to comment.