Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add gtest to ci #14

Merged
merged 6 commits into from
Jan 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading