diff --git a/.github/workflows/demo.yml b/.github/workflows/demo.yml index 271bdc7..bf869db 100644 --- a/.github/workflows/demo.yml +++ b/.github/workflows/demo.yml @@ -30,7 +30,7 @@ jobs: - name: Demo output on openconfig/public continue-on-error: true run: | - OCDIR=~/tmp/public pytests/pattern_test.sh + OCDIR=~/tmp/public find "$OCDIR/regexp-tests" -name "*.yang" -print0 | xargs -0 pytests/pattern_test.sh posix-pattern: name: posix-pattern statement @@ -60,4 +60,4 @@ jobs: - name: Demo output on openconfig/public continue-on-error: true run: | - go run gotests/main.go -model-root ~/tmp/public testdata/regexp-test.yang + find "$OCDIR/regexp-tests" -name "*.yang" -print0 | xargs -0 go run gotests/main.go -model-root ~/tmp/public diff --git a/pytests/pattern_test.sh b/pytests/pattern_test.sh index 22a7dc6..6c3f556 100755 --- a/pytests/pattern_test.sh +++ b/pytests/pattern_test.sh @@ -6,11 +6,16 @@ if [ -z $OCDIR ]; then echo "\$OCDIR not given, using default: $OCDIR" fi +if [ $# -eq 0 ]; then + echo "No regex test files supplied as an argument." + exit 1 +fi + TEST_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" REPO_DIR="$TEST_DIR/.." tmpstderr=$(mktemp) -pyang -p $OCDIR -p "$REPO_DIR/testdata" --msg-template="| {line} | {msg} |" --plugindir "$REPO_DIR/pytests/plugins" --check-patterns "$REPO_DIR/testdata/regexp-test.yang" 2> $tmpstderr +pyang -p $OCDIR --msg-template="| {line} | {msg} |" --plugindir "$REPO_DIR/pytests/plugins" --check-patterns $@ 2> $tmpstderr retcode=$? if [ $retcode -ne 0 ]; then >&2 echo "| Line # | typedef | error |" diff --git a/testdata/regexp-test.yang b/testdata/regexp-test.yang deleted file mode 100644 index 36940e5..0000000 --- a/testdata/regexp-test.yang +++ /dev/null @@ -1,168 +0,0 @@ -module regexp-test { - prefix "rt"; - namespace "urn:openconfig-regexp-test"; - - import pattern-test { prefix "pt"; } - import openconfig-bgp-types { prefix "ocbgpt"; } - import openconfig-inet-types { prefix "ocinet"; } - import openconfig-packet-match-types { prefix "oc-pkt-match-types"; } - - leaf ipv4-address { - type ocinet:ipv4-address; - pt:pattern-test-pass "255.255.255.255"; - pt:pattern-test-pass "0.0.0.0"; - pt:pattern-test-pass "1.1.1.1"; - pt:pattern-test-fail "256.255.255.255"; - pt:pattern-test-fail "1.1.1.256"; - pt:pattern-test-fail "256.1.1.1%eth0"; - } - leaf ipv4-address-zoned { - type ocinet:ipv4-address-zoned; - pt:pattern-test-pass "255.1.1.1%eth0"; - pt:pattern-test-pass "255.255.255.255%eth1"; - pt:pattern-test-pass "0.0.0.0%PoRt3"; - pt:pattern-test-pass "1.1.1.1%FOX10_mouse5"; - pt:pattern-test-fail "255.1.1.1%"; - pt:pattern-test-fail "255.255.255.255"; - pt:pattern-test-fail "0.0.0.0"; - pt:pattern-test-fail "1.1.1.1"; - pt:pattern-test-fail "256.255.255.255"; - pt:pattern-test-fail "1.1.1.256"; - pt:pattern-test-fail "256.1.1.1%eth0"; - } - leaf ip-address { - type ocinet:ip-address; - pt:pattern-test-pass "255.255.255.255"; - pt:pattern-test-pass "2001:db8::1"; - pt:pattern-test-fail "invalid-data"; - pt:pattern-test-pass "::1"; - } - leaf bgp-std-community { - type ocbgpt:bgp-std-community-type; - pt:pattern-test-pass "15169:42"; - pt:pattern-test-pass "6643:21438"; - pt:pattern-test-pass "29636:4444"; - pt:pattern-test-pass "65535:65535"; - pt:pattern-test-pass "0:0"; - pt:pattern-test-fail "65536:1"; - pt:pattern-test-fail "1:65536"; - pt:pattern-test-fail "425353:comm"; - } - leaf bgp-ext-community { - type ocbgpt:bgp-ext-community-type; - // Type 1 extended communities (2b AS: 4b integer) - pt:pattern-test-pass "29636:10"; - pt:pattern-test-pass "5413:4294967295"; - pt:pattern-test-pass "4445:0"; - pt:pattern-test-fail "1273:4294967296"; - pt:pattern-test-pass "2856:400"; - pt:pattern-test-fail "5400:invalid"; - pt:pattern-test-fail "i6643:10"; - pt:pattern-test-pass "15169:22432"; - // Type 2 extended communities: (4b IP: 2b integer) - pt:pattern-test-fail "1.1.1.1:4294967296"; - pt:pattern-test-fail "1.2.3.4.5:10"; - pt:pattern-test-pass "82.42.12.35:65535"; - pt:pattern-test-fail "82.42.12.35:66536"; - pt:pattern-test-fail "254.254.256.254:10"; - pt:pattern-test-pass "0.0.0.0:200"; - pt:pattern-test-fail "leading192.0.2.1:65535"; - // 4b AS : 2b integer - pt:pattern-test-fail "4294967296:65535"; - pt:pattern-test-pass "4294967295:65535"; - pt:pattern-test-pass "0:65535"; - pt:pattern-test-pass "4294967295:0"; - pt:pattern-test-fail "4294967296:0"; - // Route Target Type 1 - route-target:<2b AS>:<4b local> - pt:pattern-test-fail "route-target:64"; - pt:pattern-test-pass "route-target:65535:10"; - pt:pattern-test-fail "route-TARGET:65535:10"; - pt:pattern-test-fail "route-target:15169:4294967296"; - pt:pattern-test-pass "route-target:15169:4294967295"; - // Route Target Type 2 - route-target::<2b local> - pt:pattern-test-fail "route-target:256.0.2.36:10"; - pt:pattern-test-pass "route-target:192.0.2.1:10"; - pt:pattern-test-fail "route-target:192.0.2.1:65536"; - // Route Target w/ 4B AS:<2b local> - pt:pattern-test-pass "route-target:4294967295:10"; - pt:pattern-test-fail "route-target:4294967296:10"; - pt:pattern-test-pass "route-target:5413:65535"; - // Route Origin Type 1 - route-target:<2b AS>:<4b local> - pt:pattern-test-fail "route-origin:53"; - pt:pattern-test-pass "route-origin:65535:10"; - pt:pattern-test-fail "route-ORIGINTRAIL:65535:10"; - pt:pattern-test-fail "route-origin:15169:4294967296"; - pt:pattern-test-pass "route-origin:15169:4294967295"; - // Route Origin Type 2 - route-target::<2b local> - pt:pattern-test-fail "route-origin:512.0.2.36:10"; - pt:pattern-test-pass "route-origin:10.18.253.24:10"; - pt:pattern-test-fail "route-origin:192.168.1.1:65536"; - // Route Origin w/ 4B AS:<2b local> - pt:pattern-test-pass "route-origin:4294967295:5353"; - pt:pattern-test-fail "route-origin:4294967296:9009"; - pt:pattern-test-pass "route-origin:5413:65535"; - } - leaf ipv6-address { - type ocinet:ipv6-address; - pt:pattern-test-pass "2620::1000:3202:23e:e1ff:fec7:7112"; - pt:pattern-test-pass "fe80::23e:e1ff:fec7:7112"; - pt:pattern-test-fail "fe80::23e:NOTVALID:fec7:7112"; - pt:pattern-test-fail "FFFF::NOTE::FFFF"; - pt:pattern-test-fail "FFFF::1::42"; - } - leaf ipv4-prefix { - type ocinet:ipv4-prefix; - pt:pattern-test-pass "0.0.0.0/0"; - pt:pattern-test-pass "255.255.255.255/32"; - pt:pattern-test-fail "256.0.0.0/31"; - pt:pattern-test-pass "1.2.3.0/24"; - pt:pattern-test-fail "1.2.3.4/33"; - } - leaf ipv6-prefix { - type ocinet:ipv6-prefix; - pt:pattern-test-pass "::/0"; - pt:pattern-test-pass "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF/128"; - pt:pattern-test-fail "FFFF:FFFF:FFFF:NOTVALID:FFFF:FFFF:FFFF:FFFF/64"; - pt:pattern-test-pass "2001:DB8::/32"; - pt:pattern-test-fail "2001:4C20::/129"; - } - leaf ip-prefix { - type ocinet:ip-prefix; - pt:pattern-test-pass "0.0.0.0/0"; - pt:pattern-test-pass "192.0.2.1/32"; - pt:pattern-test-fail "192.0.2.2/33"; - pt:pattern-test-pass "FE80::CAFE/128"; - pt:pattern-test-fail "FE81::CAFE:DEAD:BEEF/129"; - } - leaf domain-name { - type ocinet:domain-name; - pt:pattern-test-pass "ambroseesorbma"; - pt:pattern-test-fail "ambrose esorbma"; - pt:pattern-test-pass "claire."; - pt:pattern-test-fail "~~~-+=."; - pt:pattern-test-fail "ambrose esorbma"; - pt:pattern-test-pass "012345678901234567890123456789012345678901234567890123456789012."; - pt:pattern-test-fail "0123456789012345678901234567890123456789012345678901234567890123"; - } - leaf port-num-range { - type oc-pkt-match-types:port-num-range; - pt:pattern-test-pass "0..0"; - pt:pattern-test-pass "00000..00000"; - pt:pattern-test-pass "00..00"; - pt:pattern-test-pass "01..01"; - pt:pattern-test-pass "0..65535"; - pt:pattern-test-pass "01111..09999"; - pt:pattern-test-pass "9999..59999"; - pt:pattern-test-pass "60536..60999"; - pt:pattern-test-pass "60999..61999"; - pt:pattern-test-pass "62999..63999"; - pt:pattern-test-pass "64999..65535"; - pt:pattern-test-fail "65535..66646"; - pt:pattern-test-fail "65535..65536"; - pt:pattern-test-fail "65535..65545"; - pt:pattern-test-fail "65535..65635"; - pt:pattern-test-fail "66535..65535"; - pt:pattern-test-fail "66999..67890"; - pt:pattern-test-fail "70000..70000"; - } -}