Как получить имя тестового файла из тестового файла в TCL - PullRequest
0 голосов
/ 07 ноября 2018

Как вы получаете имя тестового файла, из которого выполняется тест? Я не могу найти ответ на этот вопрос после проверки Google. Для уточнения:

test mytest-1.1 {
   my test tests ... 
} -body {
    # Command to get name of file we're currently in.
} -result 0

Я пошел, чтобы получить имя файла .test, в котором я сейчас нахожусь, где находится комментарий.

Примечание: это не повторяющийся вопрос, поскольку мне не нужно название теста, а скорее имя файла теста.

1 Ответ

0 голосов
/ 07 ноября 2018

Это небольшое расширение к тому, что уже описано в Как получить название теста TCL из самого теста . Изучите документацию info frame и обратите внимание на запись file кадров исходного типа:

[dict get $frameInfo file]

Расширенный пример:

package req tcltest

proc example {} {
    for {set i 1} {$i<=[info frame]} {incr i} {
    set frameInfo [info frame $i]
    set frameType [dict get $frameInfo type]
    set cmd [dict get $frameInfo cmd]

    if {$frameType eq "source" && [lindex $cmd 0] eq "tcltest::test"} {
        puts $frameInfo
        puts "Called from [lindex $cmd 1] defined in '[dict get $frameInfo file]'"
        return ok
    }
    }

    return notok

}

tcltest::test foo-1.1 {testing the foo} {
    example
} ok

Обновление

Для того, чтобы распечатать только один файл с самым внутренним значением (source 'd), вы также можете просто позвонить [info script] или использовать информацию о кадре, полученную из [info frame 0] изнутри тестовое тело.

tcltest::test foo-1.1 {testing the foo} {
    puts [info script]
    # puts [dict get [info frame 0] file]; # context dependent
} ok
...