From da681e6b4d55f5148fca747d86348d486c15ec62 Mon Sep 17 00:00:00 2001 From: Alexandre Duret-Lutz Date: Tue, 11 Jan 2022 22:19:20 +0100 Subject: [PATCH] dot: improve output to work around GraphViz bug The related GraphViz issue is https://gitlab.com/graphviz/graphviz/-/issues/2179 * spot/twaalgos/dot.cc: Avoid initial newline in title. * NEWS: Mention the bug. * tests/core/det.test, tests/core/dstar.test, tests/core/neverclaimread.test, tests/python/automata-io.ipynb: Adjust test cases. --- NEWS | 3 +++ spot/twaalgos/dot.cc | 13 +++++++++++-- tests/core/det.test | 4 ++-- tests/core/dstar.test | 8 ++++---- tests/core/neverclaimread.test | 4 ++-- tests/python/automata-io.ipynb | 2 +- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/NEWS b/NEWS index 80c4a2ed1..735a6798e 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,9 @@ New in spot 2.10.2.dev (not yet released) 32 states due to an optimization of the determinization being unintentionally disabled. + - Work around GraphViz bug #2179 by avoiding unnecessary empty + lines in the acceptance conditions shown in dot. + New in spot 2.10.2 (2021-12-03) Bugs fixed: diff --git a/spot/twaalgos/dot.cc b/spot/twaalgos/dot.cc index 9d8c16d91..7f2511f28 100644 --- a/spot/twaalgos/dot.cc +++ b/spot/twaalgos/dot.cc @@ -1,5 +1,5 @@ // -*- coding: utf-8 -*- -// Copyright (C) 2011, 2012, 2014-2021 Laboratoire de Recherche +// Copyright (C) 2011, 2012, 2014-2022 Laboratoire de Recherche // et Développement de l'Epita (LRDE). // Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6), // département Systèmes Répartis Coopératifs (SRC), Université Pierre @@ -626,7 +626,16 @@ namespace spot std::string accstr = aut_->acc().name("d"); if (accstr.empty()) return; - os_ << nl_ << '[' << accstr << ']'; + // If a name or an acceptance formula was printed, + // we need to add a newline before the human version of the acceptance. + // + // We used to always add that line, but on unnamed Büchi + // automata with double circles, this would (1) create an + // empty line, and (2) run into the following GraphViz bug: + // https://gitlab.com/graphviz/graphviz/-/issues/2179 + if (name_ || !dcircles_) + os_ << nl_; + os_ << '[' << accstr << ']'; } void diff --git a/tests/core/det.test b/tests/core/det.test index 4c24b14b6..d6f76226e 100755 --- a/tests/core/det.test +++ b/tests/core/det.test @@ -1,6 +1,6 @@ #!/bin/sh # -*- coding: utf-8 -*- -# Copyright (C) 2013-2021 Laboratoire de Recherche et Développement de +# Copyright (C) 2013-2022 Laboratoire de Recherche et Développement de # l'Epita (LRDE). # # This file is part of Spot, a model checking library. @@ -113,7 +113,7 @@ run 0 ../ikwiad -x -DC 'GFa & XGFb' > out.tgba cat >ex.tgba <expected <expected < stdout cat >expected <[Büchi]>\n", + " label=<[Büchi]>\n", " labelloc=\"t\"\n", " node [shape=\"circle\"]\n", " node [style=\"filled\", fillcolor=\"#ffffaa\"]\n",