Overview
Comment: | Updated make test scripts tool to better embed TCL procedures and handle quoted data |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | crypto |
Files: | files | file ages | folders |
SHA3-256: |
e650e24320cfd832f922067f8cf74774 |
User & Date: | bohagan on 2024-03-10 04:27:18 |
Other Links: | branch diff | manifest | tags |
Context
2024-03-10
| ||
04:44 | Updated test comparisons to handle OpenSSL 3 format data check-in: ae4bd8026c user: bohagan tags: crypto | |
04:27 | Updated make test scripts tool to better embed TCL procedures and handle quoted data check-in: e650e24320 user: bohagan tags: crypto | |
01:27 | Windows makefile update to add realclean target and correct pkgIndex target check-in: ae7ba9d447 user: bohagan tags: crypto | |
Changes
Modified tests/info.csv from [54e33db43d] to [8ef01eecbc].
1 2 3 4 5 6 7 8 9 10 | # Group,Name,Constraints,Setup,Body,Cleanup,Match,Result,Output,Error Output,Return Codes command,package require tls,,,,,,,,, ,,,,,,,,,, command,# Make sure path includes location of OpenSSL executable,,,,,,,,, command,"if {[info exists ::env(OPENSSL)]} {set ::env(path) [string cat [file join $::env(OPENSSL) bin] "";"" $::env(path)]}",,,,,,,,, ,,,,,,,,,, command,# Constraints,,,,,,,,, command,source [file join [file dirname [info script]] common.tcl],,,,,,,,, ,,,,,,,,,, command,# Helper functions,,,,,,,,, | | > > > > > > > > > > > > > > > | > > > > > > > > > > > | > > > > > > > > > > > | > > > > > > > > > > > > > | > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | # Group,Name,Constraints,Setup,Body,Cleanup,Match,Result,Output,Error Output,Return Codes command,package require tls,,,,,,,,, ,,,,,,,,,, command,# Make sure path includes location of OpenSSL executable,,,,,,,,, command,"if {[info exists ::env(OPENSSL)]} {set ::env(path) [string cat [file join $::env(OPENSSL) bin] "";"" $::env(path)]}",,,,,,,,, ,,,,,,,,,, command,# Constraints,,,,,,,,, command,source [file join [file dirname [info script]] common.tcl],,,,,,,,, ,,,,,,,,,, command,# Helper functions,,,,,,,,, command,"proc lcompare {list1 list2} { set m """" set u """" foreach i $list1 { if {$i ni $list2} { lappend m $i } } foreach i $list2 { if {$i ni $list1} { lappend u $i } } return [list ""missing"" $m ""unexpected"" $u] } ",,,,,,,,, command,proc exec_get {delim args} {return [split [exec openssl {*}$args] $delim]},,,,,,,,, command,"proc exec_get_ciphers {} { set list [list] set data [exec openssl list -cipher-algorithms] foreach line [split $data ""\n""] { set line [string trim $line] foreach {cipher ptr alias} [split [string trim $line]] { lappend list [string tolower $cipher] } } return [lsort -unique $list] } ",,,,,,,,, command,"proc exec_get_digests {} { set list [list] set data [exec openssl dgst -list] foreach line [split $data ""\n""] { foreach digest $line { if {[string match ""-*"" $digest]} { lappend list [string trimleft $digest ""-""]} } } return [lsort $list] } ",,,,,,,,, command,"proc exec_get_pkeys {} { set list [list] set data [exec openssl list -public-key-methods] foreach line [split $data ""\n""] { set line [string trim $line] if {[string match ""Type:*"" $line]} continue lappend list [string trim $line] } return $list } ",,,,,,,,, command,proc exec_get_macs {} {return [list cmac hmac]},,,,,,,,, command,"proc list_tolower {list} { set result [list] foreach element $list { lappend result [string tolower $element] } return $result } ",,,,,,,,, ,,,,,,,,,, command,# Test list ciphers,,,,,,,,, Ciphers List,All,,,lcompare [lsort [exec_get_ciphers]] [list_tolower [lsort [::tls::ciphers]]],,,missing {rc5 rc5-cbc rc5-cfb rc5-ecb rc5-ofb} unexpected {aes-128-ccm aes-128-gcm aes-192-ccm aes-192-gcm aes-256-ccm aes-256-gcm},,, ,,,,,,,,,, command,# Test list ciphers for protocols,,,,,,,,, Ciphers By Protocol,SSL2,ssl2,,"lcompare [exec_get "":"" ciphers -ssl2] [::tls::ciphers ssl2]",,,missing {} unexpected {},,, Ciphers By Protocol,SSL3,ssl3,,"lcompare [exec_get "":"" ciphers -ssl3] [::tls::ciphers ssl3]",,,missing {} unexpected {},,, |
︙ | ︙ |
Modified tests/info.test from [9635e7beea] to [203c5a421e].
︙ | ︙ | |||
13 14 15 16 17 18 19 | # Make sure path includes location of OpenSSL executable if {[info exists ::env(OPENSSL)]} {set ::env(path) [string cat [file join $::env(OPENSSL) bin] ";" $::env(path)]} # Constraints source [file join [file dirname [info script]] common.tcl] # Helper functions | | > > > > > > > > > > > > > > > > > > > > > > > > > > | > > > > > > > > > > > | > > | > > > > > > > > | > > > > > > > | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | # Make sure path includes location of OpenSSL executable if {[info exists ::env(OPENSSL)]} {set ::env(path) [string cat [file join $::env(OPENSSL) bin] ";" $::env(path)]} # Constraints source [file join [file dirname [info script]] common.tcl] # Helper functions proc lcompare {list1 list2} { set m "" set u "" foreach i $list1 { if {$i ni $list2} { lappend m $i } } foreach i $list2 { if {$i ni $list1} { lappend u $i } } return [list "missing" $m "unexpected" $u] } proc exec_get {delim args} {return [split [exec openssl {*}$args] $delim]} proc exec_get_ciphers {} { set list [list] set data [exec openssl list -cipher-algorithms] foreach line [split $data "\n"] { set line [string trim $line] foreach {cipher ptr alias} [split [string trim $line]] { lappend list [string tolower $cipher] } } return [lsort -unique $list] } proc exec_get_digests {} { set list [list] set data [exec openssl dgst -list] foreach line [split $data "\n"] { foreach digest $line { if {[string match "-*" $digest]} { lappend list [string trimleft $digest "-"]} } } return [lsort $list] } proc exec_get_pkeys {} { set list [list] set data [exec openssl list -public-key-methods] foreach line [split $data "\n"] { set line [string trim $line] if {[string match "Type:*" $line]} continue lappend list [string trim $line] } return $list } proc exec_get_macs {} {return [list cmac hmac]} proc list_tolower {list} { set result [list] foreach element $list { lappend result [string tolower $element] } return $result } # Test list ciphers test Ciphers_List-1.1 {All} -body { lcompare [lsort [exec_get_ciphers]] [list_tolower [lsort [::tls::ciphers]]] } -result {missing {rc5 rc5-cbc rc5-cfb rc5-ecb rc5-ofb} unexpected {aes-128-ccm aes-128-gcm aes-192-ccm aes-192-gcm aes-256-ccm aes-256-gcm}} |
︙ | ︙ |
Modified tests/make_test_files.tcl from [e265399d3c] to [862f168c9a].
1 2 | # # Name: Make Test Files From CSV Files | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | | | < | < < < < < < < < < < < < < < < < < > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | # # Name: Make Test Files From CSV Files # Version: 0.3 # Date: March 9, 2024 # Author: Brian O'Hagan # Email: [email protected] # Legal Notice: (c) Copyright 2020 by Brian O'Hagan # Released under the Apache v2.0 license. I would appreciate a copy of any modifications # made to this package for possible incorporation in a future release. # # # Parse CSV line # proc parse_csv {ch data} { set buffer "" set result [list] set start 0 set end [string length $data] while {$start < $end} { if {[string index $data $start] eq "\""} { # Quoted if {[set index [string first "\"" $data [incr start]]] > -1} { set next [string index $data [expr {$index + 1}]] if {$next eq "\""} { # Quote append buffer [string range $data $start $index] set start [incr index] } else { # End of quoted data append buffer [string range $data $start [incr index -1]] set start [incr index 3] lappend result $buffer set buffer "" } } else { # Multi-line append buffer [string range $data $start end] "\n" gets $ch new set data "\"" append data $new set start 0 set end [string length $data] } } else { # Not quoted, so no embedded NL, quotes, or commas set index [string first "," $data $start] if {$index > -1} { lappend result [string range $data $start [incr index -1]] set start [incr index 2] } else { lappend result [string range $data $start end] set start [string length $data] } } } return $result } # # Convert test case file into test files # proc process_config_file {filename} { set prev "" set test 0 # Open file with test case indo set in [open $filename r] array set cases [list] # Open output test file set out [open [format %s.test [file rootname $filename]] w] array set cases [list] # Add setup commands to test file puts $out [format "# Auto generated test cases for %s" [file tail $filename]] #puts $out [format "# Auto generated test cases for %s created on %s" [file tail $filename] [clock format [clock seconds]]] # Package requires puts $out "\n# Load Tcl Test package" puts $out [subst -nocommands {if {[lsearch [namespace children] ::tcltest] == -1} {\n\tpackage require tcltest\n\tnamespace import ::tcltest::*\n}\n}] puts $out {set auto_path [concat [list [file dirname [file dirname [info script]]]] $auto_path]} puts $out "" # Generate test cases and add to test file while {[gets $in data] > -1} { # Skip comments set data [string trim $data] if {[string match "#*" $data]} continue # Split comma separated fields with quotes set list [parse_csv $in $data] # Get command or test case foreach {group name constraints setup body cleanup match result output errorOutput returnCodes} $list { if {$group eq "command"} { puts $out $name } elseif {$group ne "" && $body ne ""} { set group [string map [list " " "_"] $group] if {$group ne $prev} { incr test set prev $group puts $out "" } # Test case if {[string index $name 0] ne {$}} { set buffer [format "\ntest %s-%d.%d {%s}" $group $test [incr cases($group)] $name] } else { set buffer [format "\ntest %s-%d.%d %s" $group $test [incr cases($group)] $name] } foreach opt [list -constraints -setup -body -cleanup -match -result -output -errorOutput -returnCodes] { set cmd [string trim [set [string trimleft $opt "-"]]] if {$cmd ne ""} { if {$opt in [list -setup -body -cleanup]} { append buffer " " $opt " \{\n" foreach line [split $cmd ";"] { append buffer \t [string trim $line] \n |
︙ | ︙ | |||
119 120 121 122 123 124 125 126 127 128 | close $in } # # Call script # foreach file [glob *.csv] { process_config_file $file } exit | > | 154 155 156 157 158 159 160 161 162 163 164 | close $in } # # Call script # foreach file [glob *.csv] { puts $file process_config_file $file } exit |