aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-02-22 11:36:46 +0100
committerCharles <sircharlesaze@gmail.com>2020-02-22 11:37:42 +0100
commitda4069d389ed0ca56a17da29b9e967bc2acb0dad (patch)
tree3ec0c2bbe550487dda26a5a2dca3f2e27945dec6
parent3adaa2c31586c3f76cb572f5d407cdb5f06fca93 (diff)
downloadft_ssl-da4069d389ed0ca56a17da29b9e967bc2acb0dad.tar.gz
ft_ssl-da4069d389ed0ca56a17da29b9e967bc2acb0dad.tar.bz2
ft_ssl-da4069d389ed0ca56a17da29b9e967bc2acb0dad.zip
Testing and CI
-rw-r--r--.travis.yml3
-rw-r--r--Makefile5
-rw-r--r--README.md2
-rwxr-xr-xtest.sh107
4 files changed, 115 insertions, 2 deletions
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..a0e4157
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,3 @@
+language: c
+compiler: gcc
+script: make all && ./test.sh
diff --git a/Makefile b/Makefile
index 5b61455..5d79214 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,7 @@
# By: cacharle <marvin@42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2020/02/03 20:14:50 by cacharle #+# #+# #
-# Updated: 2020/02/22 10:44:15 by cacharle ### ########.fr #
+# Updated: 2020/02/22 11:24:58 by cacharle ### ########.fr #
# #
# **************************************************************************** #
@@ -32,6 +32,9 @@ NAME = ft_ssl
all: prebuild libft_all $(NAME)
+test: all
+ ./test.sh
+
prebuild:
@for subdir in $(OBJ_SUBDIR); do mkdir -p $$subdir; done
diff --git a/README.md b/README.md
index ef5f811..f16dbd1 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# ft_ssl_md5
+# ft_ssl_md5 [![Build Status](https://api.travis-ci.com/HappyTramp/ft_ssl.svg?branch=master)](https://travis-ci.com/HappyTramp/ft_ssl)
ft\_ssl\_md5 project of school 42
diff --git a/test.sh b/test.sh
new file mode 100755
index 0000000..22db466
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+test_status=0
+
+red() {
+ echo "$(tput setaf 1)$1$(tput sgr 0)\c"
+ test_status=1
+}
+
+green() {
+ echo "$(tput setaf 2)$1$(tput sgr 0)\c"
+}
+
+assert() {
+ if [ $# -ne 2 ]; then
+ red "[KO] "
+ return 0
+ fi
+ if [ -z "$1" ]; then
+ red "[KO] "
+ return 0
+ fi
+ if [ -z "$2" ]; then
+ red "[KO] "
+ return 0
+ fi
+ if [ "$1" = "$2" ]; then
+ green "[OK] "
+ else
+ red "[KO] "
+ fi
+}
+
+# assert_ok() {
+# assert $1 "OK"
+# }
+#
+# assert_error() {
+# assert $1 "Error"
+# }
+#
+
+assert_md5() {
+ assert `./ft_ssl md5 $1 2>&1` `md5 $1 2>&1`
+}
+
+assert_sha256() {
+ assert `./ft_ssl md5 $1 2>&1` `openssl sha -sha256 $1 2>&1`
+}
+
+echo "Usage: \c"
+assert "`./ft_ssl 2>&1`" "usage: ./ft_ssl command [command opts] [command args]"
+assert "`./ft_ssl foo 2>&1`"<<EOF
+ft_ssl: Error: 'foo' is an invalid command.
+
+Standard commands:
+
+Message Digest commands:
+md5
+sha256
+
+Cipher commands:
+
+EOF
+
+
+echo "\nArgument Error: \c"
+assert_md5 "-a"
+assert_md5 "-foo"
+assert_md5 "-foo foobar.tmp"
+assert_md5 "-foo README.md"
+assert_md5 "foobar.tmp"
+
+echo "\nFiles: \c"
+assert_md5 "README.md"
+assert_md5 "README.md LICENCE"
+assert_md5 "README.md foobar.tmp LICENCE"
+
+echo "\nQuiet: \c"
+assert_md5 "-q foobar.tmp"
+assert_md5 "-q README.md"
+assert_md5 "-q README.md LICENCE"
+assert_md5 "-q README.md foobar.tmp LICENCE"
+
+echo "\nString: \c"
+assert_md5 "-s bonjour"
+assert_md5 "-s bonjour -s 'aurevoir'"
+assert_md5 "-sbonjour -s'aurevoir'"
+assert_md5 "-s\"bonjour\" -syo'aurevoir'"
+
+echo "\nReverse: \c"
+assert_md5 "-r -s bonjour"
+assert_md5 "-r -s bonjour -s 'aurevoir'"
+assert_md5 "-sbonjour -rs'aurevoir'"
+assert_md5 "-r -rs\"bonjour\" -syo'aurevoir'"
+assert_md5 "-r README.md"
+assert_md5 "README.md -r LICENCE"
+assert_md5 "README.md -r fowbar.tmp -r LICENCE"
+assert_md5 "-q -r README.md"
+
+echo "\nPipe: \c"
+echo "yoyoyo" | assert_md5 "-p -r -s bonjour"
+echo "vvvvvvvvvv" | assert_md5 "-sbonjour -p -rs'aurevoir'"
+echo "asdfkajhsdfjh" | assert_md5 "-p README.md -r fowbar.tmp -r LICENCE"
+echo "helpplz" | assert_md5 "-p -r README.md"
+
+exit $test_status