0

Team, how can i get rid of 't' in the insertion that am performing? and is there a better way?

my usecase is am generating a bazel coverage report and that report is test.dat which am converting to dat.xml using the lcov_cobertura enter link description here after conversion xml fiel is missing a node for which am using sed to insert it back in manually because i don't know why it is missed.

I have no clue why it is not inserting that line or missing to insert. so i need help in inserting it but i see an extra t being inserted which is used for tab space.

raw bazel output test.dat is

DA:931,0
LH:129
LF:693
end_of_record
TN:
SF:src/common/test.go
DA:10,0
DA:11,0
DA:12,0
DA:13,0
DA:14,0
DA:15,0
DA:17,0
DA:18,0
DA:19,0
DA:20,0
DA:22,0
LH:0
LF:11
end_of_record
TN:
SF:src/common/test.go
DA:9,1

below is the xml file generated after using lcov_cobertura

convert using lcov_cobertura test.dat -o coverage.xml cat coverage.xml < missing the src/common/test.go on line 8. so for now am manually inserting it with sed and it is showing char t in begining of line. please advise

<?xml version="1.0" ?>
<!DOCTYPE coverage
  SYSTEM 'http://cobertura.sourceforge.net/xml/coverage-04.dtd'>
<coverage branch-rate="0.0" branches-covered="0" branches-valid="0" complexity="0" line-rate="0.5423496311641774" lines-covered="77492" lines-valid="142882" timestamp="1677260258" version="1">
                <file branch-rate="0.0" complexity="0" path="src/common/test.go" line-rate="0.0" name="src.common.test.go">
                        <lineToCover branch="false" covered="false" lineNumber="15"/>
<lineToCover branch="false" covered="false" lineNumber="445"/>
                                                <lineToCover branch="false" covered="false" lineNumber="446"/>
                                </file>
                                <file branch-rate="0.0" complexity="0" path="src/common/test.go" line-rate="0.18614718614718614" name="src.common.test.go">
                                                <lineToCover branch="false" covered="true" lineNumber="68"/>
                                                <lineToCover branch="false" covered="false" lineNumber="929"/>
                                                <lineToCover branch="false" covered="false" lineNumber="931"/>
                                </file>
                                                <lineToCover branch="false" covered="false" lineNumber="10"/>
                                                <lineToCover branch="false" covered="false" lineNumber="11"/>
                                                <lineToCover branch="false" covered="false" lineNumber="22"/>
                                </file>
                                <file branch-rate="0.0" complexity="0" path="src/common/test.go" line-rate="0.8055555555555556" name="src.common.test.go">
                                                <lineToCover branch="false" covered="true" lineNumber="9"/>
                                                <lineToCover branch="false" covered="true" lineNumber="10"/>
                                                <lineToCover branch="false" covered="true" lineNumber="45"/>
                                                <lineToCover branch="false" covered="true" lineNumber="46"/>
                                </file>
                                <file branch-rate="0.0"
                        <lineToCover branch="false" covered="true" lineNumber="121"/>
                        <lineToCover branch="false" covered="true" lineNumber="122"/>
                </file>
</coverage>

expected output see the insertion at line 8 below <file branch-rate=0.0 complexity=0 path=src/common/test.go.... this insertion i did with sed but it is also inserting t. how to avoid that?

<?xml version="1.0" ?>
<!DOCTYPE coverage
  SYSTEM 'http://cobertura.sourceforge.net/xml/coverage-04.dtd'>
<coverage branch-rate="0.0" branches-covered="0" branches-valid="0" complexity="0" line-rate="0.5423496311641774" lines-covered="77492" lines-valid="142882" timestamp="1677260258" version="1">
                <file branch-rate="0.0" complexity="0" path="src/common/test.go" line-rate="0.0" name="src.common.test.go">
                        <lineToCover branch="false" covered="false" lineNumber="15"/>
<lineToCover branch="false" covered="false" lineNumber="445"/>
                                                <lineToCover branch="false" covered="false" lineNumber="446"/>
                                </file>
                                <file branch-rate="0.0" complexity="0" path="src/common/test.go" line-rate="0.18614718614718614" name="src.common.test.go">
                                                <lineToCover branch="false" covered="false" lineNumber="445"/>
                                                <lineToCover branch="false" covered="false" lineNumber="446"/>
                                </file>
                                <file branch-rate="0.0" complexity="0" path="src/common/test.go" line-rate="0.18614718614718614" name="src.common.test.go">
                                                <lineToCover branch="false" covered="true" lineNumber="68"/>
                                                <lineToCover branch="false" covered="false" lineNumber="929"/>
                                                <lineToCover branch="false" covered="false" lineNumber="931"/>
t                               <file branch-rate=0.0 complexity=0 path=src/common/test.go line-rate=0.8055555555555556 name=src.common.test.go>
                                </file>
                                                <lineToCover branch="false" covered="false" lineNumber="10"/>
                                                <lineToCover branch="false" covered="false" lineNumber="11"/>
                                                <lineToCover branch="false" covered="false" lineNumber="22"/>
                                </file>
                                <file branch-rate="0.0" complexity="0" path="src/common/test.go" line-rate="0.8055555555555556" name="src.common.test.go">
                                                <lineToCover branch="false" covered="true" lineNumber="9"/>
                                                <lineToCover branch="false" covered="true" lineNumber="10"/>
                                                <lineToCover branch="false" covered="true" lineNumber="45"/>
                                                <lineToCover branch="false" covered="true" lineNumber="46"/>
                                </file>
                                <file branch-rate="0.0"
                        <lineToCover branch="false" covered="true" lineNumber="121"/>
                        <lineToCover branch="false" covered="true" lineNumber="122"/>
                </file>
</coverage>



my commands are

var=$(grep -e "</file>" test.xml -A 1 -n | grep "<lineToCover" -A 1 -B 1 | sed -n '1p' | cut -d':' -f 1)
sed -i "${var} i \t\t\t\t\tNEWS" test.xml
string_me="<file branch-rate="0.0" complexity="0" path="src/common/test.go" line-rate="0.8055555555555556" name="src.common.test.go">"
sed -i "${var} i \t\t\t\t\t${string_me}" c.xml && cat c.xml
AhmFM
  • 1,552
  • 3
  • 23
  • 53
  • 1
    Please post valid XML. – Cyrus Feb 26 '23 at 22:59
  • 3
    Please [Don't Parse XML/HTML With Regex.](https://stackoverflow.com/a/1732454/3776858) I suggest to use an XML/HTML parser (xmlstarlet, xmllint ...). – Cyrus Feb 26 '23 at 22:59
  • added xml file, i stripped middle sections to make it short. secondly, i am not sure if I can use tools you are referring because my case is there could be a bug where a node line is not being generated by `lcov_cobertura` so as a work around i am inserting it. but if you think it is doable using your suggested tools please provide complete solution as am newbie. thanks. – AhmFM Feb 27 '23 at 05:06

0 Answers0