diff --git a/src/build/.gitkeep b/src/build/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/makefile b/src/makefile index ad44c4f..d921679 100644 --- a/src/makefile +++ b/src/makefile @@ -1,37 +1,51 @@ CXX = g++ -CXXFLAGS = -std=c++17 -Wall -TEST_LIBS = -lmd4c-html -lCatch2Main -lCatch2 +CXXFLAGS = -std=c++17 -Wall -Wextra -O2 -I . LIBS = -lmd4c-html -TEST_DIR = tests +TEST_LIBS = -lmd4c-html -lCatch2Main -lCatch2 -all: blog +BUILD_DIR = build -blog: main.o config.o utils.o - $(CXX) $(CXXFLAGS) main.o config.o -o blog $(LIBS) +SOURCES = main.cpp \ + config/config.cpp \ + format/format.cpp \ + markdown/markdown.cpp -main.o: main.cpp config.hpp - $(CXX) $(CXXFLAGS) -c main.cpp +OBJECTS = $(SOURCES:%.cpp=$(BUILD_DIR)/%.o) -config.o: config.cpp config.hpp - $(CXX) $(CXXFLAGS) -c config.cpp +TEST_SOURCES = tests.cpp \ + config/config.cpp \ + format/format.cpp \ + markdown/markdown.cpp -utils.o: utils.cpp utils.hpp - $(CXX) $(CXXFLAGS) -c utils.cpp +TEST_OBJECTS = $(TEST_SOURCES:%.cpp=$(BUILD_DIR)/%.o) -markdown.o: markdown.cpp markdown.hpp - $(CXX) $(CXXFLAGS) -c markdown.cpp +TARGET = blog +TEST_TARGET = tests -formatter.o: formatter.cpp formatter.hpp - $(CXX) $(CXXFLAGS) -c formatter.cpp +.PHONY: all clean test directories -tests.o: $(TEST_DIR)/tests.cpp config.hpp - $(CXX) $(CXXFLAGS) -c $(TEST_DIR)/tests.cpp +all: directories $(TARGET) -tests: tests.o config.o utils.o markdown.o formatter.o - g++ -std=c++17 -Wall tests.o config.o utils.o markdown.o formatter.o -o $(TEST_DIR)/tests $(TEST_LIBS) +directories: + @mkdir -p $(BUILD_DIR)/config + @mkdir -p $(BUILD_DIR)/format + @mkdir -p $(BUILD_DIR)/markdown -check: tests - $(TEST_DIR)/tests +$(TARGET): $(OBJECTS) + $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) + +$(TEST_TARGET): $(TEST_OBJECTS) + $(CXX) $(CXXFLAGS) -o $@ $^ $(TEST_LIBS) + +$(BUILD_DIR)/%.o: %.cpp + @mkdir -p $(dir $@) + $(CXX) $(CXXFLAGS) -c $< -o $@ + +test: directories $(TEST_TARGET) + ./$(TEST_TARGET) clean: - rm -f *.o $(TEST_DIR)/*.o blog $(TEST_DIR)/tests + rm -rf $(BUILD_DIR) + rm -f $(TARGET) $(TEST_TARGET) + +rebuild: clean all diff --git a/src/tests/config.toml b/src/test_files/config.toml similarity index 100% rename from src/tests/config.toml rename to src/test_files/config.toml diff --git a/src/tests/formatter.html b/src/test_files/formatter.html similarity index 100% rename from src/tests/formatter.html rename to src/test_files/formatter.html diff --git a/src/tests/image.png b/src/test_files/image.png similarity index 100% rename from src/tests/image.png rename to src/test_files/image.png diff --git a/src/tests/no_metadata_post.md b/src/test_files/no_metadata_post.md similarity index 100% rename from src/tests/no_metadata_post.md rename to src/test_files/no_metadata_post.md diff --git a/src/tests/post.md b/src/test_files/post.md similarity index 100% rename from src/tests/post.md rename to src/test_files/post.md diff --git a/src/tests.cpp b/src/tests.cpp index 2daa9b1..b0eb144 100644 --- a/src/tests.cpp +++ b/src/tests.cpp @@ -1,7 +1,6 @@ -#include "../config.hpp" -#include "../formatter.hpp" -#include "../markdown.hpp" -#include "../utils.hpp" +#include "config/config.hpp" +#include "format/format.hpp" +#include "markdown/markdown.hpp" #include #include #include @@ -9,7 +8,7 @@ #include TEST_CASE("Checking config file read", "[config]") { - const std::string FILE_NAME = "tests/config.toml"; + const std::string FILE_NAME = "test_files/config.toml"; Config config = get_config(FILE_NAME); @@ -21,7 +20,7 @@ TEST_CASE("Checking config file read", "[config]") { } TEST_CASE("get_metadata function data correctness test") { - const std::string FILE_NAME = "./tests/post.md"; + const std::string FILE_NAME = "./test_files/post.md"; Metadata result = get_metadata(FILE_NAME).value(); std::string expected_author = "joseph"; @@ -42,13 +41,13 @@ TEST_CASE("get_metadata function data correctness test") { } TEST_CASE("get_metadata function test with a file that doesn't have metadata") { - const std::string FILE_NAME = ".tests/no_metadata_post.md"; + const std::string FILE_NAME = ".test_files/no_metadata_post.md"; std::optional result = get_metadata(FILE_NAME); REQUIRE(result == std::nullopt); } TEST_CASE("get_html function parsing test") { - const std::string INPUT = "./tests/post.md"; + const std::string INPUT = "./test_files/post.md"; const std::string EXPECTED_OUTPUT = R"HTML(

This is an example post

In this example we will do a couple of cool markdown things.

This is a h2 header

@@ -86,7 +85,7 @@ int main() { } TEST_CASE("formatter injection test") { - const std::string FILE_NAME = "./tests/formatter.html"; + const std::string FILE_NAME = "./test_files/formatter.html"; const std::string EXPECTED_OUTPUT = R"( diff --git a/src/tests_files/config.toml b/src/tests_files/config.toml deleted file mode 100644 index 6cf6a90..0000000 --- a/src/tests_files/config.toml +++ /dev/null @@ -1,8 +0,0 @@ -[general] -lang = "en" -title = "Blog" - -[contact] -author = "author" -email = "email@example.com" -signal = "signal url" diff --git a/src/tests_files/formatter.html b/src/tests_files/formatter.html deleted file mode 100644 index 973e582..0000000 --- a/src/tests_files/formatter.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - Document - - - {{replace_me}} - - diff --git a/src/tests_files/image.png b/src/tests_files/image.png deleted file mode 100644 index 49abd93..0000000 Binary files a/src/tests_files/image.png and /dev/null differ diff --git a/src/tests_files/no_metadata_post.md b/src/tests_files/no_metadata_post.md deleted file mode 100644 index 115a838..0000000 --- a/src/tests_files/no_metadata_post.md +++ /dev/null @@ -1,2 +0,0 @@ -# This markdown has no metadata. -That's bad. Don't do it. It's for tests only. diff --git a/src/tests_files/post.md b/src/tests_files/post.md deleted file mode 100644 index 308c92e..0000000 --- a/src/tests_files/post.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -[metadata] -author = "joseph" -date = 2026-01-01 -title = "Example of a blog post" -tags = ["blog", "test", "lalilulelo"] ---- -# This is an example post - -In this example we will do a couple of cool markdown things. - -## This is a h2 header -*This text is written in italic!* -### Look at this! -**This text is BOLD!** - -## Hello world! -```cpp -#include - -int main() { - std::cout << "Hello world!" << std::endl; -} -``` -This is super cool! - -## Time to link some random website! -This [should be clickable](https://example.com) - -## Image test -![this should show an image](./image.png) - -## This is an ordered list -1. one -2. six -3. seven - -## This is an unordered one -- six -- nine -- six -- nine