Skip to content

Commit

Permalink
Diff add -y parameter (#1555)
Browse files Browse the repository at this point in the history
* add new -y parameter, bump version, adopt tests, WIP

* Update diff.xml

* Update diff.xml

* add unified option with integer

* fix another missing template

* adjust command and input/output sections and add tests

* increment version suffix

* re-add profile

* handle diff exit-code 1

* add a comment

* typo

---------

Co-authored-by: Bjoern Gruening <bjoern.gruening@gmail.com>
Co-authored-by: Björn Grüning <bjoern@gruenings.eu>
  • Loading branch information
3 people authored Dec 9, 2024
1 parent 35f23ea commit 1a6c4a7
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 23 deletions.
80 changes: 57 additions & 23 deletions tools/diff/diff.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<tool id="diff" name="diff" version="@TOOL_VERSION@+galaxy@GALAXY_VERSION@">
<tool id="diff" name="diff" version="@TOOL_VERSION@+galaxy@GALAXY_VERSION@" profile="23.0">
<description>analyzes two files and generates an unidiff text file with information about the differences and an optional Html report</description>
<macros>
<token name="@TOOL_VERSION@">3.7</token>
<token name="@TOOL_VERSION@">3.10</token>
<token name="@GALAXY_VERSION@">0</token>
</macros>
<requirements>
Expand All @@ -13,10 +13,18 @@
<regex match="diff: memory exhausted" source="stdout" level="fatal_oom" description="Out of memory error occurred"/>
</stdio>
<command><![CDATA[
diff -u '$input1' '$input2' > '$diff_file';
#if $generate_report:
diff
#if $report_format.report_format_select == 'txt_lines' or $report_format.report_format_select == 'html'
## the -u option is needed to convert the output later to HTML
--unified=$report_format.unified
#else if $report_format.report_format_select == 'txt_columns'
-y
#end if
## If the compared input files differ the diff command returns exit-code 1
'$input1' '$input2' > '$diff_file' || [ \$? -eq 1 ];
#if $report_format.report_format_select == 'html'
sed -e 's/@@title@@/Diff report for "$input1.element_identifier" and "$input2.element_identifier"/g'
-e 's/@@outputformat@@/'$output_format'/g'
-e 's/@@outputformat@@/'$report_format.output_format'/g'
-e '/@@diffoutput@@/{r'$diff_file'' -e ';d}'
'$__tool_directory__/template.html' > '$html_file'
#end if
Expand All @@ -25,33 +33,50 @@
<inputs>
<param name="input1" type="data" format="txt" label="First input file"/>
<param name="input2" type="data" format="txt" label="Second input file"/>
<param name="generate_report" type="boolean" checked="true" truevalue="true" falsevalue="false" label="Generate HTML report" help="Generates an HTML report to visualize the differences"/>
<param name="output_format" type="select" label="Choose report output format" help="Displays the differences in the report using the selected format. Either line by line or side by side.">
<option value="side-by-side">Side by side</option>
<option value="line-by-line">Line by line</option>
</param>
<conditional name="report_format">
<param name="report_format_select" type="select" label="Choose a report format">
<option value="txt_lines">Text file, line-by-line (-u)</option>
<option value="txt_columns">Text file, side-by-side (-y)</option>
<option value="html">Generates an HTML report to visualize the differences</option>
</param>
<when value="txt_lines">
<param argument="--unified" type="integer" min="0" value="3" label="Output this amount of lines of unified context"/>
</when>
<when value="txt_columns"/>
<when value="html">
<param argument="--unified" type="integer" min="0" value="3" label="Output this amount of lines of unified context"/>
<param name="output_format" type="select" label="Choose report output format" help="Displays the differences in the report using the selected format. Either line by line or side by side.">
<option value="side-by-side">Side by side</option>
<option value="line-by-line">Line by line</option>
</param>
</when>
</conditional>
</inputs>
<outputs>
<data format="txt" name="diff_file" from_work_dir="output.txt" label="${tool.name} on ${on_string}: Raw Output"/>
<data format="html" name="html_file" from_work_dir="output.html" label="${tool.name} on ${on_string}: Html Report">
<filter>generate_report is True</filter>
<filter>report_format['report_format_select'] == 'html'</filter>
</data>
</outputs>
<tests>
<test expect_exit_code="0" expect_failure="false" expect_num_outputs="1">
<param name="input1" value="file1.txt"/>
<param name="input2" value="file1.txt"/>
<param name="generate_report" value="false"/>
<conditional name="report_format">
<param name="report_format_select" value="txt_lines"/>
</conditional>
<output name="diff_file">
<assert_contents>
<has_n_lines n="0"/>
</assert_contents>
</output>
</test>
<test expect_exit_code="1" expect_failure="false" expect_num_outputs="1">
<test expect_exit_code="0" expect_failure="false" expect_num_outputs="1">
<param name="input1" value="file1.txt"/>
<param name="input2" value="file2.txt"/>
<param name="generate_report" value="false"/>
<conditional name="report_format">
<param name="report_format_select" value="txt_lines"/>
</conditional>
<output name="diff_file">
<assert_contents>
<has_n_lines n="5"/>
Expand All @@ -63,7 +88,9 @@
<test expect_exit_code="0" expect_failure="false" expect_num_outputs="2">
<param name="input1" value="file1.txt"/>
<param name="input2" value="file2.txt"/>
<param name="generate_report" value="true"/>
<conditional name="report_format">
<param name="report_format_select" value="html"/>
</conditional>
<output name="html_file">
<assert_contents>
<has_text text="!DOCTYPE html"/>
Expand All @@ -73,8 +100,10 @@
<test expect_exit_code="0" expect_failure="false" expect_num_outputs="2">
<param name="input1" value="file1.txt"/>
<param name="input2" value="file2.txt"/>
<param name="generate_report" value="true"/>
<param name="output_format" value="side-by-side"/>
<conditional name="report_format">
<param name="report_format_select" value="html"/>
<param name="output_format" value="side-by-side"/>
</conditional>
<output name="html_file">
<assert_contents>
<has_text text="!DOCTYPE html"/>
Expand All @@ -85,8 +114,10 @@
<test expect_exit_code="0" expect_failure="false" expect_num_outputs="2">
<param name="input1" value="file1.txt"/>
<param name="input2" value="file2.txt"/>
<param name="generate_report" value="true"/>
<param name="output_format" value="line-by-line"/>
<conditional name="report_format">
<param name="report_format_select" value="html"/>
<param name="output_format" value="line-by-line"/>
</conditional>
<output name="html_file">
<assert_contents>
<has_text text="!DOCTYPE html"/>
Expand All @@ -95,9 +126,12 @@
</output>
</test>
<test expect_exit_code="0" expect_failure="false" expect_num_outputs="2">
<param name="input1" value="file 3.txt"/>
<param name="input2" value="file 3.txt"/>
<param name="generate_report" value="true"/>
<param name="input1" value="file3.txt"/>
<param name="input2" value="file3.txt"/>
<conditional name="report_format">
<param name="report_format_select" value="html"/>
<param name="output_format" value="side-by-side"/>
</conditional>
<output name="diff_file">
<assert_contents>
<has_n_lines n="0"/>
Expand Down Expand Up @@ -169,4 +203,4 @@ An **optional** *HTML report* with a friendlier visual representation of the dif
}
</citation>
</citations>
</tool>
</tool>
File renamed without changes.
2 changes: 2 additions & 0 deletions tools/diff/test-data/output_test4.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
a a
> b

0 comments on commit 1a6c4a7

Please sign in to comment.