Compare commits

..
20 Commits
Author SHA1 Message Date
emma e028844825 tests: test.sh: utilize $BIN 2024-04-27 15:18:09 -06:00
emma f022121436 tests: posix: cat(1p): added POSIX-compliant cat 2024-04-27 15:16:52 -06:00
emma e278307daf tests: bonsai: removed redundant code 2024-04-26 20:55:16 -06:00
emma 4ad9e0da92 tests: bonsai: rename aliases sourced script to test_env 2024-04-25 18:57:05 -06:00
emma 0113cf793d tests: bonsai: hru.sh: adds test 2024-04-25 17:20:55 -06:00
emma 1aa2b596d0 tests: aliases: added set -x 2024-04-24 19:28:33 -06:00
emma c6f30c4195 tests: bonsai: fop.sh: added test 2024-04-24 19:25:55 -06:00
emma 3398fc372c tests: bonsai: mm.sh: fixed copyright 2024-04-24 15:33:17 -06:00
emma 28f2d44e2f CONTRIBUTING: updated to include docs and tests requirement 2024-04-24 15:24:35 -06:00
emma aefa87d9e5 tests: fixed aliasing and created mm.sh 2024-04-24 15:22:07 -06:00
emma 057f5571d6 moved tests into test directory 2024-04-24 14:58:35 -06:00
trinity e7021e127c Testfile: make non-executable 2024-03-13 18:20:30 -06:00
trinity 417d7ca405 Testfile: fix syntax 2024-03-11 21:03:53 -06:00
trinity f7a74dc430 Testfile 2024-03-11 21:01:29 -06:00
trinity cabe08bca4 TESTING: start testing document/script 2024-02-29 20:33:09 -07:00
emma c97201fca9 Merge branch 'contributing-changes' 2024-02-23 23:20:16 -07:00
emma 06fc461985 CONTRIBUTING: fixed random "utils" 2024-02-23 23:19:28 -07:00
emma 0d445c71f4 CONTRIBUTING: fixed wording and updated 2024-02-18 15:09:09 -07:00
emma d45e3410f8 CONTRIBUTING: fixed some small issues 2024-02-07 22:03:08 -07:00
emma 452a1295e6 CONTRIBUTING: updated and added copyright info 2024-02-07 21:54:46 -07:00
15 changed files with 263 additions and 18 deletions
+33 -13
View File
@@ -90,26 +90,46 @@ notice:
* USE OR OTHER DEALINGS IN THE SOFTWARE. * USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
When writing code, make sure lines never exceed 80 characters in width when Make sure lines never exceed 80 columns in width when using four-character
using four-character-wide indentation steps. indentation steps. This helps contributors with smaller screens, those using
side-by-side editor windows or panes, and those who have no text wrapping in
their editor or terminal.
For usage text and help messages, please do not implement a -h option. Just For usage text and help messages, do not implement a -h option. Instead, print
print usage information when any erroneous option is specified. Follow the usage information when any erroneous option is specified. Follow the NetBSD
NetBSD style guide for usage text output format [1]. style guide for the usage texts output format [0].
If committing a new source file for a utility, format the commit message like If committing a new utility, please include tests and documentation (see
this: tests/ and docs/) for the new tool.
$ git commit -m 'tool(1): <information>' If committing a new source file, format the commit message following these
guidelines:
$ git commit -m 'tool(1): add feature x'
If committing a new library or header file: If committing a new library or header file:
$ git commit -m 'library(1): <information>' $ git commit -m 'library(3): fix overflow'
$ git commit -m 'header.h(3): add header.h(3)'
If committing a new manual page:
$ git commit -m 'tool.1: add author details'
If modifying some other file or directory: If modifying some other file or directory:
$ git commit -m 'README: clarification' $ git commit -m 'README: clarify'
$ git commit -m 'tests: posix: fixed bug #47' $ git commit -m 'tests/posix: fix bug #47'
$ git commit -m 'docs: tool(1): added author information'
etc. For multiple of these:
$ git commit -m 'Makefile, tool(1): add tool(1)'
$ git commit -m 'tool(1): add tool(1); library(3), library.3: add library(3)'
$ git commit -m 'tool(1): fix #42 & add feature x'
Commit messages should be written in the present tense.
[0] <http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/share/misc/style>
--
This work © 20232024 by Emma Tebibyte is licensed under CC BY-SA 4.0. To view a
copy of this license, visit <http://creativecommons.org/licenses/by-sa/4.0/>
+3 -2
View File
@@ -14,6 +14,7 @@
PREFIX=/usr/local PREFIX=/usr/local
CC=cc CC=cc
MAKE=make
RUSTC=rustc RUSTC=rustc
.PHONY: all .PHONY: all
@@ -39,8 +40,8 @@ install: dist
cp -r dist/* $(PREFIX)/ cp -r dist/* $(PREFIX)/
.PHONY: test .PHONY: test
test: build test: all
tests/posix-compat.sh tests/test.sh
$(RUSTC) --test src/getopt-rs/lib.rs -o build/test/getopt $(RUSTC) --test src/getopt-rs/lib.rs -o build/test/getopt
build/o/libsysexits.rlib: build build/o/libsysexits.rlib: build
+27
View File
@@ -0,0 +1,27 @@
#!/bin/sh
# Copyright (c) 2024 DTB <trinity@trinity.moe>
# Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
. tests/bonsai/test_env
! dj -h
# This test is theoretically Linux-dependent; write(2) should return -1 on
# error.
# Right now dj(1) interprets the return value of write(2) as the amount of
# bytes written. This can decrement the stored quantity of bytes written,
# which is an int, so doesn't underflow but goes negative. dj(1) tries to
# again to write(2) if an error occurs in which no bytes are written, so in
# total two write(2)s are attempted and so the written byte quantity is -2.
# This is a bug and will change, but for now is at least documented.
dj -Hi /dev/zero -o /dev/full \
| xargs -I out "$BIN/strcmp" '1+0 > 0+0; 1024 > -2' out
# Read nothing from /dev/null, write nothing to /dev/null.
dj -Hi /dev/null -o /dev/null \
| xargs -I out "$BIN/strcmp" '0+0 > 0+0; 0 > 0' out
+13
View File
@@ -0,0 +1,13 @@
#!/bin/sh
# Copyright (c) 2024 DTB <trinity@trinity.moe>
# Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
. tests/bonsai/test_env
! false
! false -h
+21
View File
@@ -0,0 +1,21 @@
#!/bin/sh
# Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
. tests/bonsai/test_env
! fop -h
"$BIN/strcmp" "$(printf 'test0␞test1␞test2\n' | fop 1 sed 's/1/4/g')" \
'test0␞test4␞test2'
"$BIN/strcmp" "$(printf 'test0 test1 test2\n' | fop -d' ' 2 sed 's/2/4/g')" \
'test0 test1 test4'
! printf 'test\n' | fop 1 cat
! printf 'test\n' | fop 'test' cat
! printf 'test\n' | fop -d'test' cat
+26
View File
@@ -0,0 +1,26 @@
#!/bin/sh
# Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
. tests/bonsai/test_env
alias strcmp="$BIN/strcmp"
alias rpn="$BIN/rpn"
strcmp "$(printf '1234\n' | hru)" '1.2 kB'
strcmp "$(printf '0\n' | hru)" '0 B'
# doesnt currently work but would be useful for testing for regressions
#n=1
#while "$BIN/true"; do
# n="$(rpn "$n" 10 ×)"
#
# printf '%s\n' "$n" | hru || break
#done
#printf 'integer limit: ~%s\n' "$(rpn "$n" 10 ÷)"
! printf '%s\n' '-1' | hru
+25
View File
@@ -0,0 +1,25 @@
#!/bin/sh
# Copyright (c) 2024 DTB <trinity@trinity.moe>
# Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
. tests/bonsai/test_env
intcmp -e 3 3 3
intcmp -g 3 2 1
intcmp -l 1 2 3
intcmp -ge 3 3 1
intcmp -le 1 3 3
intcmp -gl 1 2 3
intcmp -egl 3 1 1 2
! intcmp -e 1 2 3
! intcmp -g 1 3 3
! intcmp -l 3 3 1
! intcmp -ge 1 2 3
! intcmp -le 3 2 1
! intcmp -gl 3 3 3
! intcmp -egl foo
+19
View File
@@ -0,0 +1,19 @@
#!/bin/sh
# Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
. tests/bonsai/test_env
exec 3>&1
! mm -h
# mm(1) will error if positional arguments are given without -i or -o
! mm argument
# check if stderr is empty upon specifying -e
! "$BIN/strcmp" "$(printf 'test\n' | mm -i - -e 2>&1 1>&3)" ''
+16
View File
@@ -0,0 +1,16 @@
#!/bin/sh
# Copyright (c) 2024 DTB <trinity@trinity.moe>
# Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
. tests/bonsai/test_env
strcmp equals equals
! strcmp inequals equals
strcmp - -
strcmp -h
! strcmp nocmp
+5
View File
@@ -0,0 +1,5 @@
#!/bin/sh
set -x
alias "$UTIL=$BIN/$UTIL"
+13
View File
@@ -0,0 +1,13 @@
#!/bin/sh
# Copyright (c) 2024 DTB <trinity@trinity.moe>
# Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
. tests/bonsai/test_env
true
true -h
+22
View File
@@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
# Strictly POSIX-compliant cat(1) implementation. See cat(1p)
for arg in "$@"; do
case "$arg" in
-u) args="$(printf '%s %s\n' "$args" "$arg")" ;;
*) args="$(printf -- '%s -i %s\n' "$args" "$arg")" ;;
esac
done
# See IEEE Std 1003.1-2017 3.282
# https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_282
IFS=' '
mm $args
+12
View File
@@ -0,0 +1,12 @@
#!/bin/sh
# Copyright (c) 2024 DTB <trinity@trinity.moe>
# Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
# Strictly POSIX-compliant false(1) implementation. See false(1p)
false "$@"
+11
View File
@@ -0,0 +1,11 @@
#!/bin/sh
# Copyright (c) 2024 DTB <trinity@trinity.moe>
# Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
# SPDX-License-Identifier: FSFAP
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and this
# notice are preserved. This file is offered as-is, without any warranty.
# Strictly POSIX-compliant true(1) implementation. See true(1p)
true "$@"
+17 -3
View File
@@ -9,16 +9,30 @@
set -e set -e
export BIN=build/bin
if ! ls Makefile >/dev/null 2>&1 if ! ls Makefile >/dev/null 2>&1
then then
printf '%s: Run this script in the root of the project.\n' "$0" 1>&2 printf '%s: Run this script in the root of the project.\n' "$0" 1>&2
exit 1 exit 1
fi fi
printf "Starting POSIX compatibility testing.\n" printf "Starting Bonsai testing.\n\n"
for utility in tests/posix/*; do for script in tests/bonsai/*.sh; do
printf '%s: %s: Testing utility.\n' "$0" "$utility" export UTIL="$(printf '%s\n' "$script" \
| sed -e 's/\.sh//g' -e 's;tests\/bonsai\/;;g')"
printf '%s: %s: Testing utility.\n' "$0" "$UTIL"
"$script"
printf '\n'
done
printf "Starting POSIX compatibility testing.\n\n"
for test in tests/posix/*.sh; do
export PATH="$BIN:$PATH"
printf '%s: %s: Testing utility.\n' "$0" "$test"
"$utility" "$utility"
printf '\n' printf '\n'
done done