From d5844cbbf9720d7c8969e8e247731d355a6c8bd14ea06c0448adccbaa4a26026 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Mon, 22 Dec 2025 18:26:03 +0300 Subject: [PATCH] Initial integration tests --- dsc | 2 +- t/add-get-del.t | 36 ++++++++++++++ t/add-traversal.t | 13 +++++ t/bin.t | 22 +++++++++ t/check-ipv4-prefixlen.t | 29 +++++++++++ t/check-ipv6-prefixlen.t | 29 +++++++++++ t/check-mtu.t | 26 ++++++++++ t/export.t | 103 +++++++++++++++++++++++++++++++++++++++ t/list.t | 37 ++++++++++++++ t/revert.t | 71 +++++++++++++++++++++++++++ t/set-get.t | 31 ++++++++++++ 11 files changed, 398 insertions(+), 1 deletion(-) create mode 100755 t/add-get-del.t create mode 100755 t/add-traversal.t create mode 100755 t/bin.t create mode 100755 t/check-ipv4-prefixlen.t create mode 100755 t/check-ipv6-prefixlen.t create mode 100755 t/check-mtu.t create mode 100755 t/export.t create mode 100755 t/list.t create mode 100755 t/revert.t create mode 100755 t/set-get.t diff --git a/dsc b/dsc index 19326db..f336f36 100755 --- a/dsc +++ b/dsc @@ -306,7 +306,7 @@ switch [lindex $argv 0] { } revert { catch {file delete -force $Stash/$opt} - exec {*}[list cp -a $Saved/$opt $Stash/$opt] + catch {exec {*}[list cp -a $Saved/$opt $Stash/$opt]} } commit { file delete -force $Saved.bak diff --git a/t/add-get-del.t b/t/add-get-del.t new file mode 100755 index 0000000..34b3209 --- /dev/null +++ b/t/add-get-del.t @@ -0,0 +1,36 @@ +#!/bin/sh + +test_description="$(basename $0)" +. $SHARNESS_TEST_SRCDIR/sharness.sh +export DSC_SCHEMA=$SHARNESS_TEST_DIRECTORY/../schema +PATH=$SHARNESS_TEST_DIRECTORY/..:$PATH +export DSC_STASH=stash + +set -f +test_expect_success "foo !has" "! dsc has srv/foo" +test_expect_success "bar !has" "! dsc has srv/bar" +test_expect_success "baz !has" "! dsc has srv/baz" +test_expect_success "foo add" "dsc add srv/foo" +test_expect_success "foo exists" "[ -d $DSC_STASH/srv/foo ]" +test_expect_success "foo has" "dsc has srv/foo" +test_expect_success "bar add" "dsc add srv/bar" +test_expect_success "bar exists" "[ -d $DSC_STASH/srv/bar ]" +test_expect_success "bar has" "dsc has srv/bar" +test_expect_success "baz add" "dsc add srv/baz" +test_expect_success "baz exists" "[ -d $DSC_STASH/srv/baz ]" +test_expect_success "baz has" "dsc has srv/baz" +test_expect_success "get *" "dsc get srv/* >out" +echo bar >expected +echo baz >>expected +echo foo >>expected +test_expect_success "get * out" "test_cmp out expected" +test_expect_success "foo del" "dsc del srv/foo" +test_expect_success "foo !exists" "! [ -d $DSC_STASH/srv/foo ]" +test_expect_success "get *" "dsc get srv/* >out" +echo bar >expected +echo baz >>expected +test_expect_success "del * out" "dsc del srv" +test_expect_success "get *" "dsc get srv/* >out" +test_expect_success "get * out" "! [ -s out ]" + +test_done diff --git a/t/add-traversal.t b/t/add-traversal.t new file mode 100755 index 0000000..625070b --- /dev/null +++ b/t/add-traversal.t @@ -0,0 +1,13 @@ +#!/bin/sh + +test_description="$(basename $0)" +. $SHARNESS_TEST_SRCDIR/sharness.sh +export DSC_SCHEMA=$SHARNESS_TEST_DIRECTORY/../schema +PATH=$SHARNESS_TEST_DIRECTORY/..:$PATH +export DSC_STASH=stash + +test_expect_success "traversal bad" "! dsc add net/foo/addr/::1234" +test_expect_success "net add" "dsc add net/foo" +test_expect_success "traversal ok" "dsc add net/foo/addr/::1234" + +test_done diff --git a/t/bin.t b/t/bin.t new file mode 100755 index 0000000..69dd69d --- /dev/null +++ b/t/bin.t @@ -0,0 +1,22 @@ +#!/bin/sh + +test_description="$(basename $0)" +. $SHARNESS_TEST_SRCDIR/sharness.sh +export DSC_SCHEMA=$SHARNESS_TEST_DIRECTORY/../schema +PATH=$SHARNESS_TEST_DIRECTORY/..:$PATH +export DSC_STASH=stash DSC_SAVED=saved +mkdir saved + +dd if=/dev/urandom of=prv bs=64 count=1 2>/dev/null +test_expect_success "set" "dsc set ssh/prv out" +test_expect_success "cmp" "test_cmp out prv" +test_expect_success "commit" "dsc commit" +test_expect_success "export" "dsc export >out" +test_expect_success "has base64" "grep -q :base64 out" +test_expect_success "del *" 'dsc del ""' +test_expect_success "import" "dsc import out" +test_expect_success "cmp" "test_cmp out prv" + +test_done diff --git a/t/check-ipv4-prefixlen.t b/t/check-ipv4-prefixlen.t new file mode 100755 index 0000000..8872368 --- /dev/null +++ b/t/check-ipv4-prefixlen.t @@ -0,0 +1,29 @@ +#!/bin/sh + +test_description="$(basename $0)" +. $SHARNESS_TEST_SRCDIR/sharness.sh + +opt=net/foo/addr/1.2.3.4/prefixlen + +echo >in +test_expect_success "default: ok" \ + "$DSC_SCHEMA/net/*/addr/*/prefixlen/check $opt out 2>&1" +test_expect_success "default: expected" '[ "$(cat out)" = 24 ]' + +echo 20 >in +test_expect_success "20: ok" \ + "$DSC_SCHEMA/net/*/addr/*/prefixlen/check $opt in +test_expect_success "dead fails" \ + "! $DSC_SCHEMA/net/*/addr/*/prefixlen/check $opt in +test_expect_success "0: fails" \ + "! $DSC_SCHEMA/net/*/addr/*/prefixlen/check $opt in +test_expect_success "33: fails" \ + "! $DSC_SCHEMA/net/*/addr/*/prefixlen/check $opt in +test_expect_success "default: ok" \ + "$DSC_SCHEMA/net/*/addr/*/prefixlen/check $opt out 2>&1" +test_expect_success "default: expected" '[ "$(cat out)" = 64 ]' + +echo 80 >in +test_expect_success "80: ok" \ + "$DSC_SCHEMA/net/*/addr/*/prefixlen/check $opt in +test_expect_success "dead fails" \ + "! $DSC_SCHEMA/net/*/addr/*/prefixlen/check $opt in +test_expect_success "0: fails" \ + "! $DSC_SCHEMA/net/*/addr/*/prefixlen/check $opt in +test_expect_success "129: fails" \ + "! $DSC_SCHEMA/net/*/addr/*/prefixlen/check $opt in +test_expect_success "default: ok" \ + "$DSC_SCHEMA/net/*/mtu/check $opt out 2>&1" +test_expect_success "default: expected" '[ "$(cat out)" = 1500 ]' + +echo dead >in +test_expect_success "dead fails" \ + "! $DSC_SCHEMA/net/*/mtu/check $opt in +test_expect_success "0: fails" \ + "! $DSC_SCHEMA/net/*/mtu/check $opt in +test_expect_success "68k: fails" \ + "! $DSC_SCHEMA/net/*/mtu/check $opt got" +read addr got" +read addr got" +read addr got" + +test_expect_success "note" 'dsc set sys/note "hello +world +"' + +test_expect_success "diff" "dsc diff >out" +perl -i -npe 's/^--- (\S+).*$/--- $1/' out +perl -i -npe 's/^\+\+\+ (\S+).*$/+++ $1/' out +perl -i -ne 'print unless /^@/' out +cat >expected <out" +cat >expected <out" +cat >expected <out" +cat >expected <out" +cat >expected <out" +diffpp out +cat >expected <out" +diffpp out +cat >expected <out" +diffpp out +cat >expected <out" +test_expect_success "cmp" "! [ -s out ]" + +test_done diff --git a/t/set-get.t b/t/set-get.t new file mode 100755 index 0000000..14e64ca --- /dev/null +++ b/t/set-get.t @@ -0,0 +1,31 @@ +#!/bin/sh + +test_description="$(basename $0)" +. $SHARNESS_TEST_SRCDIR/sharness.sh +export DSC_SCHEMA=$SHARNESS_TEST_DIRECTORY/../schema +PATH=$SHARNESS_TEST_DIRECTORY/..:$PATH +export DSC_STASH=stash + +test_expect_success "non-existent set" "! dsc set sys/non-existent" + +test_expect_success "hostname set" "dsc set sys/hostname mein" +test_expect_success "hostname get" "dsc get sys/hostname >out" +echo mein >expected +test_expect_success "hostname get out" "test_cmp out expected" +test_expect_success "hostname del" 'dsc set sys/hostname ""' +test_expect_success "hostname get" "dsc get sys/hostname >out" +echo unknown >expected +test_expect_success "hostname get out" "test_cmp out expected" + +test_expect_success "note set" 'dsc set sys/note "hello +world +"' +test_expect_success "note get" "dsc get sys/note >out" +echo hello >expected +echo world >>expected +test_expect_success "note get out" "test_cmp out expected" +test_expect_success "note del" 'dsc set sys/note ""' +test_expect_success "note get" "dsc get sys/note >out" +test_expect_success "note get out" "! [ -s out ]" + +test_done -- 2.52.0