Skip to content

Commit f5f2831

Browse files
author
Ahmed R. Mohamed
committed
ord: fix issue #7816 testing changes
The fix commit had linting errors, and the test placement was wrong. Now the test runs in ctest and bazel test. Also, the test is more verbose in output. Signed-off-by: Ahmed R. Mohamed <[email protected]>
1 parent 656d91d commit f5f2831

File tree

6 files changed

+51
-48
lines changed

6 files changed

+51
-48
lines changed

src/Main.cc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -313,9 +313,8 @@ int main(int argc, char* argv[])
313313
#ifdef ENABLE_READLINE
314314
static int tclReadlineInit(Tcl_Interp* interp)
315315
{
316-
std::array<const char*, 2> readline_cmds = {
317-
"ord::setup_tclreadline",
318-
"::tclreadline::Loop"};
316+
std::array<const char*, 2> readline_cmds
317+
= {"ord::setup_tclreadline", "::tclreadline::Loop"};
319318

320319
for (auto cmd : readline_cmds) {
321320
if (TCL_ERROR == Tcl_Eval(interp, cmd)) {

src/OpenRoad.tcl

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -587,16 +587,16 @@ proc parse_list_args { cmd arg_var list_var lists_args } {
587587
}
588588
}
589589

590-
proc cmd_args_completer {part start end line} {
591-
if { $start == 0 || [catch {set cmd [::tclreadline::Lindex $line 0]} err] != 0 } {
592-
utl::redirectStringBegin
593-
set err [catch {::tclreadline::ScriptCompleter $part $start $end $line} ret]
594-
utl::redirectStringEnd
595-
if { $err == 0} {
596-
return $ret
597-
} else {
598-
return ""
599-
}
590+
proc cmd_args_completer { part start end line } {
591+
if { $start == 0 || [catch { set cmd [::tclreadline::Lindex $line 0] } err] != 0 } {
592+
utl::redirectStringBegin
593+
set err [catch { ::tclreadline::ScriptCompleter $part $start $end $line } ret]
594+
utl::redirectStringEnd
595+
if { $err == 0 } {
596+
return $ret
597+
} else {
598+
return ""
599+
}
600600
}
601601
if { [info exists ::sta::cmd_args($cmd)] } {
602602
set metadata $::sta::cmd_args($cmd)
@@ -609,7 +609,7 @@ proc cmd_args_completer {part start end line} {
609609
set raw_files [glob -nocomplain -types {f d} -- "${part}*"]
610610
set files {}
611611
foreach f $raw_files {
612-
if {[file isdirectory $f]} {
612+
if { [file isdirectory $f] } {
613613
lappend files "${f}/"
614614
} else {
615615
lappend files $f
@@ -629,8 +629,8 @@ proc setup_tclreadline { } {
629629
::tclreadline::readline builtincompleter false
630630
catch { ::tclreadline::ScriptCompleter "" 0 0 "" }
631631
::tclreadline::readline customcompleter ::ord::cmd_args_completer
632-
proc ::tclreadline::prompt1 {} { return "openroad> " }
633-
proc ::tclreadline::prompt2 {} { return "...> " }
632+
proc ::tclreadline::prompt1 { } { return "openroad> " }
633+
proc ::tclreadline::prompt2 { } { return "...> " }
634634
}
635635

636636
# namespace ord

test/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ PASSFAIL_TESTS = [
5151
COMPULSORY_TESTS = [
5252
"error1",
5353
"get_core_die_areas",
54+
"issue_7816",
5455
"place_inst",
5556
"upf_test",
5657
"upf_aes",

test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ or_integration_tests(
33
TESTS
44
error1
55
get_core_die_areas
6+
issue_7816
67
place_inst
78
timing_api
89
timing_api_2

test/issue_7816.tcl

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
11
# Mock tclreadline
22
namespace eval ::tclreadline {
3-
proc Lindex {line index} {
4-
return [lindex $line $index]
5-
}
6-
7-
proc ScriptCompleter {part start end line} {
8-
# Simulate noisy output from ScriptCompleter to ensure it's suppressed
9-
puts "ScriptCompleter: [ERROR] Should be suppressed"
10-
error "ScriptCompleter Error"
11-
}
3+
proc Lindex { line index } {
4+
return [lindex $line $index]
5+
}
126

13-
proc RemoveUsedOptions {line flags} {
14-
# Default behavior: return flags as is
15-
return $flags
16-
}
7+
proc ScriptCompleter { part start end line } {
8+
# Simulate noisy output from ScriptCompleter to ensure it's suppressed
9+
puts "ScriptCompleter: [ERROR] Should be suppressed"
10+
error "ScriptCompleter Error"
11+
}
1712

18-
proc CompleteFromList {part matches} {
19-
set res {}
20-
foreach m $matches {
21-
if {[string match "${part}*" $m]} {
22-
lappend res $m
23-
}
13+
proc RemoveUsedOptions { line flags } {
14+
# Default behavior: return flags as is
15+
return $flags
16+
}
17+
18+
proc CompleteFromList { part matches } {
19+
set res {}
20+
foreach m $matches {
21+
if { [string match "${part}*" $m] } {
22+
lappend res $m
2423
}
25-
return $res
2624
}
25+
return $res
26+
}
2727
}
2828

29-
if {[info procs ::ord::cmd_args_completer] eq ""} {
29+
if { [info procs ::ord::cmd_args_completer] eq "" } {
3030
puts "Error: ::ord::cmd_args_completer not found."
3131
exit 1
3232
}
@@ -36,13 +36,13 @@ puts "Test 1: Command name completion 'read_db'"
3636
# We expect NO error to propagate (caught inside) and clean stdout (redirected).
3737
# Result should be "" (from catch block returning "")
3838
set result ""
39-
if { [catch {set result [::ord::cmd_args_completer "read_db" 0 7 "read_db"]} err] } {
39+
if { [catch { set result [::ord::cmd_args_completer "read_db" 0 7 "read_db"] } err] } {
4040
puts "FAIL: Test 1 threw error: $err"
4141
} else {
42-
if {$result eq ""} {
42+
if { $result eq "" } {
4343
puts "PASS: Test 1 returned empty (as expected for mock failure)"
4444
} else {
45-
puts "PASS: Test 1 returned: $result"
45+
puts "FAIL: Test 1 returned: $result"
4646
}
4747
}
4848

@@ -52,21 +52,25 @@ puts "\nTest 2: Argument completion 'read_db '"
5252
# Since we didn't mock glob, it will use real glob.
5353
# 'read_db' takes a file. cmd_args_completer logic does `glob`.
5454
set result ""
55-
if { [catch {set result [::ord::cmd_args_completer "" 8 8 "read_db "]} err] } {
55+
if { [catch { set result [::ord::cmd_args_completer "" 8 8 "read_db "] } err] } {
5656
puts "FAIL: Test 2 threw error: $err"
5757
} else {
5858
# It should return a list of files/dirs
59-
if {[llength $result] > 0} {
60-
puts "PASS: Test 2 returned list of length > 0"
59+
if { [llength $result] > 0 } {
60+
puts "PASS: Test 2 returned list of length > 0"
61+
} else {
62+
puts "FAIL: Test 2 returned list of length 0"
6163
}
6264
}
6365

6466
puts "\nTest 3: write_lef completion"
6567
# write_lef also takes filename.
66-
if { [catch {set result [::ord::cmd_args_completer "" 10 10 "write_lef "]} err] } {
68+
if { [catch { set result [::ord::cmd_args_completer "" 10 10 "write_lef "] } err] } {
6769
puts "FAIL: Test 3 threw error: $err"
6870
} else {
69-
if {[llength $result] > 0} {
70-
puts "PASS: Test 3 returned list of length > 0"
71+
if { [llength $result] > 0 } {
72+
puts "PASS: Test 3 returned list of length > 0"
73+
} else {
74+
puts "FAIL: Test 3 returned list of length 0"
7175
}
7276
}

test/regression_tests.tcl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,3 @@ record_flow_tests {
2424
record_test open_db $test_dir "compare_logfile" "-db gcd_sky130hd.odb"
2525
# For invalid DB, allow non-zero exit but require log to match ok
2626
record_test open_db_invalid $test_dir "compare_logfile_allow_error" "-db nonexistent_file.odb"
27-
28-
record_test issue_7816 $test_dir "compare_logfile"

0 commit comments

Comments
 (0)