# Copyright (C) 2017-2018 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GCC; see the file COPYING3. If not see # . # Immediately exit if we can't run target executables. if { ![isnative] } { return } proc unittest_list_modules { prog } { # Running the test runner without arguments prints a list of all # modules that have unittests compiled in. set result [libphobos_load "$prog" "" ""] return [lindex $result 1] } # Runs all unittests for each module compiled into the test program. proc unittest_run_tests { name prog } { foreach module [unittest_list_modules $prog] { set result [libphobos_load "$prog" "$module" ""] set status [lindex $result 0] $status "libphobos.unittests/$name/$module" } } proc unittester { name prog } { if [file exists $prog] { unittest_run_tests $name $prog } } # List of test runners. if [is-effective-target static] { unittester "druntime/static" "$objdir/../libdruntime/unittest_static$exeext" unittester "phobos/static" "$objdir/../src/unittest_static$exeext" } if [is-effective-target shared] { unittester "druntime/shared" "$objdir/../libdruntime/unittest$exeext" unittester "phobos/shared" "$objdir/../src/unittest$exeext" }