From 4d00002daec95664cd88a1ac987b91df3d28e71d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Tue, 1 Jun 2021 02:08:06 +0200
Subject: [PATCH 01/20] Update cutadapt first round

---
 tools/cutadapt/cutadapt.xml                   | 314 +++++++++++-------
 tools/cutadapt/macros.xml                     |  50 ++-
 tools/cutadapt/test-data/A1.fastq.gz          | Bin 348 -> 340 bytes
 tools/cutadapt/test-data/A2.fastq.gz          | Bin 334 -> 326 bytes
 .../test-data/cutadapt_nextseq_out.fq.gz      | Bin 11712 -> 12158 bytes
 tools/cutadapt/test-data/cutadapt_out1.fq.gz  | Bin 11934 -> 54684 bytes
 tools/cutadapt/test-data/cutadapt_out2.fq.gz  | Bin 12009 -> 54666 bytes
 .../cutadapt/test-data/cutadapt_small_cut.out |  12 +
 .../test-data/cutadapt_small_rename.out       |  12 +
 .../test-data/cutadapt_trimmed.out.gz         | Bin 537 -> 537 bytes
 .../test-data/cutadapt_untrimmed.out.gz       | Bin 11648 -> 12095 bytes
 tools/cutadapt/test-data/unknown.fastq.gz     | Bin 191 -> 173 bytes
 12 files changed, 247 insertions(+), 141 deletions(-)
 create mode 100644 tools/cutadapt/test-data/cutadapt_small_cut.out
 create mode 100644 tools/cutadapt/test-data/cutadapt_small_rename.out

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index aebcd3d2d6a..1fb98d550b6 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -1,12 +1,11 @@
-<tool id="cutadapt" name="Cutadapt" version="1.16.9" profile="17.09">
+<tool id="cutadapt" name="Cutadapt" version="@TOOL_VERSION@+@GALAXY_TOOL_VERSION@" profile="20.01">
     <description>Remove adapter sequences from Fastq/Fasta</description>
     <macros>
         <import>macros.xml</import>
     </macros>
-    <requirements>
-        <requirement type="package" version="1.16">cutadapt</requirement>
-    </requirements>
-
+    <expand macro='edam_ontology' />
+    <expand macro='requirements' />
+    <expand macro='xrefs'/>
     <version_command>cutadapt --version</version_command>
 
     <command detect_errors="exit_code"><![CDATA[
@@ -18,20 +17,20 @@
 #set paired = False
 #set library_type = str($library.type)
 #if $library_type == 'paired':
-#set paired = True
-#set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.element_identifier))
-#set read2 = re.sub('[^\w\-\s]', '_', str($library.input_2.element_identifier))
-#set input_1 = $library.input_1
-#set input_2 = $library.input_2
+    #set paired = True
+    #set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.element_identifier))
+    #set read2 = re.sub('[^\w\-\s]', '_', str($library.input_2.element_identifier))
+    #set input_1 = $library.input_1
+    #set input_2 = $library.input_2
 #else if $library_type == 'paired_collection'
-#set paired = True
-#set input_1 = $library.input_1.forward
-#set input_2 = $library.input_1.reverse
-#set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.name)) + "_1"
-#set read2 = re.sub('[^\w\-\s]', '_', str($library.input_1.name)) + "_2"
+    #set paired = True
+    #set input_1 = $library.input_1.forward
+    #set input_2 = $library.input_1.reverse
+    #set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.name)) + "_1"
+    #set read2 = re.sub('[^\w\-\s]', '_', str($library.input_1.name)) + "_2"
 #else
-#set input_1 = $library.input_1
-#set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.element_identifier))
+    #set input_1 = $library.input_1
+    #set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.element_identifier))
 #end if
 
 #if $input_1.is_of_type("fastq.gz", "fastqsanger.gz"):
@@ -72,20 +71,17 @@ ln -f -s '${input_1}' '$read1' &&
 
 ## Run Cutadapt
 
-#if $output_options.multiple_output:
+#if 'multiple_output' in $output_selector:
     mkdir split &&
 #end if
 
 cutadapt
 
-## cutadapt (up to version 1.16) can't be run in multicore mode with these options
-#if not any(($output_options.info_file, $output_options.rest_file, $output_options.wildcard_file, $output_options.too_short_file, $output_options.too_long_file, $output_options.untrimmed_file))
-     -j \${GALAXY_SLOTS:-1}
-#end if
+-j=\${GALAXY_SLOTS:-1}
 
 #if str( $library.type ) == "single":
     @read1_options@
-    #if $output_options.multiple_output:
+    #if 'multiple_output' in $output_selector:
         --output='split/{name}.${input_1.ext}'
     #else:
         --output='$out1'
@@ -103,20 +99,25 @@ cutadapt
 #end if
 
 --error-rate=$adapter_options.error_rate
---times=$adapter_options.count
+--times=$adapter_options.times
 --overlap=$adapter_options.overlap
 $adapter_options.no_indels
 $adapter_options.match_read_wildcards
-$adapter_options.no_trim
-$adapter_options.mask_adapter
+--action=$adapter_options.action
+$adapter_options.revcomp
 
-$filter_options.discard
+$filter_options.discard_trimmed
 $filter_options.discard_untrimmed
-#if str($filter_options.min):
-    --minimum-length=$filter_options.min
+
+#if str($filter_options.minimum_options.minimum_r2):
+    --minimum-length=$filter_options.minimum_length:$filter_options.minimum_options.value_minimum
+#elif str($filter_options.minimum_length)
+    --minimum-length=$filter_options.minimum_length
 #end if
-#if str($filter_options.max):
-    --maximum-length=$filter_options.max
+#if str($filter_options.maximum_options.maximum_r2):
+    --maximum-length=$filter_options.maximum_length:$filter_options.maximum_options.value_maximum
+#elif str($filter_options.maximum_length)
+    --maximum-length=$filter_options.maximum_length
 #end if
 #if str($filter_options.max_n):
     --max-n=$filter_options.max_n
@@ -126,6 +127,9 @@ $filter_options.discard_untrimmed
         --pair-filter=$filter_options.pair_filter
     #end if
 #end if
+#if str($filter_options.max_expected_errors):
+    --max-expected-errors=$filter_options.max_expected_errors
+#end if
 
 
 #if str($read_mod_options.quality_cutoff) != '0':
@@ -135,25 +139,27 @@ $filter_options.discard_untrimmed
     --nextseq-trim=$read_mod_options.nextseq_trim
 #end if
 $read_mod_options.trim_n
-#if $read_mod_options.prefix != '':
-    --prefix='$read_mod_options.prefix'
-#end if
-#if $read_mod_options.suffix != '':
-    --suffix='$read_mod_options.suffix'
-#end if
 #if str($read_mod_options.length) != '0':
     --length=$read_mod_options.length
 #end if
 #if $read_mod_options.length_tag != '':
     --length-tag='$read_mod_options.length_tag'
 #end if
+#if $read_mod_options.cut != '0':
+    --cut=$read_mod_options.cut
+#end if
+#if $read_mod_options.rename != '':
+    --rename='$read_mod_options.rename'
+#end if
+$read_mod_options.zero_cap
+
 
 '${read1}'
 #if $paired:
     '${read2}'
 #end if
 
-#if $output_options.report:
+#if 'report' in $output_selector:
     > report.txt
 #end if
     ]]></command>
@@ -187,128 +193,157 @@ $read_mod_options.trim_n
 
         <!-- Adapter Options -->
         <section name="adapter_options" title="Adapter Options">
-            <param name="error_rate" argument="--error-rate" type="float" min="0" max="1" value="0.1" label="Maximum error rate" help="Maximum allowed error rate (no. of errors divided by the length of the matching region)." />
-            <param name="no_indels" argument="--no-indels" type="boolean" value="False" truevalue="--no-indels" falsevalue="" label="Do not allow indels (Use ONLY with anchored 5' (front) adapters)." help="Do not allow indels in the alignments. That is, allow only mismatches. This option is currently only supported for anchored 5' adapters ('^ADAPTER') (default: both mismatches and indels are allowed)." />
-            <param name="count" argument="--times" type="integer" min="1" value="1" label="Match times" help="Try to remove adapters at most COUNT times. Useful when an adapter gets appended multiple times." />
-            <param name="overlap" argument="--overlap" type="integer" min="1" value="3" label="Minimum overlap length" help="Minimum overlap length. If the overlap between the adapter and the sequence is shorter than LENGTH, the read is not modified. This reduces the number of bases trimmed purely due to short random adapter matches." />
+            <param name="action" type="select" label="What to do if a match is found">
+                <option value="trim" selected="True">Trim: trim adapter and upstream or downstream sequence</option>
+                <option value="retain">Retain: the read is trimmed, but the adapter sequence is not removed</option>
+                <option value="mask">Mask: madapters with 'N' characters instead of trimming them</option>
+                <option value="lowercase">Lowercase: convert to lowercase</option>
+                <option value="none">None: leave unchanged</option>
+            </param>
+            <param argument="--error-rate" type="float" min="0" max="1" value="0.1" label="Maximum error rate" help="Maximum allowed error rate (no. of errors divided by the length of the matching region)." />
+            <param argument="--no-indels" type="boolean" value="False" truevalue="--no-indels" falsevalue="" label="Do not allow indels (Use ONLY with anchored 5' (front) adapters)." help="Do not allow indels in the alignments. That is, allow only mismatches. This option is currently only supported for anchored 5' adapters ('^ADAPTER') (default: both mismatches and indels are allowed)." />
+            <param argument="--times" type="integer" min="1" value="1" label="Match times" help="Try to remove adapters at most COUNT times. Useful when an adapter gets appended multiple times." />
+            <param argument="--overlap" type="integer" min="1" value="3" label="Minimum overlap length" help="Minimum overlap length. If the overlap between the adapter and the sequence is shorter than LENGTH, the read is not modified. This reduces the number of bases trimmed purely due to short random adapter matches." />
             <param name="match_read_wildcards" type="select"  label="Match Wildcards" help="Allow 'N's as matches. Default: In the adapters but not in the reads">
                 <option value=" " selected="True">In the adapters but not in the reads</option>
                 <option value="--match-read-wildcards">In the adapters and in the reads</option>
                 <option value="--no-match-adapter-wildcards">Nowhere</option>
             </param>
-            <param name="no_trim" argument="--no-trim" type="boolean" value="False" truevalue="--no-trim" falsevalue="" label="Do not trim adapters" help="Match and redirect reads to output/untrimmed-output as usual, but don't remove the adapters (default: trim the adapters)." />
-            <param name="mask_adapter" argument="--mask-adapter" type="boolean" value="False" truevalue="--mask-adapter" falsevalue="" label="Mask Adapters" help="Mask adapter bases with 'N' instead of trimming them (default: trim adapters)." />
+            <param argument="--revcomp" type="boolean" value="False" truevalue="--revcomp" falsevalue="" label="Look for adapters in the reverse complement" help="Check both the read and its reverse complement for adapter matches. If match is on reverse-complemented version, output that one. Default: check only read." />
+
         </section>
 
         <!-- Filter Options -->
         <section name="filter_options" title="Filter Options">
-            <param name="discard" argument="--discard-trimmed" type="boolean" value="False" truevalue="--discard-trimmed" falsevalue="" label="Discard Trimmed Reads" help="Discard reads that contain the adapter instead of trimming them. Use the 'Minimum overlap length' option in order to avoid throwing away too many randomly matching reads!" />
-            <param name="discard_untrimmed" argument="--discard_untrimmed" type="boolean" value="False" truevalue="--discard-untrimmed" falsevalue="" label="Discard Untrimmed Reads" help="Discard reads that do not contain the adapter." />
-            <param name="min" argument="--minimum-length" type="integer" min="0" optional="True" value="" label="Minimum length" help="Discard trimmed reads that are shorter than LENGTH.  Reads that are too short even before adapter removal are also discarded. In colorspace, an initial primer is not counted." />
-            <param name="max" argument="--maximum-length" type="integer" min="0" optional="True" value="" label="Maximum length" help="Discard trimmed reads that are longer than LENGTH.  Reads that are too long even before adapter removal are also discarded. In colorspace, an initial primer is not counted." />
-            <param name="max_n" argument="--max-n" type="float" min="0" optional="True" label="Max N" help="Discard reads with more than this number of 'N' bases. A number between 0 and 1 is interpreted as a fraction of the read length." />
-            <param name="pair_filter" argument="--pair-filter" type="select" optional="True" label="Pair filter" help="Which of the reads in a paired-end read have to match the filtering criterion in order for the pair to be filtered. Default: any">
+            <param argument="--discard-trimmed" type="boolean" value="False" truevalue="--discard-trimmed" falsevalue="" label="Discard Trimmed Reads" help="Discard reads that contain the adapter instead of trimming them. Use the 'Minimum overlap length' option in order to avoid throwing away too many randomly matching reads!" />
+            <param argument="--discard_untrimmed" type="boolean" value="False" truevalue="--discard-untrimmed" falsevalue="" label="Discard Untrimmed Reads" help="Discard reads that do not contain the adapter." />
+            <param argument="--minimum-length" type="integer" min="0" optional="True" value="" label="Minimum length" help="Discard trimmed reads that are shorter than LENGTH.  Reads that are too short even before adapter removal are also discarded. In colorspace, an initial primer is not counted." />
+            <conditional name="minimum_options">
+                <param name="minimum_r2" type="select" label="Specify a minimum length for reverse reads (R2)" help="When trimming paired-end reads, the minimum lengths for R1 and R2 can be specified separately. If not provided, the same minimum length applies to both reads.">
+                    <option value="true">Enable</option>
+                    <option value="" selected="True">Disable</option>
+                </param>
+                <when value="true">
+                    <param name="value_minimum" type="integer" min="0" optional="True" value="" label="Minimum length" />
+                </when>
+                <when value="">
+                </when>
+            </conditional>
+            <param argument="--maximum-length" type="integer" min="0" optional="True" value="" label="Maximum length" help="Discard trimmed reads that are longer than LENGTH.  Reads that are too long even before adapter removal are also discarded. In colorspace, an initial primer is not counted." />
+            <conditional name="maximum_options">
+                <param name="maximum_r2" type="select" label="Specify a maximum length for reverse reads (R2)" help="When trimming paired-end reads, the maximum lengths for R1 and R2 can be specified separately. If not provided, the same maximum length applies to both reads.">
+                    <option value="true">Enable</option>
+                    <option value="" selected="True">Disable</option>
+                </param>
+                <when value="true">
+                    <param name="value_maximum" type="integer" min="0" optional="True" value="" label="Maximum length" />
+                </when>
+                <when value="">
+                </when>
+            </conditional>                
+            <param argument="--max-n" type="float" min="0" optional="True" label="Max N" help="Discard reads with more than this number of 'N' bases. A number between 0 and 1 is interpreted as a fraction of the read length." />
+            <param argument="--pair-filter" type="select" optional="True" label="Pair filter" help="Which of the reads in a paired-end read have to match the filtering criterion in order for the pair to be filtered. Default: any">
                 <option value="any" selected="True">any</option>
                 <option value="both">both</option>
             </param>
+            <param argument="--max-expected-errors" type="integer" min="0" optional="True" value="" label="Max expected errors" help="Discard reads whose expected number of errors (computed from quality values) exceeds this value." />
+            <param argument="--discard-cassava" type="boolean" truevalue="--discard-cassava" falsevalue="" checked="False" label="Discard CASAVA filtering" help="Discard reads that did not pass CASAVA filtering (header has :Y:)." />
         </section>
 
         <!-- Read Modification Options -->
         <section name="read_mod_options" title="Read Modification Options">
-            <param name="quality_cutoff" argument="--quality-cutoff" type="text" value="0" label="Quality cutoff" help=" Trim low-quality bases from 5' and/or 3' ends of each read before adapter removal. Applied to both reads if data is paired. If one value is given, only the 3' end is trimmed. If two comma-separated cutoffs are given, the 5' end is trimmed with the first cutoff, the 3' end with the second.">
+            <param argument="--quality-cutoff" type="text" value="0" label="Quality cutoff" help=" Trim low-quality bases from 5' and/or 3' ends of each read before adapter removal. Applied to both reads if data is paired. If one value is given, only the 3' end is trimmed. If two comma-separated cutoffs are given, the 5' end is trimmed with the first cutoff, the 3' end with the second.">
                 <sanitizer>
                     <valid initial="string.digits"><add value="," /></valid>
                 </sanitizer>
             </param>
-            <param name="nextseq_trim" argument="--nextseq-trim" type="integer" value="0" label="NextSeq trimming" help="Experimental option for quality trimming of NextSeq data. This is necessary because that machine cannot distinguish between G and reaching the end of the fragment (it encodes G as ‘black’). This option works like regular quality trimming (where one would use -q 20 instead), except that the qualities of G bases are ignored." />
-            <param name="trim_n" argument="--trim-n" type="boolean" truevalue="--trim-n" falsevalue="" checked="False" label="Trim Ns" help="Trim N's on ends of reads." />
-            <param name="prefix" argument="--prefix" label="Prefix" type="text" help="Add this prefix to read names" />
-            <param name="suffix" argument="--suffix" label="Suffix" type="text" help="Add this suffix to read names" />
-            <param name="strip_suffix" argument="--strip-suffix" label="Strip suffix" type="text" help="Remove this suffix from read names if present." />
-            <param name="length" argument="--length" type="integer" value="0" label="Length" help="Shorten reads to this length. This modification is applied after adapter trimming." />
-            <param name="length_tag" argument="--length-tag" label="Length Tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." />
+            <param argument="--nextseq-trim" type="integer" value="0" label="NextSeq trimming" help="Experimental option for quality trimming of NextSeq data. This is necessary because that machine cannot distinguish between G and reaching the end of the fragment (it encodes G as ‘black’). This option works like regular quality trimming (where one would use -q 20 instead), except that the qualities of G bases are ignored." />
+            <param argument="--trim-n" type="boolean" truevalue="--trim-n" falsevalue="" checked="False" label="Trim Ns" help="Trim N's on ends of reads." />
+            <param argument="--strip-suffix" label="Strip suffix" type="text" help="Remove this suffix from read names if present." />
+            <param argument="--length" type="integer" value="0" label="Length" help="Shorten reads to this length. This modification is applied after adapter trimming." />
+            <param argument="--length-tag" label="Length Tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." />
+            <param argument="--rename" label="Rename reads" type="text" help="This option can be used to rename both single-end and paired-end reads. " />
+            <param argument="--cut" label="Remove a fixed number of bases" type="integer" min="-100" max="100" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." />
+            <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" />
         </section>
 
         <!-- Output Options -->
-        <section name="output_options" title="Output Options">
-            <param name="report" type="boolean" value="False" label="Report" help="Cutadapt's per-adapter statistics. You can use this file with MultiQC."/>
-            <param name="info_file" argument="--info-file" type="boolean" value="False" label="Info File" help="Write information about each read and its adapter matches to a file."/>
-            <param name="rest_file" argument="--rest-file" type="boolean" value="False" label="Rest of Read" help="When the adapter matches in the middle of a read, write the rest (after the adapter) into a file."/>
-            <param name="wildcard_file" argument="--wildcard-file" type="boolean" value="False" label="Wildcard File" help="When the adapter has wildcard bases ('N's) write adapter bases matching wildcard positions to file."/>
-            <param name="too_short_file" argument="--too-short-output" type="boolean" value="False" label="Too Short Reads" help="Write reads that are too short (according to minimum length specified) to a file. (default: discard reads)"/>
-            <param name="too_long_file" argument="--too-long-output" type="boolean" value="False" label="Too Long Reads" help="Write reads that are too long (according to maximum length specified) to a file. (default: discard reads)"/>
-            <param name="untrimmed_file" argument="--untrimmed-output" type="boolean" value="False" label="Untrimmed Reads" help="Write reads that do not contain the adapter to a separate file, instead of writing them to the regular output file.  (default: output to same file as trimmed)"/>
-            <param name="multiple_output" argument="" type="boolean" value="False" label="Multiple output" help="Create a separate file for each adapter trimmed  (default: all trimmed reads are in a single file)"/>
-        </section>
-
+        <param name="output_selector" type="select" multiple="True" display="checkboxes" label="Outputs selector">
+            <option value="report">Report: Cutadapt's per-adapter statistics. You can use this file with MultiQC.</option>
+            <option value="info_file">Info file: write information about each read and its adapter matches.</option>
+            <option value="rest_file">Rest of read: when the adapter matches in the middle of a read, write the rest (after the adapter).</option>
+            <option value="wildcard_file">Wildcard file: when the adapter has wildcard bases (Ns) write adapter bases matching wildcard positions.</option>
+            <option value="too_short_file">Too short reads: write reads that are too short according to minimum length specified (default: discard reads).</option>
+            <option value="too_long_file">Too long reads: write reads that are too long (according to maximum length specified)</option>
+            <option value="untrimmed_file">Untrimmed reads: write reads that do not contain the adapter to a separate file, instead of writing them to the regular output file (default: output to same file as trimmed)</option>
+            <option value="multiple_output">Multiple output: create a separate file for each adapter trimmed (default: all trimmed reads are in a single file)</option>
+        </param>
     </inputs>
 
     <outputs>
         <data name="out1" format="fastqsanger" metadata_source="input_1" from_work_dir="out1*" label="${tool.name} on ${on_string}: Read 1 Output">
-            <filter>(output_options['multiple_output'] is False and library['type'] != 'paired_collection')</filter>
+            <filter>library['type'] != 'paired_collection' and 'multiple_output' not in output_selector</filter>
             <expand macro="inherit_format_1" />
         </data>
+
         <data name="out2" format="fastqsanger" metadata_source="input_2" from_work_dir="out2*" label="${tool.name} on ${on_string}: Read 2 Output" >
-            <filter>(output_options['multiple_output'] is False and library['type'] == 'paired')</filter>
+            <filter>library['type'] == 'paired' and 'multiple_output' not in output_selector</filter>
             <expand macro="inherit_format_2" />
         </data>
 
         <collection name="out_pairs" type="paired" format_source="input_1" label="${tool.name} on ${on_string}: Reads">
-            <filter>(output_options['multiple_output'] is False and library['type'] == 'paired_collection')</filter>
+            <filter>library['type'] == 'paired_collection' and 'multiple_output' not in output_selector</filter>
         </collection>
-
+        
         <data name="report" format="txt" from_work_dir="report.txt" label="${tool.name} on ${on_string}: Report">
-            <filter>(output_options['report'] is True)</filter>
+            <filter>output_selector and 'report' in output_selector</filter>
         </data>
-
         <data  name="info_file" format="txt" metadata_source="input_1" label="${tool.name} on ${on_string}: Info File" >
-            <filter>(output_options['info_file'] is True)</filter>
+            <filter>output_selector and 'info_file' in output_selector</filter>
         </data>
 
         <data name="rest_output" format="fastqsanger" metadata_source="input_1" from_work_dir="rest_output*" label="${tool.name} on ${on_string}: Rest of Reads (R1 only)" >
-            <filter>(output_options['rest_file'] is True)</filter>
+            <filter>output_selector and 'rest_file' in output_selector</filter>
             <expand macro="inherit_format_1" />
         </data>
 
         <data name="wild_output" format="txt" metadata_source="input_1" from_work_dir="wild_output*" label="${tool.name} on ${on_string}: Wildcard File" >
-            <filter>(output_options['wildcard_file'] is True)</filter>
+            <filter>output_selector and 'wildcard_file' in output_selector</filter>
         </data>
 
         <data name="untrimmed_output" format="fastqsanger" metadata_source="input_1" from_work_dir="untrimmed_output*" label="${tool.name} on ${on_string}: Untrimmed Read 1" >
-            <filter>(output_options['untrimmed_file'] is True)</filter>
+            <filter>output_selector and 'untrimmed_file' in output_selector</filter>
             <expand macro="inherit_format_1" />
         </data>
         <data name="untrimmed_paired_output" format="fastqsanger" metadata_source="input_2" from_work_dir="untrimmed_paired_output*" label="${tool.name} on ${on_string}: Untrimmed Read 2" >
-            <filter>(library['type'] == 'paired' or library['type'] == 'paired_collection')</filter>
-            <filter>(output_options['untrimmed_file'] is True)</filter>
+            <filter>library['type'] == 'paired' or library['type'] == 'paired_collection'</filter>
+            <filter>output_selector and 'untrimmed_file' in output_selector </filter>
             <expand macro="inherit_format_2" />
         </data>
 
         <data name="too_short_output" format="fastqsanger" metadata_source="input_1" from_work_dir="too_short_output*" label="${tool.name} on ${on_string}: Too Short Read 1" >
-            <filter>(output_options['too_short_file'] is True)</filter>
+            <filter>output_selector and 'too_short_file' in output_selector</filter>
             <expand macro="inherit_format_1" />
         </data>
         <data name="too_short_paired_output" format="fastqsanger" metadata_source="input_2" from_work_dir="too_short_paired_output*" label="${tool.name} on ${on_string}: Too Short Read 2" >
-            <filter>(library['type'] == 'paired' or library['type'] == 'paired_collection')</filter>
-            <filter>(output_options['too_short_file'] is True)</filter>
+            <filter>library['type'] == 'paired' or library['type'] == 'paired_collection'</filter>
+            <filter>output_selector and 'too_short_file' in output_selector</filter>
             <expand macro="inherit_format_2" />
         </data>
-
         <data name="too_long_output" format="fastqsanger" metadata_source="input_1" from_work_dir="too_long_output*" label="${tool.name} on ${on_string}: Too Long Read 1" >
-            <filter>(output_options['too_long_file'] is True)</filter>
+            <filter>output_selector and 'too_long_file' in output_selector</filter>
             <expand macro="inherit_format_1" />
         </data>
         <data name="too_long_paired_output" format="fastqsanger" metadata_source="input_2" from_work_dir="too_long_paired_output*" label="${tool.name} on ${on_string}: Too Long Read 2" >
-            <filter>(library['type'] == 'paired' or library['type'] == 'paired_collection')</filter>
-            <filter>(output_options['too_long_file'] is True)</filter>
+            <filter>library['type'] == 'paired' or library['type'] == 'paired_collection'</filter>
+            <filter>output_selector and 'too_long_file' in output_selector</filter>
             <expand macro="inherit_format_2" />
         </data>
 
         <collection name="split_output" type="list" label="${tool.name} on ${on_string}: Split outputs"  >
             <discover_datasets pattern="(?P&lt;designation&gt;.+)\.(?P&lt;ext&gt;fastq.*)" directory="split" />
-            <filter>(output_options['multiple_output'] is True)</filter>
+            <filter>output_selector and 'multiple_output' in output_selector</filter>
         </collection>
-
     </outputs>
 
     <tests>
@@ -381,10 +416,9 @@ $read_mod_options.trim_n
             <param name="adapter" value="TTAGACATATCTCCGTCG"/>
             <param name="output_filtering" value="filter"/>
             <section name="filter_options">
-                <param name="discard" value="True"/>
+                <param name="discard_trimmed" value="True"/>
             </section>
             <param name="read_modification" value="none"/>
-            <param name="output_type" value="default"/>
             <output name="out1" file="cutadapt_discard.out" ftype="fastq"/>
             <assert_command>
                 <has_text text="--discard-trimmed"/>
@@ -397,8 +431,7 @@ $read_mod_options.trim_n
             <param name="adapter" value="AAAGATG"/>
             <param name="output_filtering" value="default"/>
             <param name="read_modification" value="none"/>
-            <param name="output_type" value="additional"/>
-            <param name="rest_file" value="True"/>
+            <param name="output_selector" value="rest_file"/>
             <output name="out1" file="cutadapt_rest.out" ftype="fasta"/>
             <output name="rest_output" file="cutadapt_rest2.out" ftype="fasta"/>
         </test>
@@ -418,8 +451,7 @@ $read_mod_options.trim_n
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="AGATCGGAAGAGC"/>
-            <param name="report" value="True" />
-            <param name="info_file" value="True" />
+            <param name="output_selector" value="report,info_file" />
             <output name="out1" value="cutadapt_small.out" ftype="fastq"/>
             <output name="report">
                 <assert_contents>
@@ -451,9 +483,7 @@ $read_mod_options.trim_n
                     </repeat>
                 </section>
             </conditional>
-            <param name="report" value="False" />
-            <param name="info_file" value="False" />
-            <param name="multiple_output" value="True" />
+            <param name="output_selector" value="multiple_output" />
             <output_collection name="split_output" type="list" count="3">
                    <element name="A1" value="A1.fastq" ftype="fastq">
                    </element>
@@ -477,9 +507,7 @@ $read_mod_options.trim_n
                     </repeat>
                 </section>
             </conditional>
-            <param name="report" value="False" />
-            <param name="info_file" value="False" />
-            <param name="multiple_output" value="True" />
+            <param name="output_selector" value="multiple_output" />
             <output_collection name="split_output" type="list" count="3">
                    <element name="A1"  decompress="True" file="A1.fastq.gz" ftype="fastq.gz">
                    </element>
@@ -496,7 +524,7 @@ $read_mod_options.trim_n
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="AAAT"/>
-            <param name="untrimmed_file" value="True" />
+            <param name="output_selector" value="untrimmed_file" />
             <output name="out1" file="cutadapt_trimmed.out" ftype="fastq"/>
             <output name="untrimmed_output" file="cutadapt_untrimmed.out" ftype="fastq"/>
         </test>
@@ -506,7 +534,7 @@ $read_mod_options.trim_n
             <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1.fq.gz" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="AGATCGGAAGAGC"/>
-            <param name="untrimmed_file" value="True" />
+            <param name="output_selector" value="untrimmed_file" />
             <output name="out1" decompress="True" file="cutadapt_trimmed.out.gz" ftype="fastq.gz"/>
             <!-- 
                 Do not use the decompress option for this assertion, since it does NOT test that the file is compressed
@@ -534,12 +562,40 @@ $read_mod_options.trim_n
             </section>
             <assert_command>
                 <has_text text="--discard-untrimmed"/>
-                <has_text text="--minimum-length=1"/>
                 <has_text text="--maximum-length=1000"/>
                 <has_text text="--max-n=0"/>
                 <has_text text="--pair-filter=both"/>
             </assert_command>
         </test>
+        <!-- Test cut option -->
+        <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGATCGGAAGAGC"/>
+            <param name="cut" value="5"/>
+            <output name="out1" file="cutadapt_small_cut.out" ftype="fastq"/>
+        </test>
+        <!-- Test rename options -->
+        <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGATCGGAAGAGC"/>
+            <param name="cut" value="5"/>
+            <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/>
+            <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/>
+        </test>
+                <!-- Test rename options -->
+        <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGATCGGAAGAGC"/>
+            <param name="cut" value="5"/>
+            <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/>
+            <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/>
+        </test>
     </tests>
 
     <help><![CDATA[
@@ -690,6 +746,30 @@ When parsing the file, be aware that additional columns may be added in the futu
 
 If the --times option is used and greater than 1, each read can appear more than once in the info file. There will be one line for each found adapter, all with identical read names. Only for the first of those lines will the concatenation of columns 5-7 be identical to the original read sequence (and accordingly for columns 9-11). For subsequent lines, the shown sequence are the ones that were used in subsequent rounds of adapter trimming, that is, they get successively shorter.
 
+
+--------------------
+
+**Rename Reads**
+
+--------------------
+
+
+The --rename option expects a template string such as {id} extra_info {adapter_name} as a parameter. It can contain regular text and placeholders that consist of a name enclosed in curly braces ({placeholdername}).
+
+The read name will be set to the template string in which the placeholders are replaced with the actual values relevant for the current read.
+
+The following placeholders are currently available for single-end reads:
+
+        * {header} – the full, unchanged header
+        * {id} – the read ID, that is, the part of the header before the first whitespace
+        * {comment} – the part of the header after the whitespace following the ID
+        * {adapter_name} – the name of adapter that was found in this read or no_adapter if there was none adapter match. If you use --times to do multiple rounds of adapter matching, this is the name of the last found adapter.
+        * {cut_prefix} – the prefix removed by the --cut (or -u) option (that is, when used with a positive length argument)
+        * {cut_suffix} – the suffix removed by the --cut (or -u) option (that is, when used with a negative length argument)
+
+If the --rename option is used with paired-end data, the template is applied separately to both R1 and R2. That is, for R1, the placeholders are replaced with values from R1, and for R2, the placeholders are replaced with values from R2. For example, {comment} becomes R1’s comment in R1 and it becomes R2’s comment in R2.
+
+
 --------------------
 
 **More Information**
@@ -712,27 +792,5 @@ See the excellent `Cutadapt documentation`_
 Author: Lance Parsons <lparsons@princeton.edu>
 
     ]]></help>
-
-    <citations>
-        <citation type="bibtex">
-@article{marcel_cutadapt_2011,
-	title = {Cutadapt removes adapter sequences from high-throughput sequencing reads},
-	volume = {17},
-	copyright = {Authors who publish with this journal agree to the following terms:     Authors retain copyright and grant the journal right of first publication with the work simultaneously licensed under a  Creative Commons Attribution License  that allows others to share the work with an acknowledgement of the work's authorship and initial publication in this journal.   Authors  are able to enter into separate, additional contractual arrangements  for the non-exclusive distribution of the journal's published version of  the work (e.g., post it to an institutional repository or publish it in  a book), with an acknowledgement of its initial publication in this  journal.   Authors are permitted and encouraged to post their  work online (e.g., in institutional repositories or on their website)  prior to and during the submission process, as it can lead to productive  exchanges, as well as earlier and greater citation of published work  (See  The Effect of Open Access ).},
-	url = {http://journal.embnet.org/index.php/embnetjournal/article/view/200},
-	abstract = {When small RNA is sequenced on current sequencing machines, the resulting reads are usually longer than the RNA and therefore contain parts of the 3' adapter. That adapter must be found and removed error-tolerantly from each read before read mapping. Previous solutions are either hard to use or do not offer required features, in particular support for color space data. As an easy to use alternative, we developed the command-line tool cutadapt, which supports 454, Illumina and SOLiD (color space) data, offers two adapter trimming algorithms, and has other useful features.
-
-Cutadapt, including its MIT-licensed source code, is available for download at http://code.google.com/p/cutadapt/},
-	number = {1},
-	urldate = {2011-08-02},
-	journal = {EMBnet.journal},
-	author = {Marcel, Martin},
-	year = {2011},
-	note = {When small RNA is sequenced on current sequencing machines, the resulting reads are usually longer than the RNA and therefore contain parts of the 3' adapter. That adapter must be found and removed error-tolerantly from each read before read mapping. Previous solutions are either hard to use or do not offer required features, in particular support for color space data. As an easy to use alternative, we developed the command-line tool cutadapt, which supports 454, Illumina and SOLiD (color space) data, offers two adapter trimming algorithms, and has other useful features.   Cutadapt, including its MIT-licensed source code, is available for download at  http://code.google.com/p/cutadapt/},
-	keywords = {Adapter removal;, fastq, MicroRNA, Sequencing, Small RNA, software},
-	file = {Cutadapt removes adapter sequences from high-throughput sequencing reads | Martin | EMBnet.journal:/Users/lparsons/Library/Application Support/Firefox/Profiles/thd2t4je.default/zotero/storage/ZXZT4PSE/200.html:text/html}
-}
-        </citation>
-    </citations>
-
+    <expand macro="citations" />
 </tool>
diff --git a/tools/cutadapt/macros.xml b/tools/cutadapt/macros.xml
index ef8445bcf5d..9b057d0ecfb 100644
--- a/tools/cutadapt/macros.xml
+++ b/tools/cutadapt/macros.xml
@@ -1,5 +1,29 @@
 <macros>
-
+    <token name="@TOOL_VERSION@">3.4</token>
+    <token name="@GALAXY_TOOL_VERSION@">galaxy0</token>
+    <xml name="edam_ontology">
+        <edam_topics>                                                                                  
+            <edam_topic>topic_0632</edam_topic>
+        </edam_topics>
+        <edam_operations>
+            <edam_operation>operation_0231</edam_operation>
+        </edam_operations>
+    </xml>
+    <xml name="requirements">
+        <requirements>
+            <requirement type="package" version="@TOOL_VERSION@">cutadapt</requirement>
+        </requirements>
+    </xml>
+    <xml name="citations">
+        <citations>
+            <citation type="doi">10.14806/ej.17.1.200</citation>
+        </citations>
+    </xml>
+    <xml name="xrefs">
+        <xrefs>
+            <xref type='bio.tools'>cutadapt</xref>
+        </xrefs>
+    </xml>
      <token name="@read1_options@"><![CDATA[
 
         ## Read1 trimming
@@ -44,22 +68,22 @@
 
         ## Additional Outputs
 
-        #if $output_options.info_file:
+        #if 'info_file' in $output_selector:
             --info-file=$info_file
         #end if
-        #if $output_options.rest_file:
+        #if 'rest_file' in $output_selector:
             --rest-file='${rest_output}'
         #end if
-        #if $output_options.wildcard_file:
+        #if 'wildcard_file' in $output_selector:
             --wildcard-file='${wild_output}'
         #end if
-        #if $output_options.too_short_file:
+        #if 'too_short_file' in $output_selector:
             --too-short-output='${too_short_output}'
         #end if
-        #if $output_options.too_long_file:
+        #if 'too_long_file' in $output_selector:
             --too-long-output='${too_long_output}'
         #end if
-        #if $output_options.untrimmed_file:
+        #if 'untrimmed_file' in $output_selector:
             --untrimmed-output='${untrimmed_output}'
         #end if
 
@@ -109,13 +133,13 @@
 
         ## Additional Outputs - Read 2
 
-        #if $output_options.too_short_file:
+        #if 'too_short_file' in $output_selector:
             --too-short-paired-output='${too_short_paired_output}'
         #end if
-        #if $output_options.too_long_file:
+        #if 'too_long_file' in $output_selector:
             --too-long-paired-output='${too_long_paired_output}'
         #end if
-        #if $output_options.untrimmed_file:
+        #if 'untrimmed_file' in $output_selector:
             --untrimmed-paired-output='${untrimmed_paired_output}'
         #end if
 
@@ -204,7 +228,7 @@
                         <param name="front_adapter_source_list" type="select" label="Source">
                             <option value="builtin" selected="True">Standard (select from the list below)</option>
                             <option value="user">Enter custom sequence</option>
-                            <option value="file">File From History</option>
+                            <option value="file">File from history</option>
                         </param>
 
                         <when value="user">
@@ -225,7 +249,7 @@
                         <param name="anywhere_adapter_source_list" type="select" label="Source">
                             <option value="builtin" selected="True">Standard (select from the list below)</option>
                             <option value="user">Enter custom sequence</option>
-                            <option value="file">File From History</option>
+                            <option value="file">File from history</option>
                         </param>
 
                         <when value="user">
@@ -260,7 +284,7 @@
                         <param name="adapter_source_list2" type="select" label="Source" >
                             <option value="builtin" selected="True">Standard (select from the list below)</option>
                             <option value="user">Enter custom sequence</option>
-                            <option value="file">File From History</option>
+                            <option value="file">File from history</option>
                         </param>
 
                         <when value="user">
diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz
index a1efcc5c411c2055fb8332b67bfb61fdd9ab80e0..a320d511b969d75b05cc7450dbb30ac2c75bc29c 100644
GIT binary patch
literal 340
zcmV-a0jvHWiwFQsc(q^v1GQAkZi6royz>>k_uv<HVC6%$E9y#>a`K`1{~zfrPC{}h
z0V!QDYkPJrW;Ad-eMIZ+A(9&seTDOP<<FlpIr1*pNJEH$4#UB|IXaOg*Re=NFiVw|
zxs+N<;fkBNR6$@%DwY5k*IbTDG!%enLxZps%rB)luIRSHQoHw#r+u+fpYP|KlSW28
zQg{4Q0q2|@C<PD5_c1OKC?&i)_=xhlN+8=LK-WeICS}D}YQ|u+b=#PqY^LkNOp6Mv
zh0JqO(%L`wWyLt<gtHW$%!&jsfdk_Z;Q~L#@y-QGr05B?jeR!2{Zs>%Cc(?%!6DpC
zU@|AOCIMXFJb54bNTciBO#)@3ey$f<I~5S+z10Q(63rhMFHNfw1Ur(qp|>>pu(+To
m2_?rZ@08%lzkn4kua@A^1gsv&_&l;Psrv<Z{4a(M1pok<DW9MK

literal 348
zcmV-i0i*sOiwFqobP`+u19WY0UqLZ0W?^%5aR9YcyKciU4BY({-8<-I$u^-O43Vlp
zflL~j|NoI5EhkQfx(VRY5-90N!FM?Oa6U%s?GVY0i9W;StMbS9g&cVoY@{*7K*KoL
zH%Di(<T@6q2xh6$GM7?oDO@p_OBDo;q+$zz@yz9@L_-0HHZ%xJ!Fnmhbw!UAmfF2{
ze0nW5>ht}YbJEDDN9qp0D&U;6Bc<R0`98)~0;Pmk2Om*hR|(`f3DEVV1T!nXQZoj#
z?RjO)=0@M#slZyuJSQcs{c~Sdj8jgyOW~8*kN_rdU>qV`;HNm<xj=~&y`i@Gnhh}i
z)PSW)uv<JhgqsOW=47@cfD4=_??WGHa=p7rplsC7b)og50;0U1b-}+x^T*<))20N$
uPULOqElobGE+|Su$#Kj3{tH;)vbO|}CSdhI#^;fZN!<^4{4a(M1polS^QG4S

diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz
index 92890f9ba8b1690649b885e063b65d17c10f7ab5..1347273c15fe03862ec60ad5cadbf15f70635266 100644
GIT binary patch
literal 326
zcmV-M0lEGkiwFQsc(q^v1I1LkZo@DP-2D~ZJ4lpb*(NlE6;c%_kV!-H|3A_@+j(?|
zffPt9o3hBG0Nsi7{`l7W;D=siO!^T|pUvLCPAV!A1oM!5Qt6|-h#u9ebhQ<$)*8%8
zX=ZRMT=)zba14ZiwK)$D(~u4qZ>jv$TC7y8*VMu|!q|&-_u3tvG_vJvmThsm{apzl
zfOw5NKj{>w@uC3ekP?Wjlpj-|koUhTU<XUE)!9&h0z?hd6jWjy{Y3(j!qMAu;)f*w
z*XKxJ_R}RvTM@ejv$^EVEzvCrf&@?Y1F+rThiery4zgnz{6d1i=mX35v78<Iz%BK#
zSp`vo20!*A=X4`M0dsZ&e+UmtaK8~Mw=v8dO5oO;O*5(4aC>Ja?iyW~aj~Mv%8X?0
Yn9Bf`mds3;BPY(?H{~<1VGacV0PK^SJOBUy

literal 334
zcmV-U0kQrciwFqzbP`+u19WY0UqLc1W?^%5aRAL!!EVDK487+ocHaRE4M{8x^-#y8
zNj-5`|Nlq!UdftiQY&p*wK;*{XCv_*cJ{}o(FZ?`Ds$48czSL2{B}}Nksz3-<de!6
z<w5kQUS+7QShdzLtdwR3x59-_$PkACLad$h@GuSOaPgMPPp!pD#d=LG!~tV3*2Cj)
zxRYhe*(_UkhW%9uAb@y{JHO}>m-(Uq=#UbKtdzf}Kq2oxRlp9GFjnV=0u&%>SeBp?
z<LoaIkQ9#I`iXx~1m!*wn0+OBSa}+4i)3@jnd|5+34#Pq_7h^e$xmAqG#c5l4E|{!
zSiT<1*|85?uZNpe5G82v^Eh)(pCl+?&Q9PD;TIdBavNdhPy)B!Z0fhlf!q6F;x@E1
g<6?~>D-+4waV`Ul)H5@~w468(@8vVFVGacV0BbRvx&QzG

diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz
index 5f779ab26b1bb6e099f15be7fc9ac06a4dde9f10..fdbe9f3688e2787c67f24d29cd11e943d9e901dc 100644
GIT binary patch
literal 12158
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
A%m4rY

literal 11712
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
WdZyg@qwNi1cK-)8jSD4G(*OWuvsH)y

diff --git a/tools/cutadapt/test-data/cutadapt_out1.fq.gz b/tools/cutadapt/test-data/cutadapt_out1.fq.gz
index fa79a1d9a2bb3e480bd0b61856ee9b77dc238906..2de8967c5e33f927cfb479cb3f9b352233c3d48b 100644
GIT binary patch
literal 54684
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

literal 11934
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

diff --git a/tools/cutadapt/test-data/cutadapt_out2.fq.gz b/tools/cutadapt/test-data/cutadapt_out2.fq.gz
index e0956d73a3fbf6877e41a9e7a01beab15542436f..cad2e22c0691354bacd0a2cf7f8f81c96989e62d 100644
GIT binary patch
literal 54666
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

literal 12009
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
Hiq!xB{#z<;

diff --git a/tools/cutadapt/test-data/cutadapt_small_cut.out b/tools/cutadapt/test-data/cutadapt_small_cut.out
new file mode 100644
index 00000000000..383b3dbef37
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_small_cut.out
@@ -0,0 +1,12 @@
+@prefix:1_13_573/1
+GAANTAGCTACCACCCTGATTAGACAAAT
++
+&&&!.1&(6:<'67..*,:75)'77&&&5
+@prefix:1_13_1259/1
+CTANGACGGGTTGGCCCTTAGACGTATCT
++
+A;A!9<<<,7:<=3=;:<&<?<?8<;=<&
+@prefix:1_13_1440/1
+TCTNCCCTGCCACATTGCCCTAGTTAAAC
++
+=57!7<';<6?5;;6:+:=)71>70<,=:
diff --git a/tools/cutadapt/test-data/cutadapt_small_rename.out b/tools/cutadapt/test-data/cutadapt_small_rename.out
new file mode 100644
index 00000000000..59c665cdb87
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_small_rename.out
@@ -0,0 +1,12 @@
+@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__
+GAANTAGCTACCACCCTGATTAGACAAAT
++
+&&&!.1&(6:<'67..*,:75)'77&&&5
+@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__
+CTANGACGGGTTGGCCCTTAGACGTATCT
++
+A;A!9<<<,7:<=3=;:<&<?<?8<;=<&
+@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__
+TCTNCCCTGCCACATTGCCCTAGTTAAAC
++
+=57!7<';<6?5;;6:+:=)71>70<,=:
diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz
index ed6fff795865f01c5dec762cf30e91c70af88e20..f5c8147fdb044e3959b45e42e77db70e70598257 100644
GIT binary patch
delta 17
YcmbQqGLwZvzMF%gvSMq(Mh-zH04w|i#{d8T

delta 17
YcmbQqGLwZvzMF%=v~_vRMh-zH04dJ|egFUf

diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz
index 2ad9b69756051fb36bafdbb9b8eaf50435d4fdc7..abda24d08a27334357d5be7a3d1e2c559e4fa004 100644
GIT binary patch
literal 12095
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

literal 11648
zcmV-`Eq~G<iwFQUg{NEq1MPj=nxe|G_5FI4{c#dcfF<Oad9m;O{`Y^BKSo4m0&2B(
z&$-s_u3B`Lg_s~^4kJb!bNb)9X^-dr+}CL<R2%01*EfCB)J=cvnx;SR4u`7wm%5o-
z2)COtH)ZIT3LzMyZi+S>Q?yG5jG})$j1J0C73kOvhZS9c_vmE09Pi>>48)l{h=v5(
zyW!%2er|YM{JNRI_kisd@R|v@rs7f94LEY+3mATkm#6b+A6GHh$0Zg2B{c4ady{*(
z;m7b<H~AxQ`?uS_{^wsBe~*_fEZa<5nE4lP>!ZuT^xDiX@l(GZ5oR|#y6!wX`b-_Y
z0lhry5XS_J=C{EWjP=&?$AnEOpEfPKdXT5e+WeAt%dYmD%`L~BJa+?5v=~@*+UtK!
zuVB*b56!vny6#Lk3AgxJ^2d%3Qpp6V{KFW*haCV89*B<}b0Z%({aN(!10*uRj3PXz
zq4Ws&D1b+xg%O5F8XknRZU6vdC@^X;tALYCuz&~P0APU{#qVKoNd_Iz!!R@$Og9PW
z%RS&zzu_d@FW?LS@gCs>*GW^dg2@&WbOZBt%dkm+Aq04L(80OcuU_(6#(IqL>x%{_
z$36CD#!0YvV|rxR@NLk*O3^E0*?1aZ@UfJ}OtgzL`JSEjLFuX@Aktna`@s%_sw29}
zvY!;7Q4Kocrs{03s_G4#ocFt3-*ok%VW8l%6WQ<}S#DoivJg-hdh|`EZ4H!rT*PTl
z7`cC8D_K6<LPFhVqk^|UoZ&lx`1!eQ_|c1QEpdAKDPIGHG|v9e@0yw=%0D7E)c?KQ
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
K1W#R7(EtFx2$C-V

diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz
index 838f7ce4d50cb52ef3b5b5699c7e2893d5ac78d7..77584216601babcf242b1241892ab78ad65bf3a3 100644
GIT binary patch
delta 18
ZcmdnbxR#MizMF%=w_<Ao1M@_g#Q-s_1y}$8

delta 36
rcmZ3>xSvr*zMF%CrBo<}fw?5NAigv&J1@UHPcJR8xTKI_BG+O7!72-S


From 9d469965d9e7513994166025335aabee0308d24e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Tue, 1 Jun 2021 02:29:35 +0200
Subject: [PATCH 02/20] Update test minimum maximum length

---
 tools/cutadapt/cutadapt.xml                   |   4 ++--
 tools/cutadapt/test-data/A1.fastq.gz          | Bin 340 -> 340 bytes
 tools/cutadapt/test-data/A2.fastq.gz          | Bin 326 -> 326 bytes
 .../test-data/cutadapt_nextseq_out.fq.gz      | Bin 12158 -> 12158 bytes
 .../test-data/cutadapt_trimmed.out.gz         | Bin 537 -> 537 bytes
 .../test-data/cutadapt_untrimmed.out.gz       | Bin 12095 -> 12095 bytes
 tools/cutadapt/test-data/unknown.fastq.gz     | Bin 173 -> 173 bytes
 7 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index 1fb98d550b6..628607ed3c5 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -555,8 +555,8 @@ $read_mod_options.zero_cap
             <param name="adapter2" value="AGATCGGAAGAGC"/>
             <section name="filter_options">
                 <param name="discard_untrimmed" value="true"/>
-                <param name="min" value="1"/>
-                <param name="max" value="1000"/>
+                <param name="minimun_length" value="1"/>
+                <param name="maximum_length" value="1000"/>
                 <param name="max_n" value="0"/>
                 <param name="pair_filter" value="both"/>
             </section>
diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz
index a320d511b969d75b05cc7450dbb30ac2c75bc29c..5cb14c45dad458afedee2dddf5931087f23d9ee7 100644
GIT binary patch
delta 15
Wcmcb@bcKmczMF$Vwq_%nA0q%Hn*;;^

delta 15
Wcmcb@bcKmczMF%=w_+okA0q%Irvxwn

diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz
index 1347273c15fe03862ec60ad5cadbf15f70635266..d6c4b5006d0ab868313e1a98a56dfca458bfd957 100644
GIT binary patch
delta 15
WcmX@cbc~5jzMF$Vwq_%n10w(;_XFAh

delta 15
WcmX@cbc~5jzMF%=w_+ok10w(=0|W*D

diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz
index fdbe9f3688e2787c67f24d29cd11e943d9e901dc..9e773cbc88c0eb29196ae46b305ef2b6080d332b 100644
GIT binary patch
delta 15
Wcmewt_b-l3zMF&LUiC({3Vi@Kjs_?I

delta 15
Wcmewt_b-l3zMF%Aw_+n(g+2f>nFUk;

diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz
index f5c8147fdb044e3959b45e42e77db70e70598257..a03b905a25c5081254b98a4be9cd5f7f5884e9c7 100644
GIT binary patch
delta 15
WcmbQqGLwZ(zMF%=yJjPsFcSbC`U8dl

delta 15
WcmbQqGLwZ(zMF%gvSK5fFcSbD`U9{4

diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz
index abda24d08a27334357d5be7a3d1e2c559e4fa004..e07fdd2f3d491369f6b01219d147654a2a03849f 100644
GIT binary patch
delta 15
WcmdlVw?B?ezMF%=yJjPsr9J>GzXaI;

delta 15
WcmdlVw?B?ezMF%gvSK5fr9J>HzXbyT

diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz
index 77584216601babcf242b1241892ab78ad65bf3a3..bf1313d639a536c1bccb5b17c4d35ece8c138f34 100644
GIT binary patch
delta 14
VcmZ3>xR#MkzMF$Vwq_#RasV8H1MC0*

delta 14
VcmZ3>xR#MkzMF%=w_+mOasVA-1Q-AS


From f9875ae94521275ea3ba323937563c847a3599a5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Tue, 1 Jun 2021 02:30:50 +0200
Subject: [PATCH 03/20] Increase default cores

---
 tools/cutadapt/cutadapt.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index 628607ed3c5..9d0db37eeb1 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -77,7 +77,7 @@ ln -f -s '${input_1}' '$read1' &&
 
 cutadapt
 
--j=\${GALAXY_SLOTS:-1}
+-j=\${GALAXY_SLOTS:-4}
 
 #if str( $library.type ) == "single":
     @read1_options@

From 841f1405e72f920bda5851bafd6179ff383e19eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Tue, 1 Jun 2021 16:30:52 +0200
Subject: [PATCH 04/20] Update tests

---
 tools/cutadapt/cutadapt.xml                   | 165 ++++++++++++++----
 tools/cutadapt/test-data/A1.fastq.gz          | Bin 340 -> 340 bytes
 tools/cutadapt/test-data/A2.fastq.gz          | Bin 326 -> 326 bytes
 .../test-data/bwa-mem-fastq1_assimetric.fq.gz | Bin 0 -> 11764 bytes
 .../test-data/bwa-mem-fastq2_assimetric.fq.gz | Bin 0 -> 11747 bytes
 .../test-data/cutadapt_action_lowercase.out   |  12 ++
 .../test-data/cutadapt_action_mask.out        |  12 ++
 .../test-data/cutadapt_action_none.out        |  12 ++
 .../test-data/cutadapt_action_retain.out      |  12 ++
 .../test-data/cutadapt_nextseq_out.fq.gz      | Bin 12158 -> 12158 bytes
 tools/cutadapt/test-data/cutadapt_revcomp.out |  12 ++
 .../test-data/cutadapt_trimmed.out.gz         | Bin 537 -> 537 bytes
 .../test-data/cutadapt_untrimmed.out.gz       | Bin 12095 -> 12095 bytes
 tools/cutadapt/test-data/unknown.fastq.gz     | Bin 173 -> 173 bytes
 14 files changed, 194 insertions(+), 31 deletions(-)
 create mode 100644 tools/cutadapt/test-data/bwa-mem-fastq1_assimetric.fq.gz
 create mode 100644 tools/cutadapt/test-data/bwa-mem-fastq2_assimetric.fq.gz
 create mode 100644 tools/cutadapt/test-data/cutadapt_action_lowercase.out
 create mode 100644 tools/cutadapt/test-data/cutadapt_action_mask.out
 create mode 100644 tools/cutadapt/test-data/cutadapt_action_none.out
 create mode 100644 tools/cutadapt/test-data/cutadapt_action_retain.out
 create mode 100644 tools/cutadapt/test-data/cutadapt_revcomp.out

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index 9d0db37eeb1..61acf3e7e13 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -109,12 +109,12 @@ $adapter_options.revcomp
 $filter_options.discard_trimmed
 $filter_options.discard_untrimmed
 
-#if str($filter_options.minimum_options.minimum_r2):
+#if str($filter_options.minimum_options.minimum_r2) == 'true':
     --minimum-length=$filter_options.minimum_length:$filter_options.minimum_options.value_minimum
 #elif str($filter_options.minimum_length)
     --minimum-length=$filter_options.minimum_length
 #end if
-#if str($filter_options.maximum_options.maximum_r2):
+#if str($filter_options.maximum_options.maximum_r2) == 'true':
     --maximum-length=$filter_options.maximum_length:$filter_options.maximum_options.value_maximum
 #elif str($filter_options.maximum_length)
     --maximum-length=$filter_options.maximum_length
@@ -196,7 +196,7 @@ $read_mod_options.zero_cap
             <param name="action" type="select" label="What to do if a match is found">
                 <option value="trim" selected="True">Trim: trim adapter and upstream or downstream sequence</option>
                 <option value="retain">Retain: the read is trimmed, but the adapter sequence is not removed</option>
-                <option value="mask">Mask: madapters with 'N' characters instead of trimming them</option>
+                <option value="mask">Mask: mask adapters with 'N' characters instead of trimming them</option>
                 <option value="lowercase">Lowercase: convert to lowercase</option>
                 <option value="none">None: leave unchanged</option>
             </param>
@@ -221,30 +221,32 @@ $read_mod_options.zero_cap
             <conditional name="minimum_options">
                 <param name="minimum_r2" type="select" label="Specify a minimum length for reverse reads (R2)" help="When trimming paired-end reads, the minimum lengths for R1 and R2 can be specified separately. If not provided, the same minimum length applies to both reads.">
                     <option value="true">Enable</option>
-                    <option value="" selected="True">Disable</option>
+                    <option value="false" selected="True">Disable</option>
                 </param>
                 <when value="true">
                     <param name="value_minimum" type="integer" min="0" optional="True" value="" label="Minimum length" />
                 </when>
-                <when value="">
+                <when value="false">
                 </when>
             </conditional>
             <param argument="--maximum-length" type="integer" min="0" optional="True" value="" label="Maximum length" help="Discard trimmed reads that are longer than LENGTH.  Reads that are too long even before adapter removal are also discarded. In colorspace, an initial primer is not counted." />
             <conditional name="maximum_options">
                 <param name="maximum_r2" type="select" label="Specify a maximum length for reverse reads (R2)" help="When trimming paired-end reads, the maximum lengths for R1 and R2 can be specified separately. If not provided, the same maximum length applies to both reads.">
                     <option value="true">Enable</option>
-                    <option value="" selected="True">Disable</option>
+                    <option value="false" selected="True">Disable</option>
                 </param>
                 <when value="true">
                     <param name="value_maximum" type="integer" min="0" optional="True" value="" label="Maximum length" />
                 </when>
-                <when value="">
+                <when value="false">
                 </when>
             </conditional>                
             <param argument="--max-n" type="float" min="0" optional="True" label="Max N" help="Discard reads with more than this number of 'N' bases. A number between 0 and 1 is interpreted as a fraction of the read length." />
             <param argument="--pair-filter" type="select" optional="True" label="Pair filter" help="Which of the reads in a paired-end read have to match the filtering criterion in order for the pair to be filtered. Default: any">
-                <option value="any" selected="True">any</option>
-                <option value="both">both</option>
+                <option value="any" selected="True">Any: a read pair is discarded (or redirected) if one of the reads (R1 or R2) fulfills the filtering criterion. </option>
+                <option value="both">Both: filtering criteria must apply to both reads in order for a read pair to be discarded. </option>
+                <option value="first">First: will make a decision about the read pair by inspecting whether the filtering criterion applies to the first read, ignoring the second read.</option>
+
             </param>
             <param argument="--max-expected-errors" type="integer" min="0" optional="True" value="" label="Max expected errors" help="Discard reads whose expected number of errors (computed from quality values) exceeds this value." />
             <param argument="--discard-cassava" type="boolean" truevalue="--discard-cassava" falsevalue="" checked="False" label="Discard CASAVA filtering" help="Discard reads that did not pass CASAVA filtering (header has :Y:)." />
@@ -586,15 +588,111 @@ $read_mod_options.zero_cap
             <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/>
             <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/>
         </test>
-                <!-- Test rename options -->
+            <!-- Test action options -->
+        <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="CGTCCGAANTAG"/>
+            <param name="action" value="retain"/>
+            <output name="out1" file="cutadapt_action_retain.out" ftype="fastq"/>
+        </test>
+           <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="CGTCCGAANTAG"/>
+            <param name="action" value="mask"/>
+            <output name="out1" file="cutadapt_action_mask.out" ftype="fastq"/>
+        </test>
+        <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="CGTCCGAANTAG"/>
+            <param name="action" value="lowercase"/>
+            <output name="out1" file="cutadapt_action_lowercase.out" ftype="fastq"/>
+        </test>
+        <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="CGTCCGAANTAG"/>
+            <param name="action" value="none"/>
+            <output name="out1" file="cutadapt_action_none.out" ftype="fastq"/>
+        </test>
+                <!-- Test revcomp options -->
         <test expect_num_outputs="1">
             <param name="type" value="single" />
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="TAAACAGATTAGT"/>
+            <param name="revcomp" value="true"/>
+            <output name="out1" file="cutadapt_revcomp.out" ftype="fastq"/>
+        </test>
+        <!-- Test minimum lenghth paired-reads -->
+        <test expect_num_outputs="2">
+            <param name="type" value="paired" />
+            <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" />
+            <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" />
+            <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="AGATCGGAAGAGC"/>
-            <param name="cut" value="5"/>
-            <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/>
-            <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/>
+            <param name="adapter_source_list2" value="user"/>
+            <param name="adapter2" value="AGATCGGAAGAGC"/>
+            <section name="filter_options">
+                <param name="minimun_length" value="30"/>
+                <param name="pair_filter" value="both"/>
+                <conditional name="minimum_option">
+                    <param name="minimum_r2" value="true"/>
+                    <param name="value_minimum" value="10"/>
+                </conditional>
+            </section>
+            <output name="out1" ftype="fastq.gz">
+                <assert_contents>
+                    <has_size value="12180"/>
+                </assert_contents>
+            </output>
+            <output name="out2" ftype="fastq.gz">
+                <assert_contents>
+                    <has_size value="12153"/>
+                </assert_contents>
+            </output>
+            <assert_command>
+                <has_text text="--minimum-length=30:10"/>
+                <has_text text="--pair-filter=both"/>
+            </assert_command>
+        </test>
+                <!-- Test maximum lenghth paired-reads -->
+        <test expect_num_outputs="2">
+            <param name="type" value="paired" />
+            <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" />
+            <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGATCGGAAGAGC"/>
+            <param name="adapter_source_list2" value="user"/>
+            <param name="adapter2" value="AGATCGGAAGAGC"/>
+            <section name="filter_options">
+                <param name="pair_filter" value="both"/>
+                <param name="maximum_length" value="50"/>
+                <conditional name="maximum_option">
+                    <param name="maximum_r2" value="true"/>
+                    <param name="value_maximum" value="30"/>
+                </conditional>
+            </section>
+            <output name="out1" ftype="fastq.gz">
+                <assert_contents>
+                    <has_size value="134"/>
+                </assert_contents>
+            </output>
+            <output name="out2" ftype="fastq.gz">
+                <assert_contents>
+                    <has_size value="139"/>
+                </assert_contents>
+            </output>
+            <assert_command>
+                <has_text text="--maximum-length=50:30"/>
+                <has_text text="--pair-filter=both"/>
+            </assert_command>
         </test>
     </tests>
 
@@ -694,25 +792,30 @@ Cutadapt can output per-adapter statistics if you select to output the report ab
 
 Example:
 
-        *This is cutadapt 1.16 with Python 3.6.4*
-
-        *Command line parameters: -j 1 --format=fastq -a AGATCGGAAGAGC --info-file=/tmp/tmpX0DlY1/files/000/dataset_21.dat --output=out1.fq --error-rate=0.1 --times=1 --overlap=3 input_f.fastq*
-        *Running on 1 core*
-        *Trimming 1 adapter with at most 10.0% errors in single-end mode ...*
-        *Finished in 0.00 s (1426 us/read; 0.04 M reads/minute).*
-
-        *=== Summary ===*
-
-        * Total reads processed:                       3*
-        * Reads with adapters:                         0 (0.0%)*
-        * Reads written (passing filters):             3 (100.0%)*
-
-        * Total basepairs processed:           102 bp*
-        * Total written (filtered):            102 bp (100.0%)*
-
-        *=== Adapter 1 ===*
+    ::
+        
+        This is cutadapt 3.4 with Python 3.9.2
 
-        *Sequence: AGATCGGAAGAGC; Type: regular 3'; Length: 13; Trimmed: 0 times.*
+        Command line parameters: -j=1 -a AGATCGGAAGAGC -A AGATCGGAAGAGC --output=out1.fq.gz --paired-output=out2.fq.gz --error-rate=0.1 --times=1 
+        --overlap=3 --action=trim --minimum-length=30:40 --pair-filter=both --cut=0 bwa-mem-fastq1_assimetric_fq_gz.fq.gz bwa-mem-fastq2_assimetric_fq_gz.fq.gz
+        
+        Processing reads on 1 core in paired-end mode ...
+        Finished in 0.01 s (129 µs/read; 0.46 M reads/minute).
+
+        === Summary ===
+
+        Total read pairs processed:                 99
+        Read 1 with adapter:                       2 (2.0%)
+        Read 2 with adapter:                       4 (4.0%)
+        Pairs that were too short:                   3 (3.0%)
+        Pairs written (passing filters):            96 (97.0%)
+
+        Total basepairs processed:        48,291 bp
+        Read 1:        24,147 bp
+        Read 2:        24,144 bp
+        Total written (filtered):         48,171 bp (99.8%)
+        Read 1:        24,090 bp
+        Read 2:        24,081 bp
 
 
 **Info file**
diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz
index 5cb14c45dad458afedee2dddf5931087f23d9ee7..e8c0e369417c5b11dc18023839d11b8f0488fa13 100644
GIT binary patch
delta 16
Xcmcb@bcKmszMF&Lr1iFq?7oZuE@A~H

delta 16
Xcmcb@bcKmszMF$Vwr1-_c3(ySD=!4P

diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz
index d6c4b5006d0ab868313e1a98a56dfca458bfd957..87222d183c4ddd81e6ddaba2f6fb2bbfbc62b01e 100644
GIT binary patch
delta 16
XcmX@cbc~5zzMF&Lr1iFq?DmWRETRPb

delta 16
XcmX@cbc~5zzMF$Vwr1-_c6&wuDQ^Uj

diff --git a/tools/cutadapt/test-data/bwa-mem-fastq1_assimetric.fq.gz b/tools/cutadapt/test-data/bwa-mem-fastq1_assimetric.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..dbabab15969faa6ae86f1397eb7b7115a56fd805
GIT binary patch
literal 11764
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
WCn|T&Y5NG6N&g>GOb^~H&;S5s)3#p#

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/bwa-mem-fastq2_assimetric.fq.gz b/tools/cutadapt/test-data/bwa-mem-fastq2_assimetric.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..1765ba047e05606ca6b921ae92d0e45e093e6d60
GIT binary patch
literal 11747
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
F008rg<c0tM

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/cutadapt_action_lowercase.out b/tools/cutadapt/test-data/cutadapt_action_lowercase.out
new file mode 100644
index 00000000000..767ca2279af
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_action_lowercase.out
@@ -0,0 +1,12 @@
+@prefix:1_13_573/1
+CGTCCGAANTAGCTACCACCCTGATTAGACAAAT
++
+)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5
+@prefix:1_13_1259/1
+AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT
++
+;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<&
+@prefix:1_13_1440/1
+CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC
++
+<=A:A=57!7<';<6?5;;6:+:=)71>70<,=:
diff --git a/tools/cutadapt/test-data/cutadapt_action_mask.out b/tools/cutadapt/test-data/cutadapt_action_mask.out
new file mode 100644
index 00000000000..767ca2279af
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_action_mask.out
@@ -0,0 +1,12 @@
+@prefix:1_13_573/1
+CGTCCGAANTAGCTACCACCCTGATTAGACAAAT
++
+)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5
+@prefix:1_13_1259/1
+AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT
++
+;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<&
+@prefix:1_13_1440/1
+CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC
++
+<=A:A=57!7<';<6?5;;6:+:=)71>70<,=:
diff --git a/tools/cutadapt/test-data/cutadapt_action_none.out b/tools/cutadapt/test-data/cutadapt_action_none.out
new file mode 100644
index 00000000000..767ca2279af
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_action_none.out
@@ -0,0 +1,12 @@
+@prefix:1_13_573/1
+CGTCCGAANTAGCTACCACCCTGATTAGACAAAT
++
+)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5
+@prefix:1_13_1259/1
+AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT
++
+;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<&
+@prefix:1_13_1440/1
+CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC
++
+<=A:A=57!7<';<6?5;;6:+:=)71>70<,=:
diff --git a/tools/cutadapt/test-data/cutadapt_action_retain.out b/tools/cutadapt/test-data/cutadapt_action_retain.out
new file mode 100644
index 00000000000..767ca2279af
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_action_retain.out
@@ -0,0 +1,12 @@
+@prefix:1_13_573/1
+CGTCCGAANTAGCTACCACCCTGATTAGACAAAT
++
+)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5
+@prefix:1_13_1259/1
+AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT
++
+;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<&
+@prefix:1_13_1440/1
+CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC
++
+<=A:A=57!7<';<6?5;;6:+:=)71>70<,=:
diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz
index 9e773cbc88c0eb29196ae46b305ef2b6080d332b..a5cc399b1d1a68a7c806213aa8d91f72032f9b53 100644
GIT binary patch
delta 16
Xcmewt_b-lJzMF%g+j`qZ_HumyJT3-I

delta 16
Xcmewt_b-lJzMF&LUiH?E?B)6ZKkf$J

diff --git a/tools/cutadapt/test-data/cutadapt_revcomp.out b/tools/cutadapt/test-data/cutadapt_revcomp.out
new file mode 100644
index 00000000000..78889906185
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_revcomp.out
@@ -0,0 +1,12 @@
+@prefix:1_13_573/1
+CGTCCGAANTAGCTACCACCCTGATTAGACAAAT
++
+)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5
+@prefix:1_13_1259/1
+AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT
++
+;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<&
+@prefix:1_13_1440/1
+CAAGATCTNCCCTGCCACATTGCCCTAGT
++
+<=A:A=57!7<';<6?5;;6:+:=)71>7
diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz
index a03b905a25c5081254b98a4be9cd5f7f5884e9c7..a3dc7d22690c1d3067a07df0a4606640d277f350 100644
GIT binary patch
delta 16
XcmbQqGLwZ}zMF&LyY;q>>_SWcD18K|

delta 16
XcmbQqGLwZ}zMF%=yJqV~b|EGJB}xQ5

diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz
index e07fdd2f3d491369f6b01219d147654a2a03849f..ea8a361655da60e2a8a62851b0537c80b6c697f5 100644
GIT binary patch
delta 16
XcmdlVw?B?uzMF&LyY;q>>=ya}H$nyb

delta 16
XcmdlVw?B?uzMF%=yJqV~b_;y~G!F%j

diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz
index bf1313d639a536c1bccb5b17c4d35ece8c138f34..8f72df89453d2ee619707d46812c5f7595e6b2ba 100644
GIT binary patch
delta 15
WcmZ3>xR#M!zMF&Lr1iFm?8^Wo*98s$

delta 15
WcmZ3>xR#M!zMF$Vwr1-@_GJJf5CozC


From 838f0817c6de701b4c19ee76ff63619a1f9a729c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Tue, 1 Jun 2021 16:55:40 +0200
Subject: [PATCH 05/20] Update tests max and min length

---
 tools/cutadapt/cutadapt.xml                   |  28 ++++--------------
 tools/cutadapt/test-data/A1.fastq.gz          | Bin 340 -> 340 bytes
 tools/cutadapt/test-data/A2.fastq.gz          | Bin 326 -> 326 bytes
 .../test-data/cutadapt_action_lowercase.out   |   2 +-
 .../test-data/cutadapt_action_mask.out        |   2 +-
 .../test-data/cutadapt_action_retain.out      |   4 +--
 .../test-data/cutadapt_nextseq_out.fq.gz      | Bin 12158 -> 12158 bytes
 .../test-data/cutadapt_out1_max_length.fq.gz  | Bin 0 -> 134 bytes
 .../test-data/cutadapt_out1_min_length.fq.gz  | Bin 0 -> 12155 bytes
 .../test-data/cutadapt_out2_max_length.fq.gz  | Bin 0 -> 139 bytes
 .../test-data/cutadapt_out2_min_length.fq.gz  | Bin 0 -> 12138 bytes
 .../test-data/cutadapt_trimmed.out.gz         | Bin 537 -> 537 bytes
 .../test-data/cutadapt_untrimmed.out.gz       | Bin 12095 -> 12095 bytes
 tools/cutadapt/test-data/unknown.fastq.gz     | Bin 173 -> 173 bytes
 14 files changed, 10 insertions(+), 26 deletions(-)
 create mode 100644 tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz
 create mode 100644 tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz
 create mode 100644 tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz
 create mode 100644 tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index 61acf3e7e13..fe88415053c 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -642,21 +642,13 @@ $read_mod_options.zero_cap
             <section name="filter_options">
                 <param name="minimun_length" value="30"/>
                 <param name="pair_filter" value="both"/>
-                <conditional name="minimum_option">
+                <conditional name="minimum_options">
                     <param name="minimum_r2" value="true"/>
                     <param name="value_minimum" value="10"/>
                 </conditional>
             </section>
-            <output name="out1" ftype="fastq.gz">
-                <assert_contents>
-                    <has_size value="12180"/>
-                </assert_contents>
-            </output>
-            <output name="out2" ftype="fastq.gz">
-                <assert_contents>
-                    <has_size value="12153"/>
-                </assert_contents>
-            </output>
+            <output name="out1" decompress="True" file="cutadapt_out1_min_length.fq.gz" ftype="fastq.gz"/>
+            <output name="out2" decompress="True" file="cutadapt_out2_min_length.fq.gz" ftype="fastq.gz"/>
             <assert_command>
                 <has_text text="--minimum-length=30:10"/>
                 <has_text text="--pair-filter=both"/>
@@ -674,21 +666,13 @@ $read_mod_options.zero_cap
             <section name="filter_options">
                 <param name="pair_filter" value="both"/>
                 <param name="maximum_length" value="50"/>
-                <conditional name="maximum_option">
+                <conditional name="maximum_options">
                     <param name="maximum_r2" value="true"/>
                     <param name="value_maximum" value="30"/>
                 </conditional>
             </section>
-            <output name="out1" ftype="fastq.gz">
-                <assert_contents>
-                    <has_size value="134"/>
-                </assert_contents>
-            </output>
-            <output name="out2" ftype="fastq.gz">
-                <assert_contents>
-                    <has_size value="139"/>
-                </assert_contents>
-            </output>
+            <output name="out1" decompress="True" file="cutadapt_out1_max_length.fq.gz" ftype="fastq.gz"/>
+            <output name="out2" decompress="True" file="cutadapt_out2_max_length.fq.gz" ftype="fastq.gz"/>
             <assert_command>
                 <has_text text="--maximum-length=50:30"/>
                 <has_text text="--pair-filter=both"/>
diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz
index e8c0e369417c5b11dc18023839d11b8f0488fa13..1635e3cc999c2a60c131ac85df585770c8fa803d 100644
GIT binary patch
delta 15
Wcmcb@bcKmczMF%=#BC#+A0q%H7X#%0

delta 15
Wcmcb@bcKmczMF&Lr1eHNKSls2UIcFd

diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz
index 87222d183c4ddd81e6ddaba2f6fb2bbfbc62b01e..4e4bb5ce630e4718f5c87e20e692c25b5d8892e3 100644
GIT binary patch
delta 15
WcmX@cbc~5jzMF%=#BC#+10w(;a|62o

delta 15
WcmX@cbc~5jzMF&Lr1eHN2SxxTx&%c4

diff --git a/tools/cutadapt/test-data/cutadapt_action_lowercase.out b/tools/cutadapt/test-data/cutadapt_action_lowercase.out
index 767ca2279af..927187c4252 100644
--- a/tools/cutadapt/test-data/cutadapt_action_lowercase.out
+++ b/tools/cutadapt/test-data/cutadapt_action_lowercase.out
@@ -1,5 +1,5 @@
 @prefix:1_13_573/1
-CGTCCGAANTAGCTACCACCCTGATTAGACAAAT
+cgtccgaantagctaccaccctgattagacaaat
 +
 )3%)&&&&!.1&(6:<'67..*,:75)'77&&&5
 @prefix:1_13_1259/1
diff --git a/tools/cutadapt/test-data/cutadapt_action_mask.out b/tools/cutadapt/test-data/cutadapt_action_mask.out
index 767ca2279af..4a74f4fc477 100644
--- a/tools/cutadapt/test-data/cutadapt_action_mask.out
+++ b/tools/cutadapt/test-data/cutadapt_action_mask.out
@@ -1,5 +1,5 @@
 @prefix:1_13_573/1
-CGTCCGAANTAGCTACCACCCTGATTAGACAAAT
+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
 +
 )3%)&&&&!.1&(6:<'67..*,:75)'77&&&5
 @prefix:1_13_1259/1
diff --git a/tools/cutadapt/test-data/cutadapt_action_retain.out b/tools/cutadapt/test-data/cutadapt_action_retain.out
index 767ca2279af..63a354ebefe 100644
--- a/tools/cutadapt/test-data/cutadapt_action_retain.out
+++ b/tools/cutadapt/test-data/cutadapt_action_retain.out
@@ -1,7 +1,7 @@
 @prefix:1_13_573/1
-CGTCCGAANTAGCTACCACCCTGATTAGACAAAT
+CGTCCGAANTAG
 +
-)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5
+)3%)&&&&!.1&
 @prefix:1_13_1259/1
 AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT
 +
diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz
index a5cc399b1d1a68a7c806213aa8d91f72032f9b53..80c3d43467770d941abfbf95029ab645efcbf5d4 100644
GIT binary patch
delta 15
Wcmewt_b-l3zMF&Li|a<V3Vi@K1O^BI

delta 15
Wcmewt_b-l3zMF%g+j=8gg+2f@Tm_W?

diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..16ee3977765cee609b89cbd42d0a2cc529c51f27
GIT binary patch
literal 134
zcmV;10D1o(iwFQdO15AC1C7qH4udcZgyB7}QdP|bf*en{t}qLm)%SmtIur(`_Semy
zZr(D6iI_N_-DR-#&0rvdrv@;US|3Q_>Spe$E}CxXsnPPy()^3USV7!cqp*UJV-{d&
o(mOT#$D^?nM#~jD828jfFE2e{-EY2n9X?vq2Zo3SUi<(60D`tZI{*Lx

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..d2b182f3b1876854bdb58d04512afff6988b59ef
GIT binary patch
literal 12155
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

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..0627bf4b7648059444225466d0ec8a86d3bb8a76
GIT binary patch
literal 139
zcmV;60CfK!iwFQdO15AC1C5Tc4#O}AM0b9rs^W9v2s2csNTEwNtN;Hg#jY}^C+=W+
zM|&r%I}1xXb=TEjAAtY~vR6Pjm$GE)=4QRC#g6P2SJ*v<ZiEMh+Dx53nG3b6B5VaL
twN{QM(*bww?iyqpI)3>FiMN~uH5Ck0e5&denCAo>Mqdygd!qIL0033bI^h5S

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..067a3d0cd4b115b6b5cd59d9ba27a078cb318c60
GIT binary patch
literal 12138
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

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz
index a3dc7d22690c1d3067a07df0a4606640d277f350..5adaf22b4068071be4ac95d0fb38fbfba90a0c6f 100644
GIT binary patch
delta 15
WcmbQqGLwZ(zMF#~(QPA}FcSbCa06xl

delta 15
WcmbQqGLwZ(zMF&LyY)skVI}|}y#w(8

diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz
index ea8a361655da60e2a8a62851b0537c80b6c697f5..6b9e56db4e06c688287bfdc6fca4151e87173fea 100644
GIT binary patch
delta 15
WcmdlVw?B?ezMF#~(QPA}r9J>GH3Yc;

delta 15
WcmdlVw?B?ezMF&LyY)skOML(@f(1kX

diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz
index 8f72df89453d2ee619707d46812c5f7595e6b2ba..13b4154300f7aaa2371c3eb1d1254d55ab0d0ba2 100644
GIT binary patch
delta 14
VcmZ3>xR#MkzMF%=#BCzmasV711I+*c

delta 14
VcmZ3>xR#MkzMF&Lr1eC$<p3Vq1Xln6


From 8927ff7e590c7930ce9866ddceef49cdfd3e3e86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Tue, 1 Jun 2021 17:00:15 +0200
Subject: [PATCH 06/20] Fix typo

---
 tools/cutadapt/cutadapt.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index fe88415053c..b14dbd31a77 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -640,7 +640,7 @@ $read_mod_options.zero_cap
             <param name="adapter_source_list2" value="user"/>
             <param name="adapter2" value="AGATCGGAAGAGC"/>
             <section name="filter_options">
-                <param name="minimun_length" value="30"/>
+                <param name="minimum_length" value="30"/>
                 <param name="pair_filter" value="both"/>
                 <conditional name="minimum_options">
                     <param name="minimum_r2" value="true"/>

From a364f88c52f51a9e80340c1ebae6c53151fb35f4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Tue, 1 Jun 2021 21:49:36 +0200
Subject: [PATCH 07/20] Update tests

---
 tools/cutadapt/cutadapt.xml                   | 180 ++++++++++++++----
 tools/cutadapt/macros.xml                     |  38 ++--
 tools/cutadapt/test-data/A1.fastq.gz          | Bin 340 -> 340 bytes
 tools/cutadapt/test-data/A2.fastq.gz          | Bin 326 -> 326 bytes
 .../test-data/cutadapt_nextseq_out.fq.gz      | Bin 12158 -> 12158 bytes
 .../cutadapt_out1_internal_adapter.fq.gz      | Bin 0 -> 12180 bytes
 .../test-data/cutadapt_out1_max_length.fq.gz  | Bin 134 -> 134 bytes
 .../test-data/cutadapt_out1_min_length.fq.gz  | Bin 12155 -> 9298 bytes
 .../cutadapt_out2_internal_adapter.fq.gz      | Bin 0 -> 12153 bytes
 .../test-data/cutadapt_out2_max_length.fq.gz  | Bin 139 -> 139 bytes
 .../test-data/cutadapt_out2_min_length.fq.gz  | Bin 12138 -> 10480 bytes
 .../test-data/cutadapt_shorten_3prime.out     |  12 ++
 .../test-data/cutadapt_shorten_5prime.out     |  12 ++
 .../cutadapt_shorten_expected_errors.out      |  12 ++
 .../cutadapt_shorten_internal_adapters.out    |  12 ++
 .../test-data/cutadapt_trimmed.out.gz         | Bin 537 -> 537 bytes
 .../test-data/cutadapt_untrimmed.out.gz       | Bin 12095 -> 12095 bytes
 tools/cutadapt/test-data/unknown.fastq.gz     | Bin 173 -> 173 bytes
 18 files changed, 211 insertions(+), 55 deletions(-)
 create mode 100644 tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz
 create mode 100644 tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz
 create mode 100644 tools/cutadapt/test-data/cutadapt_shorten_3prime.out
 create mode 100644 tools/cutadapt/test-data/cutadapt_shorten_5prime.out
 create mode 100644 tools/cutadapt/test-data/cutadapt_shorten_expected_errors.out
 create mode 100644 tools/cutadapt/test-data/cutadapt_shorten_internal_adapters.out

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index b14dbd31a77..300970a96a8 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -109,14 +109,14 @@ $adapter_options.revcomp
 $filter_options.discard_trimmed
 $filter_options.discard_untrimmed
 
-#if str($filter_options.minimum_options.minimum_r2) == 'true':
+#if str($filter_options.minimum_options.minimum_r2) == 'True':
     --minimum-length=$filter_options.minimum_length:$filter_options.minimum_options.value_minimum
-#elif str($filter_options.minimum_length)
+#elif str($filter_options.minimum_length):
     --minimum-length=$filter_options.minimum_length
 #end if
-#if str($filter_options.maximum_options.maximum_r2) == 'true':
+#if str($filter_options.maximum_options.maximum_r2) == 'True':
     --maximum-length=$filter_options.maximum_length:$filter_options.maximum_options.value_maximum
-#elif str($filter_options.maximum_length)
+#elif str($filter_options.maximum_length):
     --maximum-length=$filter_options.maximum_length
 #end if
 #if str($filter_options.max_n):
@@ -139,16 +139,20 @@ $filter_options.discard_untrimmed
     --nextseq-trim=$read_mod_options.nextseq_trim
 #end if
 $read_mod_options.trim_n
-#if str($read_mod_options.length) != '0':
-    --length=$read_mod_options.length
+#if str($read_mod_options.shorten_options.shorten_values) == 'True':
+    #if str($read_mod_options.shorten_options.shorten_end) == '3prime'
+        --length=$read_mod_options.shorten_options.length
+    #else
+        --length=-$read_mod_options.shorten_options.length
+    #end if
 #end if
-#if $read_mod_options.length_tag != '':
+#if str($read_mod_options.length_tag) != '':
     --length-tag='$read_mod_options.length_tag'
 #end if
-#if $read_mod_options.cut != '0':
+#if str($read_mod_options.cut) != '0':
     --cut=$read_mod_options.cut
 #end if
-#if $read_mod_options.rename != '':
+#if str($read_mod_options.rename) != '':
     --rename='$read_mod_options.rename'
 #end if
 $read_mod_options.zero_cap
@@ -200,17 +204,20 @@ $read_mod_options.zero_cap
                 <option value="lowercase">Lowercase: convert to lowercase</option>
                 <option value="none">None: leave unchanged</option>
             </param>
+            <param name="internal" type="select" label="Disallow internal adaptor ocurrences" help="TODO">
+                <option value="X">Enabled</option>
+                <option value="" selected="True">Disabled</option>
+            </param>
             <param argument="--error-rate" type="float" min="0" max="1" value="0.1" label="Maximum error rate" help="Maximum allowed error rate (no. of errors divided by the length of the matching region)." />
             <param argument="--no-indels" type="boolean" value="False" truevalue="--no-indels" falsevalue="" label="Do not allow indels (Use ONLY with anchored 5' (front) adapters)." help="Do not allow indels in the alignments. That is, allow only mismatches. This option is currently only supported for anchored 5' adapters ('^ADAPTER') (default: both mismatches and indels are allowed)." />
             <param argument="--times" type="integer" min="1" value="1" label="Match times" help="Try to remove adapters at most COUNT times. Useful when an adapter gets appended multiple times." />
             <param argument="--overlap" type="integer" min="1" value="3" label="Minimum overlap length" help="Minimum overlap length. If the overlap between the adapter and the sequence is shorter than LENGTH, the read is not modified. This reduces the number of bases trimmed purely due to short random adapter matches." />
-            <param name="match_read_wildcards" type="select"  label="Match Wildcards" help="Allow 'N's as matches. Default: In the adapters but not in the reads">
+                <param name="match_read_wildcards" type="select"  label="Match wildcards" help="Allow 'N's as matches. Default: in the adapters but not in the reads">
                 <option value=" " selected="True">In the adapters but not in the reads</option>
                 <option value="--match-read-wildcards">In the adapters and in the reads</option>
                 <option value="--no-match-adapter-wildcards">Nowhere</option>
             </param>
             <param argument="--revcomp" type="boolean" value="False" truevalue="--revcomp" falsevalue="" label="Look for adapters in the reverse complement" help="Check both the read and its reverse complement for adapter matches. If match is on reverse-complemented version, output that one. Default: check only read." />
-
         </section>
 
         <!-- Filter Options -->
@@ -220,25 +227,25 @@ $read_mod_options.zero_cap
             <param argument="--minimum-length" type="integer" min="0" optional="True" value="" label="Minimum length" help="Discard trimmed reads that are shorter than LENGTH.  Reads that are too short even before adapter removal are also discarded. In colorspace, an initial primer is not counted." />
             <conditional name="minimum_options">
                 <param name="minimum_r2" type="select" label="Specify a minimum length for reverse reads (R2)" help="When trimming paired-end reads, the minimum lengths for R1 and R2 can be specified separately. If not provided, the same minimum length applies to both reads.">
-                    <option value="true">Enable</option>
-                    <option value="false" selected="True">Disable</option>
+                    <option value="True">Enabled</option>
+                    <option value="False" selected="True">Disabled</option>
                 </param>
-                <when value="true">
+                <when value="True">
                     <param name="value_minimum" type="integer" min="0" optional="True" value="" label="Minimum length" />
                 </when>
-                <when value="false">
+                <when value="False">
                 </when>
             </conditional>
             <param argument="--maximum-length" type="integer" min="0" optional="True" value="" label="Maximum length" help="Discard trimmed reads that are longer than LENGTH.  Reads that are too long even before adapter removal are also discarded. In colorspace, an initial primer is not counted." />
             <conditional name="maximum_options">
                 <param name="maximum_r2" type="select" label="Specify a maximum length for reverse reads (R2)" help="When trimming paired-end reads, the maximum lengths for R1 and R2 can be specified separately. If not provided, the same maximum length applies to both reads.">
-                    <option value="true">Enable</option>
-                    <option value="false" selected="True">Disable</option>
+                    <option value="True">Enabled</option>
+                    <option value="False" selected="True">Disabled</option>
                 </param>
-                <when value="true">
+                <when value="True">
                     <param name="value_maximum" type="integer" min="0" optional="True" value="" label="Maximum length" />
                 </when>
-                <when value="false">
+                <when value="False">
                 </when>
             </conditional>                
             <param argument="--max-n" type="float" min="0" optional="True" label="Max N" help="Discard reads with more than this number of 'N' bases. A number between 0 and 1 is interpreted as a fraction of the read length." />
@@ -262,9 +269,25 @@ $read_mod_options.zero_cap
             <param argument="--nextseq-trim" type="integer" value="0" label="NextSeq trimming" help="Experimental option for quality trimming of NextSeq data. This is necessary because that machine cannot distinguish between G and reaching the end of the fragment (it encodes G as ‘black’). This option works like regular quality trimming (where one would use -q 20 instead), except that the qualities of G bases are ignored." />
             <param argument="--trim-n" type="boolean" truevalue="--trim-n" falsevalue="" checked="False" label="Trim Ns" help="Trim N's on ends of reads." />
             <param argument="--strip-suffix" label="Strip suffix" type="text" help="Remove this suffix from read names if present." />
-            <param argument="--length" type="integer" value="0" label="Length" help="Shorten reads to this length. This modification is applied after adapter trimming." />
+            <conditional name="shorten_options">
+                <param name="shorten_values" type="select" label="Shortening reads to a fixed length" help="If you want to remove a fixed number of bases from each read, use the –cut option instead.">
+                    <option value="True">Enabled</option>
+                    <option value="False" selected="True">Disabled</option>
+                </param>
+                <when value="True">
+                    <param argument="--length" type="integer" value="0" label="Length" help="Shorten reads to this length. This modification is applied after adapter trimming." />
+                    <param name="shorten_end" type="select" label="End at which to apply the slice">
+                        <option value="3prime">3' ends</option>
+                        <option value="5prime">5' ends</option>
+                    </param>
+                </when>
+                <when value="False">
+                </when>
+            </conditional>
             <param argument="--length-tag" label="Length Tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." />
-            <param argument="--rename" label="Rename reads" type="text" help="This option can be used to rename both single-end and paired-end reads. " />
+            <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. ">
+                <validator type="regex">[A-Za-z0-9_ :-{}/+|]+</validator>            
+            </param>
             <param argument="--cut" label="Remove a fixed number of bases" type="integer" min="-100" max="100" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." />
             <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" />
         </section>
@@ -575,7 +598,9 @@ $read_mod_options.zero_cap
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="AGATCGGAAGAGC"/>
-            <param name="cut" value="5"/>
+             <section name="read_mod_options">
+                <param name="cut" value="5"/>
+            </section>
             <output name="out1" file="cutadapt_small_cut.out" ftype="fastq"/>
         </test>
         <!-- Test rename options -->
@@ -584,17 +609,21 @@ $read_mod_options.zero_cap
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="AGATCGGAAGAGC"/>
-            <param name="cut" value="5"/>
-            <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/>
+            <section name="read_mod_options">
+                <param name="cut" value="5"/>
+                <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/>
+            </section>
             <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/>
         </test>
-            <!-- Test action options -->
+        <!-- Test action options -->
         <test expect_num_outputs="1">
             <param name="type" value="single" />
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="CGTCCGAANTAG"/>
-            <param name="action" value="retain"/>
+            <section name="adapter_options">
+                <param name="action" value="retain"/>
+            </section>
             <output name="out1" file="cutadapt_action_retain.out" ftype="fastq"/>
         </test>
            <test expect_num_outputs="1">
@@ -602,7 +631,9 @@ $read_mod_options.zero_cap
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="CGTCCGAANTAG"/>
-            <param name="action" value="mask"/>
+            <section name="adapter_options">
+                <param name="action" value="mask"/>
+            </section>
             <output name="out1" file="cutadapt_action_mask.out" ftype="fastq"/>
         </test>
         <test expect_num_outputs="1">
@@ -610,7 +641,9 @@ $read_mod_options.zero_cap
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="CGTCCGAANTAG"/>
-            <param name="action" value="lowercase"/>
+            <section name="adapter_options">
+                <param name="action" value="lowercase"/>
+            </section>
             <output name="out1" file="cutadapt_action_lowercase.out" ftype="fastq"/>
         </test>
         <test expect_num_outputs="1">
@@ -618,16 +651,20 @@ $read_mod_options.zero_cap
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="CGTCCGAANTAG"/>
-            <param name="action" value="none"/>
+            <section name="adapter_options">
+                <param name="action" value="none"/>
+            </section>
             <output name="out1" file="cutadapt_action_none.out" ftype="fastq"/>
         </test>
-                <!-- Test revcomp options -->
+        <!-- Test revcomp options -->
         <test expect_num_outputs="1">
             <param name="type" value="single" />
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="TAAACAGATTAGT"/>
-            <param name="revcomp" value="true"/>
+            <section name="adapter_options">
+                <param name="revcomp" value="true"/>
+            </section>
             <output name="out1" file="cutadapt_revcomp.out" ftype="fastq"/>
         </test>
         <!-- Test minimum lenghth paired-reads -->
@@ -636,14 +673,14 @@ $read_mod_options.zero_cap
             <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" />
             <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" />
             <param name="adapter_source_list" value="user"/>
-            <param name="adapter" value="AGATCGGAAGAGC"/>
+            <param name="adapter" value="ATCTGGTTCC"/>
             <param name="adapter_source_list2" value="user"/>
-            <param name="adapter2" value="AGATCGGAAGAGC"/>
+            <param name="adapter2" value="CTACAAG"/>
             <section name="filter_options">
                 <param name="minimum_length" value="30"/>
                 <param name="pair_filter" value="both"/>
                 <conditional name="minimum_options">
-                    <param name="minimum_r2" value="true"/>
+                    <param name="minimum_r2" value="True"/>
                     <param name="value_minimum" value="10"/>
                 </conditional>
             </section>
@@ -654,7 +691,7 @@ $read_mod_options.zero_cap
                 <has_text text="--pair-filter=both"/>
             </assert_command>
         </test>
-                <!-- Test maximum lenghth paired-reads -->
+        <!-- Test maximum lenghth paired-reads -->
         <test expect_num_outputs="2">
             <param name="type" value="paired" />
             <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" />
@@ -667,7 +704,7 @@ $read_mod_options.zero_cap
                 <param name="pair_filter" value="both"/>
                 <param name="maximum_length" value="50"/>
                 <conditional name="maximum_options">
-                    <param name="maximum_r2" value="true"/>
+                    <param name="maximum_r2" value="True"/>
                     <param name="value_maximum" value="30"/>
                 </conditional>
             </section>
@@ -678,6 +715,77 @@ $read_mod_options.zero_cap
                 <has_text text="--pair-filter=both"/>
             </assert_command>
         </test>
+        <!-- Test length options -->
+        <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGCCGCTANGACG"/>
+            <section name="read_mod_options">
+                <conditional name="shorten_options">
+                    <param name="shorten_values" value="True"/>
+                    <param name="shorten_end" value="3prime"/>
+                    <param name="length" value="10"/>
+                </conditional>
+            </section>
+            <output name="out1" file="cutadapt_shorten_3prime.out" ftype="fastq"/>
+        </test>
+        <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGCCGCTANGACG"/>
+            <section name="read_mod_options">
+                <conditional name="shorten_options">
+                    <param name="shorten_values" value="True"/>
+                    <param name="shorten_end" value="5prime"/>
+                    <param name="length" value="10"/>
+                </conditional>
+            </section>
+            <output name="out1" file="cutadapt_shorten_5prime.out" ftype="fastq"/>
+        </test>
+        <!-- Test max expected errors options -->
+        <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGCGGCTTAGACG"/>
+            <section name="filter_options">
+                <param name="max_expected_errors" value="10"/>
+            </section>
+            <output name="out1" file="cutadapt_shorten_expected_errors.out" ftype="fastq"/>
+        </test>
+        <!-- Test disallow internal adaptors option -->
+        <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="GAANTAGCTACCAC"/>
+            <section name="adapter_options">
+                <param name="internal" value="X"/>
+            </section>
+            <output name="out1" file="cutadapt_shorten_internal_adapters.out" ftype="fastq"/>
+            <assert_command>
+                <has_text text="GAANTAGCTACCACX"/>
+            </assert_command>
+        </test>
+        <test expect_num_outputs="2">
+            <param name="type" value="paired" />
+            <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" />
+            <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGATCGGAAGAGC"/>
+            <param name="adapter_source_list2" value="user"/>
+            <param name="adapter2" value="AGATCGGAAGAGC"/>
+            <section name="adapter_options">
+                <param name="internal" value="X"/>
+            </section>
+            <output name="out1" decompress="True" file="cutadapt_out1_internal_adapter.fq.gz" ftype="fastq.gz"/>
+            <output name="out2" decompress="True" file="cutadapt_out2_internal_adapter.fq.gz" ftype="fastq.gz"/>
+            <assert_command>
+                <has_text text="AGATCGGAAGAGCX"/>
+            </assert_command>
+        </test>
     </tests>
 
     <help><![CDATA[
diff --git a/tools/cutadapt/macros.xml b/tools/cutadapt/macros.xml
index 9b057d0ecfb..3e3fb1f62b7 100644
--- a/tools/cutadapt/macros.xml
+++ b/tools/cutadapt/macros.xml
@@ -30,13 +30,13 @@
 
         #for $a in $library.r1.adapters
             #if $a.adapter_source.adapter_source_list == 'builtin':
-                -a '${a.adapter_source.adapter.fields.name}'='${a.adapter_source.adapter}'
+                -a '${a.adapter_source.adapter.fields.name}'='${a.adapter_source.adapter}${$adapter_options.internal}'
             #else if $a.adapter_source.adapter_source_list == 'file':
-                -a file:'${a.adapter_source.adapter_file}'
+                -a file:'${a.adapter_source.adapter_file}${$adapter_options.internal}'
             #else if str($a.adapter_source.adapter_name) != "":
-                -a '${a.adapter_source.adapter_name}'='${a.adapter_source.adapter}'
+                -a '${a.adapter_source.adapter_name}'='${a.adapter_source.adapter}${$adapter_options.internal}'
             #else
-                -a '${a.adapter_source.adapter}'
+                -a '${a.adapter_source.adapter}${$adapter_options.internal}'
             #end if
         #end for
         #for $aa in $library.r1.anywhere_adapters
@@ -52,13 +52,13 @@
         #end for
         #for $fa in $library.r1.front_adapters
             #if $fa.front_adapter_source.front_adapter_source_list == 'builtin':
-                -g '${fa.front_adapter_source.front_adapter.fields.name}'='${fa.front_adapter_source.front_adapter}'
+                -g '${fa.front_adapter_source.front_adapter.fields.name}'='${$adapter_options.internal}${fa.front_adapter_source.front_adapter}'
             #else if $fa.front_adapter_source.front_adapter_source_list == 'file':
-                -g file:'${fa.front_adapter_source.front_adapter_file}'
+                -g file:'${$adapter_options.internal}${fa.front_adapter_source.front_adapter_file}'
             #else if str($fa.front_adapter_source.front_adapter_name) != "":
-                -g '${fa.front_adapter_source.front_adapter_name}'='${fa.front_adapter_source.front_adapter}'
+                -g '${$adapter_options.internal}${fa.front_adapter_source.front_adapter_name}'='${fa.front_adapter_source.front_adapter}'
             #else
-                -g '${fa.front_adapter_source.front_adapter}'
+                -g '${$adapter_options.internal}${fa.front_adapter_source.front_adapter}'
             #end if
         #end for
 
@@ -95,13 +95,13 @@
 
         #for $a in $library.r2.adapters2
             #if $a.adapter_source2.adapter_source_list2 == 'builtin':
-                -A '${a.adapter_source2.adapter2.fields.name}'='${a.adapter_source2.adapter2}'
+                -A '${a.adapter_source2.adapter2.fields.name}'='${a.adapter_source2.adapter2}${$adapter_options.internal}'
             #else if $a.adapter_source2.adapter_source_list2 == 'file':
-                -A file:'${a.adapter_source2.adapter_file2}'
+                -A file:'${a.adapter_source2.adapter_file2}${$adapter_options.internal}'
             #else if str($a.adapter_source2.adapter_name2) != "":
-                -A '${a.adapter_source2.adapter_name2}'='${a.adapter_source2.adapter2}'
+                -A '${a.adapter_source2.adapter_name2}'='${a.adapter_source2.adapter2}${$adapter_options.internal}'
             #else
-                -A '${a.adapter_source2.adapter2}'
+                -A '${a.adapter_source2.adapter2}${$adapter_options.internal}'
             #end if
         #end for
         #for $aa in $library.r2.anywhere_adapters2
@@ -117,13 +117,13 @@
         #end for
         #for $fa in $library.r2.front_adapters2
             #if $fa.front_adapter_source2.front_adapter_source_list2 == 'builtin':
-                -G '${fa.front_adapter_source2.front_adapter2.fields.name}'='${fa.front_adapter_source2.front_adapter2}'
+                -G '${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2.fields.name}'='${fa.front_adapter_source2.front_adapter2}'
             #else if $fa.front_adapter_source2.front_adapter_source_list2  == 'file':
-                -G file:'${fa.front_adapter_source2.front_adapter_file2}'
+                -G file:'${$adapter_options.internal}${fa.front_adapter_source2.front_adapter_file2}'
             #else if str($fa.front_adapter_source2.front_adapter_name2) != "":
-                -G '${fa.front_adapter_source2.front_adapter_name2}'='${fa.front_adapter_source2.front_adapter2}'
+                -G '${fa.front_adapter_source2.front_adapter_name2}'='${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2}'
             #else
-                -G '${fa.front_adapter_source2.front_adapter2}'
+                -G '${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2}'
             #end if
         #end for
 
@@ -205,7 +205,7 @@
                         <param name="adapter_source_list" type="select" label="Source" >
                             <option value="builtin" selected="True">Standard (select from the list below)</option>
                             <option value="user">Enter custom sequence</option>
-                            <option value="file">File From History</option>
+                            <option value="file">File from history</option>
                         </param>
 
                         <when value="user">
@@ -306,7 +306,7 @@
                         <param name="front_adapter_source_list2" type="select" label="Source">
                             <option value="builtin" selected="True">Standard (select from the list below)</option>
                             <option value="user">Enter custom sequence</option>
-                            <option value="file">File From History</option>
+                            <option value="file">File from history</option>
                         </param>
 
                         <when value="user">
@@ -327,7 +327,7 @@
                         <param name="anywhere_adapter_source_list2" type="select" label="Source">
                             <option value="builtin" selected="True">Standard (select from the list below)</option>
                             <option value="user">Enter custom sequence</option>
-                            <option value="file">File From History</option>
+                            <option value="file">File from history</option>
                         </param>
 
                         <when value="user">
diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz
index 1635e3cc999c2a60c131ac85df585770c8fa803d..492819bb7c2ec0a974f8432872ae64d6f0fec966 100644
GIT binary patch
delta 15
Wcmcb@bcKmczMF$#UHe8hKSls3I0T>o

delta 15
Wcmcb@bcKmczMF%=#BC#+A0q%H7X#%0

diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz
index 4e4bb5ce630e4718f5c87e20e692c25b5d8892e3..05d0507d24c22d52fcc68aacd598568ae43416b3 100644
GIT binary patch
delta 15
WcmX@cbc~5jzMF$#UHe8h2SxxUlmvDF

delta 15
WcmX@cbc~5jzMF%=#BC#+10w(;a|62o

diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz
index 80c3d43467770d941abfbf95029ab645efcbf5d4..b40594d6369aae562e0c2a5b5fc8d9333e4d2d98 100644
GIT binary patch
delta 15
Wcmewt_b-l3zMF#~w|yg9g+2f^Bn86&

delta 15
Wcmewt_b-l3zMF&Li|a<V3Vi@K1O^BI

diff --git a/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..b4ed3a8e10ab6569dd94ec5cb7afc0b5b223029f
GIT binary patch
literal 12180
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
WqSa0~ZHvb|^#2bf64_HA&;S7avOM<y

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz
index 16ee3977765cee609b89cbd42d0a2cc529c51f27..a16e45d105d0a506713ffdb6f8a682aa47a1d43e 100644
GIT binary patch
delta 14
VcmZo;Y-41T@8)2r@0iHe000_)1LXh!

delta 14
VcmZo;Y-41T@8)2z^P0%k000<517-jK

diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz
index d2b182f3b1876854bdb58d04512afff6988b59ef..0ef6be6da2eca8f837e764165a909c0be1434b25 100644
GIT binary patch
literal 9298
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
Aa{vGU

literal 12155
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

diff --git a/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..48e71cfd240df2961fa98bb22fa9bcac22c57037
GIT binary patch
literal 12153
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

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz
index 0627bf4b7648059444225466d0ec8a86d3bb8a76..529a6f4d937cbe75cd2098045bfcf6eaf8f152a7 100644
GIT binary patch
delta 14
VcmeBX>}F(>@8)2r@0iHe3IH1h1M~m@

delta 14
VcmeBX>}F(>@8)2z^P0%k3IG_%19boZ

diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz
index 067a3d0cd4b115b6b5cd59d9ba27a078cb318c60..c96771ab1c9ea21d7122667dcff02b8548dcbfc4 100644
GIT binary patch
literal 10480
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

literal 12138
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

diff --git a/tools/cutadapt/test-data/cutadapt_shorten_3prime.out b/tools/cutadapt/test-data/cutadapt_shorten_3prime.out
new file mode 100644
index 00000000000..3e27035a57f
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_shorten_3prime.out
@@ -0,0 +1,12 @@
+@prefix:1_13_573/1
+CGTCCGAANT
++
+)3%)&&&&!.
+@prefix:1_13_1259/1
+
++
+
+@prefix:1_13_1440/1
+CAAGATCTNC
++
+<=A:A=57!7
diff --git a/tools/cutadapt/test-data/cutadapt_shorten_5prime.out b/tools/cutadapt/test-data/cutadapt_shorten_5prime.out
new file mode 100644
index 00000000000..538740e4dc4
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_shorten_5prime.out
@@ -0,0 +1,12 @@
+@prefix:1_13_573/1
+TTAGACAAAT
++
+75)'77&&&5
+@prefix:1_13_1259/1
+
++
+
+@prefix:1_13_1440/1
+CTAGTTAAAC
++
+)71>70<,=:
diff --git a/tools/cutadapt/test-data/cutadapt_shorten_expected_errors.out b/tools/cutadapt/test-data/cutadapt_shorten_expected_errors.out
new file mode 100644
index 00000000000..767ca2279af
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_shorten_expected_errors.out
@@ -0,0 +1,12 @@
+@prefix:1_13_573/1
+CGTCCGAANTAGCTACCACCCTGATTAGACAAAT
++
+)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5
+@prefix:1_13_1259/1
+AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT
++
+;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<&
+@prefix:1_13_1440/1
+CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC
++
+<=A:A=57!7<';<6?5;;6:+:=)71>70<,=:
diff --git a/tools/cutadapt/test-data/cutadapt_shorten_internal_adapters.out b/tools/cutadapt/test-data/cutadapt_shorten_internal_adapters.out
new file mode 100644
index 00000000000..767ca2279af
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_shorten_internal_adapters.out
@@ -0,0 +1,12 @@
+@prefix:1_13_573/1
+CGTCCGAANTAGCTACCACCCTGATTAGACAAAT
++
+)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5
+@prefix:1_13_1259/1
+AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT
++
+;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<&
+@prefix:1_13_1440/1
+CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC
++
+<=A:A=57!7<';<6?5;;6:+:=)71>70<,=:
diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz
index 5adaf22b4068071be4ac95d0fb38fbfba90a0c6f..93b0776b83e4d7d56e7ac6cafa6296f276fbd8a2 100644
GIT binary patch
delta 15
WcmbQqGLwZ(zMF&LcKb#)VI}|~kpv+C

delta 15
WcmbQqGLwZ(zMF#~(QPA}FcSbCa06xl

diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz
index 6b9e56db4e06c688287bfdc6fca4151e87173fea..120f3cc6a7db5774923b471ac4b7c31ed1ab93bb 100644
GIT binary patch
delta 15
WcmdlVw?B?ezMF&LcKb#)OML(^Rt0nb

delta 15
WcmdlVw?B?ezMF#~(QPA}r9J>GH3Yc;

diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz
index 13b4154300f7aaa2371c3eb1d1254d55ab0d0ba2..2683cff111cb220de1b621038e140b18258ad2e9 100644
GIT binary patch
delta 14
VcmZ3>xR#MkzMF$#UHe3~<p3Xp1c(3t

delta 14
VcmZ3>xR#MkzMF%=#BCzmasV711I+*c


From 318f03d8014617457ddc35bd3698dfee5deee872 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Tue, 1 Jun 2021 22:13:42 +0200
Subject: [PATCH 08/20] Add building internal adaptor tests and fix typo

---
 tools/cutadapt/cutadapt.xml                   |  10 ++++++
 tools/cutadapt/macros.xml                     |  32 +++++++++---------
 tools/cutadapt/test-data/A1.fastq.gz          | Bin 340 -> 340 bytes
 tools/cutadapt/test-data/A2.fastq.gz          | Bin 326 -> 326 bytes
 .../cutadapt_builtin_internal_adapter.out     |  12 +++++++
 .../test-data/cutadapt_nextseq_out.fq.gz      | Bin 12158 -> 12158 bytes
 .../cutadapt_out1_internal_adapter.fq.gz      | Bin 12180 -> 12180 bytes
 .../test-data/cutadapt_out1_max_length.fq.gz  | Bin 134 -> 134 bytes
 .../test-data/cutadapt_out1_min_length.fq.gz  | Bin 9298 -> 9298 bytes
 .../cutadapt_out2_internal_adapter.fq.gz      | Bin 12153 -> 12153 bytes
 .../test-data/cutadapt_out2_max_length.fq.gz  | Bin 139 -> 139 bytes
 .../test-data/cutadapt_out2_min_length.fq.gz  | Bin 10480 -> 10480 bytes
 .../test-data/cutadapt_trimmed.out.gz         | Bin 537 -> 537 bytes
 .../test-data/cutadapt_untrimmed.out.gz       | Bin 12095 -> 12095 bytes
 tools/cutadapt/test-data/unknown.fastq.gz     | Bin 173 -> 173 bytes
 15 files changed, 38 insertions(+), 16 deletions(-)
 create mode 100644 tools/cutadapt/test-data/cutadapt_builtin_internal_adapter.out

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index 300970a96a8..c3a2ba4c7f2 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -786,6 +786,16 @@ $read_mod_options.zero_cap
                 <has_text text="AGATCGGAAGAGCX"/>
             </assert_command>
         </test>
+        <test expect_num_outputs="1">
+            <param name="type" value="single" />
+            <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
+            <param name="adapter_source_list" value="builtin"/>
+            <param name="adapter" value="TGTAGGCC"/>
+            <section name="adapter_options">
+                <param name="internal" value="X"/>
+            </section>
+            <output name="out1" file="cutadapt_builtin_internal_adapter.out" ftype="fastq"/>
+        </test>
     </tests>
 
     <help><![CDATA[
diff --git a/tools/cutadapt/macros.xml b/tools/cutadapt/macros.xml
index 3e3fb1f62b7..684f6cf1fdf 100644
--- a/tools/cutadapt/macros.xml
+++ b/tools/cutadapt/macros.xml
@@ -30,13 +30,13 @@
 
         #for $a in $library.r1.adapters
             #if $a.adapter_source.adapter_source_list == 'builtin':
-                -a '${a.adapter_source.adapter.fields.name}'='${a.adapter_source.adapter}${$adapter_options.internal}'
+                -a '${a.adapter_source.adapter.fields.name}'='${a.adapter_source.adapter}${adapter_options.internal}'
             #else if $a.adapter_source.adapter_source_list == 'file':
-                -a file:'${a.adapter_source.adapter_file}${$adapter_options.internal}'
+                -a file:'${a.adapter_source.adapter_file}${adapter_options.internal}'
             #else if str($a.adapter_source.adapter_name) != "":
-                -a '${a.adapter_source.adapter_name}'='${a.adapter_source.adapter}${$adapter_options.internal}'
+                -a '${a.adapter_source.adapter_name}'='${a.adapter_source.adapter}${adapter_options.internal}'
             #else
-                -a '${a.adapter_source.adapter}${$adapter_options.internal}'
+                -a '${a.adapter_source.adapter}${adapter_options.internal}'
             #end if
         #end for
         #for $aa in $library.r1.anywhere_adapters
@@ -52,13 +52,13 @@
         #end for
         #for $fa in $library.r1.front_adapters
             #if $fa.front_adapter_source.front_adapter_source_list == 'builtin':
-                -g '${fa.front_adapter_source.front_adapter.fields.name}'='${$adapter_options.internal}${fa.front_adapter_source.front_adapter}'
+                -g '${fa.front_adapter_source.front_adapter.fields.name}'='${adapter_options.internal}${fa.front_adapter_source.front_adapter}'
             #else if $fa.front_adapter_source.front_adapter_source_list == 'file':
-                -g file:'${$adapter_options.internal}${fa.front_adapter_source.front_adapter_file}'
+                -g file:'${adapter_options.internal}${fa.front_adapter_source.front_adapter_file}'
             #else if str($fa.front_adapter_source.front_adapter_name) != "":
-                -g '${$adapter_options.internal}${fa.front_adapter_source.front_adapter_name}'='${fa.front_adapter_source.front_adapter}'
+                -g '${adapter_options.internal}${fa.front_adapter_source.front_adapter_name}'='${fa.front_adapter_source.front_adapter}'
             #else
-                -g '${$adapter_options.internal}${fa.front_adapter_source.front_adapter}'
+                -g '${adapter_options.internal}${fa.front_adapter_source.front_adapter}'
             #end if
         #end for
 
@@ -95,13 +95,13 @@
 
         #for $a in $library.r2.adapters2
             #if $a.adapter_source2.adapter_source_list2 == 'builtin':
-                -A '${a.adapter_source2.adapter2.fields.name}'='${a.adapter_source2.adapter2}${$adapter_options.internal}'
+                -A '${a.adapter_source2.adapter2.fields.name}'='${a.adapter_source2.adapter2}${adapter_options.internal}'
             #else if $a.adapter_source2.adapter_source_list2 == 'file':
-                -A file:'${a.adapter_source2.adapter_file2}${$adapter_options.internal}'
+                -A file:'${a.adapter_source2.adapter_file2}${adapter_options.internal}'
             #else if str($a.adapter_source2.adapter_name2) != "":
-                -A '${a.adapter_source2.adapter_name2}'='${a.adapter_source2.adapter2}${$adapter_options.internal}'
+                -A '${a.adapter_source2.adapter_name2}'='${a.adapter_source2.adapter2}${adapter_options.internal}'
             #else
-                -A '${a.adapter_source2.adapter2}${$adapter_options.internal}'
+                -A '${a.adapter_source2.adapter2}${adapter_options.internal}'
             #end if
         #end for
         #for $aa in $library.r2.anywhere_adapters2
@@ -117,13 +117,13 @@
         #end for
         #for $fa in $library.r2.front_adapters2
             #if $fa.front_adapter_source2.front_adapter_source_list2 == 'builtin':
-                -G '${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2.fields.name}'='${fa.front_adapter_source2.front_adapter2}'
+                -G '${adapter_options.internal}${fa.front_adapter_source2.front_adapter2.fields.name}'='${fa.front_adapter_source2.front_adapter2}'
             #else if $fa.front_adapter_source2.front_adapter_source_list2  == 'file':
-                -G file:'${$adapter_options.internal}${fa.front_adapter_source2.front_adapter_file2}'
+                -G file:'${adapter_options.internal}${fa.front_adapter_source2.front_adapter_file2}'
             #else if str($fa.front_adapter_source2.front_adapter_name2) != "":
-                -G '${fa.front_adapter_source2.front_adapter_name2}'='${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2}'
+                -G '${fa.front_adapter_source2.front_adapter_name2}'='${adapter_options.internal}${fa.front_adapter_source2.front_adapter2}'
             #else
-                -G '${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2}'
+                -G '${adapter_options.internal}${fa.front_adapter_source2.front_adapter2}'
             #end if
         #end for
 
diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz
index 492819bb7c2ec0a974f8432872ae64d6f0fec966..8f0e0602b2edc9ec86dca2ff4ae24271e6dde556 100644
GIT binary patch
delta 15
Wcmcb@bcKmczMF$#>ZFZqevAMo*#wdR

delta 15
Wcmcb@bcKmczMF$#UHe8hKSls3I0T>o

diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz
index 05d0507d24c22d52fcc68aacd598568ae43416b3..91aab83a1f1f29c1522a15348a9d4a323feb37e6 100644
GIT binary patch
delta 15
WcmX@cbc~5jzMF$#>ZFZq4vYXMH3Vn?

delta 15
WcmX@cbc~5jzMF$#UHe8h2SxxUlmvDF

diff --git a/tools/cutadapt/test-data/cutadapt_builtin_internal_adapter.out b/tools/cutadapt/test-data/cutadapt_builtin_internal_adapter.out
new file mode 100644
index 00000000000..767ca2279af
--- /dev/null
+++ b/tools/cutadapt/test-data/cutadapt_builtin_internal_adapter.out
@@ -0,0 +1,12 @@
+@prefix:1_13_573/1
+CGTCCGAANTAGCTACCACCCTGATTAGACAAAT
++
+)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5
+@prefix:1_13_1259/1
+AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT
++
+;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<&
+@prefix:1_13_1440/1
+CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC
++
+<=A:A=57!7<';<6?5;;6:+:=)71>70<,=:
diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz
index b40594d6369aae562e0c2a5b5fc8d9333e4d2d98..0da18600442eb77c5a04f3e5019c125b810ac105 100644
GIT binary patch
delta 15
Wcmewt_b-l3zMF#~e9}g?3Vi@H*9Eu$

delta 15
Wcmewt_b-l3zMF#~w|yg9g+2f^Bn86&

diff --git a/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz
index b4ed3a8e10ab6569dd94ec5cb7afc0b5b223029f..bc650c71568f3ca6d7ca91bd750a30c923ce0614 100644
GIT binary patch
delta 15
WcmbOdKP8?`zMF$#-{g&Kefj_^^aW%9

delta 15
WcmbOdKP8?`zMF&LUC&0gK79Zz@db?l

diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz
index a16e45d105d0a506713ffdb6f8a682aa47a1d43e..6d58cd3faa479de074762fcc3731fde04d341337 100644
GIT binary patch
delta 14
VcmZo;Y-41T@8)30o;;DQ0RS3D1Ka=r

delta 14
VcmZo;Y-41T@8)2r@0iHe000_)1LXh!

diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz
index 0ef6be6da2eca8f837e764165a909c0be1434b25..24c44a5297ed627e3c4a0d07986c76dfb2a2dfe7 100644
GIT binary patch
delta 15
WcmccQamj;CzMF#~VDd&b9~A&CLj?B#

delta 15
WcmccQamj;CzMF#~y<;Prj|u=SmIVU<

diff --git a/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz
index 48e71cfd240df2961fa98bb22fa9bcac22c57037..ec55e23048948ef8a7ae93a946d3370c18e5918d 100644
GIT binary patch
delta 15
Wcmewv_cM-7zMF$#-{g&K#rgm?um%wT

delta 15
Wcmewv_cM-7zMF&LUC&0gVtoKNtp+*(

diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz
index 529a6f4d937cbe75cd2098045bfcf6eaf8f152a7..5c1a596e45f5e308a279f3b7ab1be6fa9efde8ea 100644
GIT binary patch
delta 14
VcmeBX>}F(>@8)30o;;DQ6#yE}1M2_)

delta 14
VcmeBX>}F(>@8)2r@0iHe3IH1h1M~m@

diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz
index c96771ab1c9ea21d7122667dcff02b8548dcbfc4..94d1667e121e24de2c345cd92c2a57511de71cb0 100644
GIT binary patch
delta 15
Wcmewm_#u!@zMF#~VDd(`R~i5^wFTz@

delta 15
Wcmewm_#u!@zMF#~y<;QWD-8fM2nF*1

diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz
index 93b0776b83e4d7d56e7ac6cafa6296f276fbd8a2..a2a91ad9f008ef1b9d0bcaa9e625254e636187ae 100644
GIT binary patch
delta 15
WcmbQqGLwZ(zMF&L;G~Ug!b|`nECdn&

delta 15
WcmbQqGLwZ(zMF&LcKb#)VI}|~kpv+C

diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz
index 120f3cc6a7db5774923b471ac4b7c31ed1ab93bb..26b630e33125f8c2aa4b51a2f2e23d16e01c4ca1 100644
GIT binary patch
delta 15
WcmdlVw?B?ezMF&L;G~UgmihoM@daf7

delta 15
WcmdlVw?B?ezMF&LcKb#)OML(^Rt0nb

diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz
index 2683cff111cb220de1b621038e140b18258ad2e9..4edef7b57a5bade2bf8d1f85b6a687b29fe4520b 100644
GIT binary patch
delta 14
VcmZ3>xR#MkzMF$#>ZFNm%K;xU1bP4f

delta 14
VcmZ3>xR#MkzMF$#UHe3~<p3Xp1c(3t


From ef51a2276b394640238239a03f2c30ba8416c1c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Tue, 1 Jun 2021 22:15:34 +0200
Subject: [PATCH 09/20] Include assertion internal adaptor building test

---
 tools/cutadapt/cutadapt.xml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index c3a2ba4c7f2..bebebf3becb 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -795,6 +795,9 @@ $read_mod_options.zero_cap
                 <param name="internal" value="X"/>
             </section>
             <output name="out1" file="cutadapt_builtin_internal_adapter.out" ftype="fastq"/>
+            <assert_command>
+                <has_text text="TGTAGGCCX"/>
+            </assert_command>
         </test>
     </tests>
 

From cb896d3140d29c1f8ffcebdbadf59bb8deceec5b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Tue, 1 Jun 2021 22:18:29 +0200
Subject: [PATCH 10/20] Modify cut parameter

---
 tools/cutadapt/cutadapt.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index bebebf3becb..7583c897d05 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -288,7 +288,7 @@ $read_mod_options.zero_cap
             <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. ">
                 <validator type="regex">[A-Za-z0-9_ :-{}/+|]+</validator>            
             </param>
-            <param argument="--cut" label="Remove a fixed number of bases" type="integer" min="-100" max="100" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." />
+            <param argument="--cut" label="Remove a fixed number of bases" type="integer" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." />
             <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" />
         </section>
 

From b0e6e14028419a4cc172d399c00e2418e5723480 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Tue, 1 Jun 2021 22:25:02 +0200
Subject: [PATCH 11/20] Include information in help field

---
 tools/cutadapt/cutadapt.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index 7583c897d05..cfed29ba3e4 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -204,7 +204,7 @@ $read_mod_options.zero_cap
                 <option value="lowercase">Lowercase: convert to lowercase</option>
                 <option value="none">None: leave unchanged</option>
             </param>
-            <param name="internal" type="select" label="Disallow internal adaptor ocurrences" help="TODO">
+            <param name="internal" type="select" label="Disallow internal adaptor ocurrences" help="The non-internal 5’ and 3’ adapter types disallow internal occurrences of the adapter sequence. The adapter must always be at one of the ends of the read, but partial occurrences are also ok.">
                 <option value="X">Enabled</option>
                 <option value="" selected="True">Disabled</option>
             </param>

From 76b023454e24e2dda8462cf43fce42ac64163807 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Wed, 2 Jun 2021 17:09:52 +0200
Subject: [PATCH 12/20] Add sanitize --length-tag

---
 tools/cutadapt/cutadapt.xml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index cfed29ba3e4..2b0a7bdbe75 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -284,7 +284,9 @@ $read_mod_options.zero_cap
                 <when value="False">
                 </when>
             </conditional>
-            <param argument="--length-tag" label="Length Tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." />
+            <param argument="--length-tag" label="Length tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." >
+                <validator type="regex">[A-Za-z_= :]+</validator>            
+            </param>
             <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. ">
                 <validator type="regex">[A-Za-z0-9_ :-{}/+|]+</validator>            
             </param>

From 028015260b29f519317f3ec5f69db0c101d1d035 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Wed, 2 Jun 2021 19:47:51 +0200
Subject: [PATCH 13/20] Add sanitizers

---
 tools/cutadapt/cutadapt.xml                   |  31 ++++++++++++++++--
 tools/cutadapt/macros.xml                     |   2 +-
 tools/cutadapt/test-data/A1.fastq.gz          | Bin 340 -> 340 bytes
 tools/cutadapt/test-data/A2.fastq.gz          | Bin 326 -> 326 bytes
 .../test-data/cutadapt_nextseq_out.fq.gz      | Bin 12158 -> 12158 bytes
 .../cutadapt_out1_internal_adapter.fq.gz      | Bin 12180 -> 12180 bytes
 .../test-data/cutadapt_out1_max_length.fq.gz  | Bin 134 -> 134 bytes
 .../test-data/cutadapt_out1_min_length.fq.gz  | Bin 9298 -> 9298 bytes
 .../cutadapt_out2_internal_adapter.fq.gz      | Bin 12153 -> 12153 bytes
 .../test-data/cutadapt_out2_max_length.fq.gz  | Bin 139 -> 139 bytes
 .../test-data/cutadapt_out2_min_length.fq.gz  | Bin 10480 -> 10480 bytes
 .../test-data/cutadapt_small_rename.out       |   6 ++--
 .../test-data/cutadapt_trimmed.out.gz         | Bin 537 -> 537 bytes
 .../test-data/cutadapt_untrimmed.out.gz       | Bin 12095 -> 12095 bytes
 tools/cutadapt/test-data/unknown.fastq.gz     | Bin 173 -> 173 bytes
 15 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index 2b0a7bdbe75..00fc4d22ec7 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -285,10 +285,34 @@ $read_mod_options.zero_cap
                 </when>
             </conditional>
             <param argument="--length-tag" label="Length tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." >
-                <validator type="regex">[A-Za-z_= :]+</validator>            
+                <sanitizer invalid_char="">
+                    <valid initial="string.letters,string.digits">
+                        <add value="_" />
+                        <add value=":" />
+                        <add value=" " />
+                        <add value="{" />
+                        <add value="}" />
+                        <add value="/" />
+                        <add value="+" />
+                        <add value="|" />
+                        <add value="=" />
+                    </valid>
+                </sanitizer>
             </param>
             <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. ">
-                <validator type="regex">[A-Za-z0-9_ :-{}/+|]+</validator>            
+                <sanitizer invalid_char="">
+                    <valid initial="string.letters,string.digits">
+                        <add value="_" />
+                        <add value=":" />
+                        <add value=" " />
+                        <add value="{" />
+                        <add value="}" />
+                        <add value="/" />
+                        <add value="+" />
+                        <add value="|" />
+                        <add value="=" />
+                    </valid>
+                </sanitizer>
             </param>
             <param argument="--cut" label="Remove a fixed number of bases" type="integer" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." />
             <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" />
@@ -611,9 +635,10 @@ $read_mod_options.zero_cap
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="AGATCGGAAGAGC"/>
+            <param name="adapter_name" value="test_adapter"/>
             <section name="read_mod_options">
                 <param name="cut" value="5"/>
-                <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/>
+                <param name="rename" value="{id} barcode={cut_prefix}"/>
             </section>
             <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/>
         </test>
diff --git a/tools/cutadapt/macros.xml b/tools/cutadapt/macros.xml
index 684f6cf1fdf..a6d71a25055 100644
--- a/tools/cutadapt/macros.xml
+++ b/tools/cutadapt/macros.xml
@@ -56,7 +56,7 @@
             #else if $fa.front_adapter_source.front_adapter_source_list == 'file':
                 -g file:'${adapter_options.internal}${fa.front_adapter_source.front_adapter_file}'
             #else if str($fa.front_adapter_source.front_adapter_name) != "":
-                -g '${adapter_options.internal}${fa.front_adapter_source.front_adapter_name}'='${fa.front_adapter_source.front_adapter}'
+                -g '${fa.front_adapter_source.front_adapter_name}'='${adapter_options.internal}${fa.front_adapter_source.front_adapter}'
             #else
                 -g '${adapter_options.internal}${fa.front_adapter_source.front_adapter}'
             #end if
diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz
index 8f0e0602b2edc9ec86dca2ff4ae24271e6dde556..f25c3f0139f99399a5142fa123d94e24947f348f 100644
GIT binary patch
delta 16
Xcmcb@bcKmszMF&L$nNbM*?k!SF+>HT

delta 16
Xcmcb@bcKmszMF$#>ZENO*?k!SF8~Ee

diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz
index 91aab83a1f1f29c1522a15348a9d4a323feb37e6..6f330e0d5bf1cd61363591f43b09d3334b975f59 100644
GIT binary patch
delta 16
XcmX@cbc~5zzMF&L$nNbM+3gttFN6hn

delta 16
XcmX@cbc~5zzMF$#>ZENO+3gttEkFey

diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz
index 0da18600442eb77c5a04f3e5019c125b810ac105..cc457262169a6c961f90f8e5a2c7fd773a127223 100644
GIT binary patch
delta 16
Xcmewt_b-lJzMF%gY4`Sx?B)6ZKJ*5}

delta 16
Xcmewt_b-lJzMF#~eA2d!?B)6ZJj@1f

diff --git a/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz
index bc650c71568f3ca6d7ca91bd750a30c923ce0614..01f0c7e2d8749a92d7932dd40c8f4cdd4d47d76e 100644
GIT binary patch
delta 16
XcmbOdKP8@BzMF&L;hyaq*?aW?HE#xJ

delta 16
XcmbOdKP8@BzMF$#-{fr@*?aW?Gk*pf

diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz
index 6d58cd3faa479de074762fcc3731fde04d341337..15de53bf4209c1a535dc9b89d9ee03fadab1b333 100644
GIT binary patch
delta 15
WcmZo;Y-41X@8)3W-m`rodp!Ulfdt(E

delta 15
WcmZo;Y-41X@8)30p1f@$dp!Uj@C1_p

diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz
index 24c44a5297ed627e3c4a0d07986c76dfb2a2dfe7..f2fa55b88f608eda29d044f4b4f90206e9bbc5c2 100644
GIT binary patch
delta 16
XcmccQamj;SzMF%gXwUYI?A|H>HkSqZ

delta 16
XcmccQamj;SzMF#~VDh$&?A|H>G_D1%

diff --git a/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz
index ec55e23048948ef8a7ae93a946d3370c18e5918d..3fa45067c977a604d2f7f7a56c6176e04b48dc96 100644
GIT binary patch
delta 16
Xcmewv_cM-NzMF&L;hyaq*^Bf6K=TI`

delta 16
Xcmewv_cM-NzMF$#-{fr@*^Bf6KLZBH

diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz
index 5c1a596e45f5e308a279f3b7ab1be6fa9efde8ea..a70dec1ce1f1c107cd9eba84799c9da363d19083 100644
GIT binary patch
delta 15
WcmeBX>}F(_@8)3W-m`rodkX*}5(Ml3

delta 15
WcmeBX>}F(_@8)30p1f@$dkX*{fdrxe

diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz
index 94d1667e121e24de2c345cd92c2a57511de71cb0..81c5f8d1109df9cecec4e7019b94538ecf01fd0c 100644
GIT binary patch
delta 16
Xcmewm_#u#8zMF%gXwUYI>@PI{JXZ$l

delta 16
Xcmewm_#u#8zMF#~VDh$&>@PI{I&KD@

diff --git a/tools/cutadapt/test-data/cutadapt_small_rename.out b/tools/cutadapt/test-data/cutadapt_small_rename.out
index 59c665cdb87..9f9c7f26803 100644
--- a/tools/cutadapt/test-data/cutadapt_small_rename.out
+++ b/tools/cutadapt/test-data/cutadapt_small_rename.out
@@ -1,12 +1,12 @@
-@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__
+@prefix:1_13_573/1 barcode=CGTCC
 GAANTAGCTACCACCCTGATTAGACAAAT
 +
 &&&!.1&(6:<'67..*,:75)'77&&&5
-@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__
+@prefix:1_13_1259/1 barcode=AGCCG
 CTANGACGGGTTGGCCCTTAGACGTATCT
 +
 A;A!9<<<,7:<=3=;:<&<?<?8<;=<&
-@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__
+@prefix:1_13_1440/1 barcode=CAAGA
 TCTNCCCTGCCACATTGCCCTAGTTAAAC
 +
 =57!7<';<6?5;;6:+:=)71>70<,=:
diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz
index a2a91ad9f008ef1b9d0bcaa9e625254e636187ae..33196cc42ab29a21434fee896e5fe41cc4f615d3 100644
GIT binary patch
delta 16
XcmbQqGLwZ}zMF&L!|v@H*@c(@D^Ud^

delta 16
XcmbQqGLwZ}zMF&L;G}IE*@c(@DGdb4

diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz
index 26b630e33125f8c2aa4b51a2f2e23d16e01c4ca1..6a54f5bfb7adf9f600211ca823ed1e2d7e0e2335 100644
GIT binary patch
delta 16
XcmdlVw?B?uzMF&L!|v@H*)8+|Iu-_X

delta 16
XcmdlVw?B?uzMF&L;G}IE*)8+|H_`?i

diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz
index 4edef7b57a5bade2bf8d1f85b6a687b29fe4520b..6741330278cdf0f82b13df1aea4565f1b7921986 100644
GIT binary patch
delta 15
XcmZ3>xR#M!zMF&L$nNbE*_QzTCp`s<

delta 15
XcmZ3>xR#M!zMF$#>ZENG*_QzTB~k@3


From 6fd4d309b2d157c16bd915ecc35021a385cb9411 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Wed, 2 Jun 2021 21:18:35 +0200
Subject: [PATCH 14/20] Add validators

---
 tools/cutadapt/cutadapt.xml | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index 00fc4d22ec7..646ca305445 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -265,6 +265,7 @@ $read_mod_options.zero_cap
                 <sanitizer>
                     <valid initial="string.digits"><add value="," /></valid>
                 </sanitizer>
+                <validator type="regex">[0-9,]+</validator>
             </param>
             <param argument="--nextseq-trim" type="integer" value="0" label="NextSeq trimming" help="Experimental option for quality trimming of NextSeq data. This is necessary because that machine cannot distinguish between G and reaching the end of the fragment (it encodes G as ‘black’). This option works like regular quality trimming (where one would use -q 20 instead), except that the qualities of G bases are ignored." />
             <param argument="--trim-n" type="boolean" truevalue="--trim-n" falsevalue="" checked="False" label="Trim Ns" help="Trim N's on ends of reads." />
@@ -284,35 +285,29 @@ $read_mod_options.zero_cap
                 <when value="False">
                 </when>
             </conditional>
-            <param argument="--length-tag" label="Length tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." >
+            <param argument="--length-tag" label="Length tag" type="text" optional="True" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." >
                 <sanitizer invalid_char="">
                     <valid initial="string.letters,string.digits">
-                        <add value="_" />
-                        <add value=":" />
-                        <add value=" " />
-                        <add value="{" />
-                        <add value="}" />
                         <add value="/" />
                         <add value="+" />
-                        <add value="|" />
+                        <add value="-" />
                         <add value="=" />
+                        <add value=" " />
                     </valid>
                 </sanitizer>
+                <validator type="regex">[A-Za-z0-9 ]+</validator>
             </param>
             <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. ">
                 <sanitizer invalid_char="">
                     <valid initial="string.letters,string.digits">
-                        <add value="_" />
-                        <add value=":" />
-                        <add value=" " />
                         <add value="{" />
                         <add value="}" />
-                        <add value="/" />
-                        <add value="+" />
-                        <add value="|" />
+                        <add value="_" />
                         <add value="=" />
+                        <add value=" " />
                     </valid>
                 </sanitizer>
+                <validator type="regex">[A-Za-z0-9 {}=]+</validator>
             </param>
             <param argument="--cut" label="Remove a fixed number of bases" type="integer" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." />
             <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" />
@@ -640,7 +635,11 @@ $read_mod_options.zero_cap
                 <param name="cut" value="5"/>
                 <param name="rename" value="{id} barcode={cut_prefix}"/>
             </section>
-            <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/>
+            <output name="out1" file="cutadapt_small_rename.out" ftype="fastq">
+                <assert_contents>
+                    <has_line line="@prefix:1_13_573/1 barcode=CGTCCGAANT"/>
+                </assert_contents>
+            </output>
         </test>
         <!-- Test action options -->
         <test expect_num_outputs="1">

From 60e903ab9e15806868c6628d1a15ffab065b28ee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Wed, 2 Jun 2021 21:32:55 +0200
Subject: [PATCH 15/20] Update validators

---
 tools/cutadapt/cutadapt.xml                   |   5 +++--
 tools/cutadapt/test-data/A1.fastq.gz          | Bin 340 -> 340 bytes
 tools/cutadapt/test-data/A2.fastq.gz          | Bin 326 -> 326 bytes
 .../test-data/cutadapt_nextseq_out.fq.gz      | Bin 12158 -> 12158 bytes
 .../cutadapt_out1_internal_adapter.fq.gz      | Bin 12180 -> 12180 bytes
 .../test-data/cutadapt_out1_max_length.fq.gz  | Bin 134 -> 134 bytes
 .../test-data/cutadapt_out1_min_length.fq.gz  | Bin 9298 -> 9298 bytes
 .../cutadapt_out2_internal_adapter.fq.gz      | Bin 12153 -> 12153 bytes
 .../test-data/cutadapt_out2_max_length.fq.gz  | Bin 139 -> 139 bytes
 .../test-data/cutadapt_out2_min_length.fq.gz  | Bin 10480 -> 10480 bytes
 .../test-data/cutadapt_trimmed.out.gz         | Bin 537 -> 537 bytes
 .../test-data/cutadapt_untrimmed.out.gz       | Bin 12095 -> 12095 bytes
 tools/cutadapt/test-data/unknown.fastq.gz     | Bin 173 -> 173 bytes
 13 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index 646ca305445..f928a804f86 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -293,9 +293,10 @@ $read_mod_options.zero_cap
                         <add value="-" />
                         <add value="=" />
                         <add value=" " />
+                        <add value="_" />
                     </valid>
                 </sanitizer>
-                <validator type="regex">[A-Za-z0-9 ]+</validator>
+                <validator type="regex">[A-Za-z0-9 =-_/+]+</validator>
             </param>
             <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. ">
                 <sanitizer invalid_char="">
@@ -307,7 +308,7 @@ $read_mod_options.zero_cap
                         <add value=" " />
                     </valid>
                 </sanitizer>
-                <validator type="regex">[A-Za-z0-9 {}=]+</validator>
+                <validator type="regex">[A-Za-z0-9 {}=_]+</validator>
             </param>
             <param argument="--cut" label="Remove a fixed number of bases" type="integer" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." />
             <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" />
diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz
index f25c3f0139f99399a5142fa123d94e24947f348f..03492d7521dba44735a0a31ee755097cc4c31891 100644
GIT binary patch
delta 15
Wcmcb@bcKmczMF%g{MJS`KSls3jRd>^

delta 15
Wcmcb@bcKmczMF&L$nK47evAMqzy#_5

diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz
index 6f330e0d5bf1cd61363591f43b09d3334b975f59..862538c9ca9a16ef0b17742168a3c8a0eda1bc22 100644
GIT binary patch
delta 15
WcmX@cbc~5jzMF%g{MJS`2SxxU=>(Dh

delta 15
WcmX@cbc~5jzMF&L$nK474vYXO90b4s

diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz
index cc457262169a6c961f90f8e5a2c7fd773a127223..4eefe56e57f286e5720c12168ce5f6354b05d0f6 100644
GIT binary patch
delta 15
Wcmewt_b-l3zMF%=?AAuM3Vi@Ic?I79

delta 15
Wcmewt_b-l3zMF%gY4=993Vi@JrUncE

diff --git a/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz
index 01f0c7e2d8749a92d7932dd40c8f4cdd4d47d76e..07322b59dc31f067bb394e98b87adf88b0ae6173 100644
GIT binary patch
delta 15
WcmbOdKP8?`zMF$#&h3qCefj__kOhhW

delta 15
WcmbOdKP8?`zMF&L;hv3befj_`lLfE<

diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz
index 15de53bf4209c1a535dc9b89d9ee03fadab1b333..ada41ca50c3d9bb31ab0df4a3f9a9e6d0ef232a5 100644
GIT binary patch
delta 14
VcmZo;Y-41T@8)1|yFHPu0RS4V1OEU3

delta 14
VcmZo;Y-41T@8)3W-ZPP{0RS6|1SJ3f

diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz
index f2fa55b88f608eda29d044f4b4f90206e9bbc5c2..b2964928c0076e8f7d3b9c6bfa328ff682fd312a 100644
GIT binary patch
delta 15
WcmccQamj;CzMF$V@AgJE9~A&C-vu22

delta 15
WcmccQamj;CzMF%gXwODA9~A&D+yz1a

diff --git a/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz
index 3fa45067c977a604d2f7f7a56c6176e04b48dc96..2ae9229536395f0f39e17f8546c73ef94b0d55ef 100644
GIT binary patch
delta 15
Wcmewv_cM-7zMF$#&h3qC#rgm@Oa?aq

delta 15
Wcmewv_cM-7zMF&L;hv3b#rgm^PX=88

diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz
index a70dec1ce1f1c107cd9eba84799c9da363d19083..955f2637794679e39c460e0dc3aa17759cbab91e 100644
GIT binary patch
delta 14
VcmeBX>}F(>@8)1|yFHPu6#yGG1P%ZI

delta 14
VcmeBX>}F(>@8)3W-ZPP{6#yI(1T+8u

diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz
index 81c5f8d1109df9cecec4e7019b94538ecf01fd0c..894f86195bc77198611a15f2b1ea56276b335faa 100644
GIT binary patch
delta 15
Wcmewm_#u!@zMF$V@AgKvR~i5_Q3eeF

delta 15
Wcmewm_#u!@zMF%gXwOErR~i5`P6jdn

diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz
index 33196cc42ab29a21434fee896e5fe41cc4f615d3..de11bd1355e2bb671fbadc535776a03b384c59f0 100644
GIT binary patch
delta 15
WcmbQqGLwZ(zMF$#>8*`y!b|`n>;ygl

delta 15
WcmbQqGLwZ(zMF&L!|si2!b|`p69j4i

diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz
index 6a54f5bfb7adf9f600211ca823ed1e2d7e0e2335..17f6112267b603f6773fe4166f195f42b8dd9995 100644
GIT binary patch
delta 15
WcmdlVw?B?ezMF$#>8*`ymihoNu?3L;

delta 15
WcmdlVw?B?ezMF&L!|si2mihoO*af`+

diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz
index 6741330278cdf0f82b13df1aea4565f1b7921986..20ca13409723ca431d9bd1e88dba4adf37529801 100644
GIT binary patch
delta 14
VcmZ3>xR#MkzMF%g{MJOa<p3YN1f&1}

delta 14
VcmZ3>xR#MkzMF&L$nJ@3%K;$41kwNi


From 005022d4218e0393421544fdb945b57ab3d7ffcb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Wed, 2 Jun 2021 21:40:50 +0200
Subject: [PATCH 16/20] Update test rename

---
 tools/cutadapt/cutadapt.xml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index f928a804f86..c6db18de2dd 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -631,14 +631,13 @@ $read_mod_options.zero_cap
             <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" />
             <param name="adapter_source_list" value="user"/>
             <param name="adapter" value="AGATCGGAAGAGC"/>
-            <param name="adapter_name" value="test_adapter"/>
             <section name="read_mod_options">
                 <param name="cut" value="5"/>
                 <param name="rename" value="{id} barcode={cut_prefix}"/>
             </section>
             <output name="out1" file="cutadapt_small_rename.out" ftype="fastq">
                 <assert_contents>
-                    <has_line line="@prefix:1_13_573/1 barcode=CGTCCGAANT"/>
+                    <has_text text="@prefix:1_13_573/1 barcode=AGCTA"/>
                 </assert_contents>
             </output>
         </test>

From d91680ef8d475f4585fe8fdff690dd07d479524b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Wed, 2 Jun 2021 22:00:44 +0200
Subject: [PATCH 17/20] Fix test rename

---
 tools/cutadapt/cutadapt.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index c6db18de2dd..0aad5847ea9 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -637,7 +637,7 @@ $read_mod_options.zero_cap
             </section>
             <output name="out1" file="cutadapt_small_rename.out" ftype="fastq">
                 <assert_contents>
-                    <has_text text="@prefix:1_13_573/1 barcode=AGCTA"/>
+                    <has_text text="@prefix:1_13_1259/1 barcode=AGCCG"/>
                 </assert_contents>
             </output>
         </test>

From d5bf5cc44e9d3ac0268c2e90aad4ffc5ed48d042 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Wed, 2 Jun 2021 22:14:23 +0200
Subject: [PATCH 18/20] Update adapter internal paired reads

---
 tools/cutadapt/macros.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/cutadapt/macros.xml b/tools/cutadapt/macros.xml
index a6d71a25055..f7324f01288 100644
--- a/tools/cutadapt/macros.xml
+++ b/tools/cutadapt/macros.xml
@@ -117,7 +117,7 @@
         #end for
         #for $fa in $library.r2.front_adapters2
             #if $fa.front_adapter_source2.front_adapter_source_list2 == 'builtin':
-                -G '${adapter_options.internal}${fa.front_adapter_source2.front_adapter2.fields.name}'='${fa.front_adapter_source2.front_adapter2}'
+                -G '${fa.front_adapter_source2.front_adapter2.fields.name}'='${adapter_options.internal}${fa.front_adapter_source2.front_adapter2}'
             #else if $fa.front_adapter_source2.front_adapter_source_list2  == 'file':
                 -G file:'${adapter_options.internal}${fa.front_adapter_source2.front_adapter_file2}'
             #else if str($fa.front_adapter_source2.front_adapter_name2) != "":

From 755b7c3e1ae27e2bcdd540cb04788ef8826af050 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Wed, 2 Jun 2021 23:58:14 +0200
Subject: [PATCH 19/20] Modify max and min length format

---
 tools/cutadapt/cutadapt.xml                   | 150 ++++++++++++++----
 tools/cutadapt/test-data/A1.fastq.gz          | Bin 340 -> 340 bytes
 tools/cutadapt/test-data/A2.fastq.gz          | Bin 326 -> 326 bytes
 .../test-data/cutadapt_nextseq_out.fq.gz      | Bin 12158 -> 12158 bytes
 .../cutadapt_out1_internal_adapter.fq.gz      | Bin 12180 -> 12180 bytes
 .../test-data/cutadapt_out1_max_length.fq.gz  | Bin 134 -> 134 bytes
 .../test-data/cutadapt_out1_max_min_01.fq.gz  | Bin 0 -> 134 bytes
 .../test-data/cutadapt_out1_max_min_02.fq.gz  | Bin 0 -> 134 bytes
 .../test-data/cutadapt_out1_min_length.fq.gz  | Bin 9298 -> 9298 bytes
 .../cutadapt_out2_internal_adapter.fq.gz      | Bin 12153 -> 12153 bytes
 .../test-data/cutadapt_out2_max_length.fq.gz  | Bin 139 -> 139 bytes
 .../test-data/cutadapt_out2_max_min_01.fq.gz  | Bin 0 -> 139 bytes
 .../test-data/cutadapt_out2_max_min_02.fq.gz  | Bin 0 -> 139 bytes
 .../test-data/cutadapt_out2_min_length.fq.gz  | Bin 10480 -> 10480 bytes
 .../test-data/cutadapt_trimmed.out.gz         | Bin 537 -> 537 bytes
 .../test-data/cutadapt_untrimmed.out.gz       | Bin 12095 -> 12095 bytes
 tools/cutadapt/test-data/unknown.fastq.gz     | Bin 173 -> 173 bytes
 17 files changed, 120 insertions(+), 30 deletions(-)
 create mode 100644 tools/cutadapt/test-data/cutadapt_out1_max_min_01.fq.gz
 create mode 100644 tools/cutadapt/test-data/cutadapt_out1_max_min_02.fq.gz
 create mode 100644 tools/cutadapt/test-data/cutadapt_out2_max_min_01.fq.gz
 create mode 100644 tools/cutadapt/test-data/cutadapt_out2_max_min_02.fq.gz

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index 0aad5847ea9..4dc2ac6d882 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -1,5 +1,5 @@
 <tool id="cutadapt" name="Cutadapt" version="@TOOL_VERSION@+@GALAXY_TOOL_VERSION@" profile="20.01">
-    <description>Remove adapter sequences from Fastq/Fasta</description>
+    <description>Remove adapter sequences from FASTQ/FASTA</description>
     <macros>
         <import>macros.xml</import>
     </macros>
@@ -109,14 +109,14 @@ $adapter_options.revcomp
 $filter_options.discard_trimmed
 $filter_options.discard_untrimmed
 
-#if str($filter_options.minimum_options.minimum_r2) == 'True':
-    --minimum-length=$filter_options.minimum_length:$filter_options.minimum_options.value_minimum
-#elif str($filter_options.minimum_length):
+#if str($filter_options.minimum_length) and str($filter_options.length_R2_options.length_R2_status) == 'True':
+    --minimum-length=$filter_options.minimum_length:$filter_options.length_R2_options.R2_minimum
+#else if str($filter_options.minimum_length):
     --minimum-length=$filter_options.minimum_length
 #end if
-#if str($filter_options.maximum_options.maximum_r2) == 'True':
-    --maximum-length=$filter_options.maximum_length:$filter_options.maximum_options.value_maximum
-#elif str($filter_options.maximum_length):
+#if str($filter_options.maximum_length) and str($filter_options.length_R2_options.length_R2_status) == 'True':
+    --maximum-length=$filter_options.maximum_length:$filter_options.length_R2_options.R2_maximum
+#else if str($filter_options.maximum_length):
     --maximum-length=$filter_options.maximum_length
 #end if
 #if str($filter_options.max_n):
@@ -224,30 +224,20 @@ $read_mod_options.zero_cap
         <section name="filter_options" title="Filter Options">
             <param argument="--discard-trimmed" type="boolean" value="False" truevalue="--discard-trimmed" falsevalue="" label="Discard Trimmed Reads" help="Discard reads that contain the adapter instead of trimming them. Use the 'Minimum overlap length' option in order to avoid throwing away too many randomly matching reads!" />
             <param argument="--discard_untrimmed" type="boolean" value="False" truevalue="--discard-untrimmed" falsevalue="" label="Discard Untrimmed Reads" help="Discard reads that do not contain the adapter." />
-            <param argument="--minimum-length" type="integer" min="0" optional="True" value="" label="Minimum length" help="Discard trimmed reads that are shorter than LENGTH.  Reads that are too short even before adapter removal are also discarded. In colorspace, an initial primer is not counted." />
-            <conditional name="minimum_options">
-                <param name="minimum_r2" type="select" label="Specify a minimum length for reverse reads (R2)" help="When trimming paired-end reads, the minimum lengths for R1 and R2 can be specified separately. If not provided, the same minimum length applies to both reads.">
+            <param argument="--minimum-length" type="integer" min="0" optional="True" value="" label="Minimum length (R1)" help="Discard trimmed reads that are shorter than LENGTH.  Reads that are too short even before adapter removal are also discarded." />
+            <param argument="--maximum-length" type="integer" min="0" optional="True" value="" label="Maximum length (R1)" help="Discard trimmed reads that are longer than LENGTH.  Reads that are too long even before adapter removal are also discarded." />
+            <conditional name="length_R2_options">
+                <param name="length_R2_status" type="select" label="Specify a minimum/maximum length for reverse reads (R2)" help="When trimming paired-end reads, the minimum/maximum lengths for R1 and R2 can be specified separately. If not provided, the same minimum length applies to both reads.">
                     <option value="True">Enabled</option>
                     <option value="False" selected="True">Disabled</option>
                 </param>
                 <when value="True">
-                    <param name="value_minimum" type="integer" min="0" optional="True" value="" label="Minimum length" />
+                    <param name="R2_minimum" type="integer" min="0" value="" optional="True" label="Minimum length (R2)" />
+                    <param name="R2_maximum" type="integer" min="0" value="" optional="True" label="Maximum length (R2)" />
                 </when>
                 <when value="False">
                 </when>
-            </conditional>
-            <param argument="--maximum-length" type="integer" min="0" optional="True" value="" label="Maximum length" help="Discard trimmed reads that are longer than LENGTH.  Reads that are too long even before adapter removal are also discarded. In colorspace, an initial primer is not counted." />
-            <conditional name="maximum_options">
-                <param name="maximum_r2" type="select" label="Specify a maximum length for reverse reads (R2)" help="When trimming paired-end reads, the maximum lengths for R1 and R2 can be specified separately. If not provided, the same maximum length applies to both reads.">
-                    <option value="True">Enabled</option>
-                    <option value="False" selected="True">Disabled</option>
-                </param>
-                <when value="True">
-                    <param name="value_maximum" type="integer" min="0" optional="True" value="" label="Maximum length" />
-                </when>
-                <when value="False">
-                </when>
-            </conditional>                
+            </conditional>   
             <param argument="--max-n" type="float" min="0" optional="True" label="Max N" help="Discard reads with more than this number of 'N' bases. A number between 0 and 1 is interpreted as a fraction of the read length." />
             <param argument="--pair-filter" type="select" optional="True" label="Pair filter" help="Which of the reads in a paired-end read have to match the filtering criterion in order for the pair to be filtered. Default: any">
                 <option value="any" selected="True">Any: a read pair is discarded (or redirected) if one of the reads (R1 or R2) fulfills the filtering criterion. </option>
@@ -705,9 +695,9 @@ $read_mod_options.zero_cap
             <section name="filter_options">
                 <param name="minimum_length" value="30"/>
                 <param name="pair_filter" value="both"/>
-                <conditional name="minimum_options">
-                    <param name="minimum_r2" value="True"/>
-                    <param name="value_minimum" value="10"/>
+                <conditional name="length_R2_options">
+                    <param name="length_R2_status" value="True"/>
+                    <param name="R2_minimum" value="10"/>
                 </conditional>
             </section>
             <output name="out1" decompress="True" file="cutadapt_out1_min_length.fq.gz" ftype="fastq.gz"/>
@@ -729,9 +719,9 @@ $read_mod_options.zero_cap
             <section name="filter_options">
                 <param name="pair_filter" value="both"/>
                 <param name="maximum_length" value="50"/>
-                <conditional name="maximum_options">
-                    <param name="maximum_r2" value="True"/>
-                    <param name="value_maximum" value="30"/>
+                <conditional name="length_R2_options">
+                    <param name="length_R2_status" value="True"/>
+                    <param name="R2_maximum" value="30"/>
                 </conditional>
             </section>
             <output name="out1" decompress="True" file="cutadapt_out1_max_length.fq.gz" ftype="fastq.gz"/>
@@ -741,6 +731,106 @@ $read_mod_options.zero_cap
                 <has_text text="--pair-filter=both"/>
             </assert_command>
         </test>
+        <!-- Test combination maximum and minimum length paired reads -->
+        <test expect_num_outputs="2">
+            <param name="type" value="paired" />
+            <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" />
+            <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGATCGGAAGAGC"/>
+            <param name="adapter_source_list2" value="user"/>
+            <param name="adapter2" value="AGATCGGAAGAGC"/>
+            <section name="filter_options">
+                <param name="pair_filter" value="both"/>
+                <param name="minimum_length" value="10"/>
+                <param name="maximum_length" value="50"/>
+                <conditional name="length_R2_options">
+                    <param name="length_R2_status" value="True"/>
+                    <param name="R2_maximum" value="30"/>
+                </conditional>
+            </section>
+            <output name="out1" decompress="True" file="cutadapt_out1_max_min_01.fq.gz" ftype="fastq.gz"/>
+            <output name="out2" decompress="True" file="cutadapt_out2_max_min_01.fq.gz" ftype="fastq.gz"/>
+            <assert_command>
+                <has_text text="--minimum-length=10:"/>
+                <has_text text="--maximum-length=50:30"/>
+                <has_text text="--pair-filter=both"/>
+            </assert_command>
+        </test>
+        <test expect_num_outputs="2">
+            <param name="type" value="paired" />
+            <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" />
+            <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGATCGGAAGAGC"/>
+            <param name="adapter_source_list2" value="user"/>
+            <param name="adapter2" value="AGATCGGAAGAGC"/>
+            <section name="filter_options">
+                <param name="pair_filter" value="both"/>
+                <param name="minimum_length" value="10"/>
+                <param name="maximum_length" value="50"/>
+                <conditional name="length_R2_options">
+                    <param name="length_R2_status" value="True"/>
+                    <param name="R2_minimum" value="10"/>
+                </conditional>
+            </section>
+            <output name="out1" decompress="True" file="cutadapt_out1_max_min_02.fq.gz" ftype="fastq.gz"/>
+            <output name="out2" decompress="True" file="cutadapt_out2_max_min_02.fq.gz" ftype="fastq.gz"/>
+            <assert_command>
+                <has_text text="--minimum-length=10:10"/>
+                <has_text text="--maximum-length=50:"/>
+                <has_text text="--pair-filter=both"/>
+            </assert_command>
+        </test>
+        <test expect_num_outputs="2">
+            <param name="type" value="paired" />
+            <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" />
+            <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGATCGGAAGAGC"/>
+            <param name="adapter_source_list2" value="user"/>
+            <param name="adapter2" value="AGATCGGAAGAGC"/>
+            <section name="filter_options">
+                <param name="pair_filter" value="both"/>
+                <conditional name="length_R2_options">
+                    <param name="length_R2_status" value="True"/>
+                    <param name="R2_minimum" value="10"/>
+                    <param name="R2_maximum" value="50"/>
+                </conditional>
+            </section>
+            <output name="out1" decompress="True" file="cutadapt_out1_max_min_03.fq.gz" ftype="fastq.gz"/>
+            <output name="out2" decompress="True" file="cutadapt_out2_max_min_03.fq.gz" ftype="fastq.gz"/>
+            <assert_command>
+                <has_text text="--minimum-length=:10"/>
+                <has_text text="--maximum-length=:50"/>
+                <has_text text="--pair-filter=both"/>
+            </assert_command>
+        </test>
+        <test expect_num_outputs="2">
+            <param name="type" value="paired" />
+            <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" />
+            <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" />
+            <param name="adapter_source_list" value="user"/>
+            <param name="adapter" value="AGATCGGAAGAGC"/>
+            <param name="adapter_source_list2" value="user"/>
+            <param name="adapter2" value="AGATCGGAAGAGC"/>
+            <section name="filter_options">
+                <param name="minimum_length" value="10"/>
+                <param name="pair_filter" value="both"/>
+                <conditional name="length_R2_options">
+                    <param name="length_R2_status" value="True"/>
+                    <param name="R2_minimum" value="10"/>
+                    <param name="R2_maximum" value="40"/>
+                </conditional>
+            </section>
+            <output name="out1" decompress="True" file="cutadapt_out1_max_min_04.fq.gz" ftype="fastq.gz"/>
+            <output name="out2" decompress="True" file="cutadapt_out2_max_min_04.fq.gz" ftype="fastq.gz"/>
+            <assert_command>
+                <has_text text="--minimum-length=10:10"/>
+                <has_text text="--maximum-length=:40"/>
+                <has_text text="--pair-filter=both"/>
+            </assert_command>
+        </test>
         <!-- Test length options -->
         <test expect_num_outputs="1">
             <param name="type" value="single" />
diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz
index 03492d7521dba44735a0a31ee755097cc4c31891..b6ada601aeff4f424078f013aeb546bf19fe40e2 100644
GIT binary patch
delta 15
Wcmcb@bcKmczMF%={O3kCKSls2s05n;

delta 15
Wcmcb@bcKmczMF%g{MJS`KSls3jRd>^

diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz
index 862538c9ca9a16ef0b17742168a3c8a0eda1bc22..a3ecce332a694ae5f1f90cff0dbc07a6d286f535 100644
GIT binary patch
delta 15
WcmX@cbc~5jzMF%={O3kC2SxxU1O#ya

delta 15
WcmX@cbc~5jzMF%g{MJS`2SxxU=>(Dh

diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz
index 4eefe56e57f286e5720c12168ce5f6354b05d0f6..1e1584e8fd21f0c3da0a2d2c1ef804ad7ac4f67a 100644
GIT binary patch
delta 15
Wcmewt_b-l3zMF&L>yM3W75V@=i3Yp?

delta 15
Wcmewt_b-l3zMF%=?AAuM3Vi@Ic?I79

diff --git a/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz
index 07322b59dc31f067bb394e98b87adf88b0ae6173..37216f005b5403cfc9ef60b0208f33e34e729c20 100644
GIT binary patch
delta 15
WcmbOdKP8?`zMF$##;=WRefj_`69uIJ

delta 15
WcmbOdKP8?`zMF$#&h3qCefj__kOhhW

diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz
index ada41ca50c3d9bb31ab0df4a3f9a9e6d0ef232a5..f0b098be92ecc74603bf9a698740e815df497b63 100644
GIT binary patch
delta 14
VcmZo;Y-41T@8)3O{WX!T0RS2e1LXh!

delta 14
VcmZo;Y-41T@8)1|yFHPu0RS4V1OEU3

diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_min_01.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_min_01.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..1f2b98c860005bf9163fb543241b33fff5f2404a
GIT binary patch
literal 134
zcmV;10D1o(iwFQE`nO;J1C7qH4udcZgyB7}QdP|bf*en{t}qLm)%SmtIur(`_Semy
zZr(D6iI_N_-DR-#&0rvdrv@;US|3Q_>Spe$E}CxXsnPPy()^3USV7!cqp*UJV-{d&
o(mOT#$D^?nM#~jD828jfFE2e{-EY2n9X?vq2Zo3SUi<(60M9f((*OVf

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_min_02.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_min_02.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..55fa5e46dda377e80114f4897d26604383a20e34
GIT binary patch
literal 134
zcmV;10D1o(iwFQR`nO;J1C7qH4udcZgyB7}QdP|bf*en{t}qLm)%SmtIur(`_Semy
zZr(D6iI_N_-DR-#&0rvdrv@;US|3Q_>Spe$E}CxXsnPPy()^3USV7!cqp*UJV-{d&
o(mOT#$D^?nM#~jD828jfFE2e{-EY2n9X?vq2Zo3SUi<(60M*Vv-~a#s

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz
index b2964928c0076e8f7d3b9c6bfa328ff682fd312a..a5576883359b12d52f15da2e693a63c40bc90aac 100644
GIT binary patch
delta 15
WcmccQamj;CzMF&L%g>E$J}Lk+83q9W

delta 15
WcmccQamj;CzMF$V@AgJE9~A&C-vu22

diff --git a/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz
index 2ae9229536395f0f39e17f8546c73ef94b0d55ef..2aa85b4b91a3e85f6f314eea74ddc3c650dc7086 100644
GIT binary patch
delta 15
Wcmewv_cM-7zMF$##;=WR#rgm@&jwNe

delta 15
Wcmewv_cM-7zMF$#&h3qC#rgm@Oa?aq

diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz
index 955f2637794679e39c460e0dc3aa17759cbab91e..e3b37d3a360e784a5bb9d9b57075fc729df227a3 100644
GIT binary patch
delta 14
VcmeBX>}F(>@8)3O{WX!T6#yEP1M~m@

delta 14
VcmeBX>}F(>@8)1|yFHPu6#yGG1P%ZI

diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_min_01.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_min_01.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..f43c5aa0930715fbdb83ce9d0c7146e49c490798
GIT binary patch
literal 139
zcmV;60CfK!iwFQE`nO;J1C5Tc4#O}AM0b9rs^W9v2s2csNTEwNtN;Hg#jY}^C+=W+
zM|&r%I}1xXb=TEjAAtY~vR6Pjm$GE)=4QRC#g6P2SJ*v<ZiEMh+Dx53nG3b6B5VaL
twN{QM(*bww?iyqpI)3>FiMN~uH5Ck0e5&denCAo>Mqdygd!qIL005;$J9z*A

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_min_02.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_min_02.fq.gz
new file mode 100644
index 0000000000000000000000000000000000000000..2b90c1d060fc43d06d1f3b0b80b0baa8975876e5
GIT binary patch
literal 139
zcmV;60CfK!iwFQR`nO;J1C5Tc4#O}AM0b9rs^W9v2s2csNTEwNtN;Hg#jY}^C+=W+
zM|&r%I}1xXb=TEjAAtY~vR6Pjm$GE)=4QRC#g6P2SJ*v<ZiEMh+Dx53nG3b6B5VaL
twN{QM(*bww?iyqpI)3>FiMN~uH5Ck0e5&denCAo>Mqdygd!qIL0068YJB9!N

literal 0
HcmV?d00001

diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz
index 894f86195bc77198611a15f2b1ea56276b335faa..1474b23f18ad6bbc6a789da21703053750895df6 100644
GIT binary patch
delta 15
Wcmewm_#u!@zMF&L%g>E$uQUKSiw5xk

delta 15
Wcmewm_#u!@zMF$V@AgKvR~i5_Q3eeF

diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz
index de11bd1355e2bb671fbadc535776a03b384c59f0..746cc1c060ed91c95e0915f9148ca2bd1fbd4f5b 100644
GIT binary patch
delta 15
WcmbQqGLwZ(zMF#~<>y8=VI}|~0R$WX

delta 15
WcmbQqGLwZ(zMF$#>8*`y!b|`n>;ygl

diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz
index 17f6112267b603f6773fe4166f195f42b8dd9995..c25d3b109f49fd497884065823b945c7afa6ef03 100644
GIT binary patch
delta 15
WcmdlVw?B?ezMF#~<>y8=OML(@#szNx

delta 15
WcmdlVw?B?ezMF$#>8*`ymihoNu?3L;

diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz
index 20ca13409723ca431d9bd1e88dba4adf37529801..9265576f49ef5bd95d0a5d046338aba3dd5ea269 100644
GIT binary patch
delta 14
VcmZ3>xR#MkzMF%={O3fr<p3V|1cLwo

delta 14
VcmZ3>xR#MkzMF%g{MJOa<p3YN1f&1}


From fae23a9dbf4ae8a25c6d0e466181facf4f099006 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?=
 <gallardo@informatik.uni-freiburg.de>
Date: Thu, 3 Jun 2021 00:03:45 +0200
Subject: [PATCH 20/20] Remove test 3 combination max and min length

---
 tools/cutadapt/cutadapt.xml | 49 -------------------------------------
 1 file changed, 49 deletions(-)

diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml
index 4dc2ac6d882..cadeeb1a889 100644
--- a/tools/cutadapt/cutadapt.xml
+++ b/tools/cutadapt/cutadapt.xml
@@ -782,55 +782,6 @@ $read_mod_options.zero_cap
                 <has_text text="--pair-filter=both"/>
             </assert_command>
         </test>
-        <test expect_num_outputs="2">
-            <param name="type" value="paired" />
-            <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" />
-            <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" />
-            <param name="adapter_source_list" value="user"/>
-            <param name="adapter" value="AGATCGGAAGAGC"/>
-            <param name="adapter_source_list2" value="user"/>
-            <param name="adapter2" value="AGATCGGAAGAGC"/>
-            <section name="filter_options">
-                <param name="pair_filter" value="both"/>
-                <conditional name="length_R2_options">
-                    <param name="length_R2_status" value="True"/>
-                    <param name="R2_minimum" value="10"/>
-                    <param name="R2_maximum" value="50"/>
-                </conditional>
-            </section>
-            <output name="out1" decompress="True" file="cutadapt_out1_max_min_03.fq.gz" ftype="fastq.gz"/>
-            <output name="out2" decompress="True" file="cutadapt_out2_max_min_03.fq.gz" ftype="fastq.gz"/>
-            <assert_command>
-                <has_text text="--minimum-length=:10"/>
-                <has_text text="--maximum-length=:50"/>
-                <has_text text="--pair-filter=both"/>
-            </assert_command>
-        </test>
-        <test expect_num_outputs="2">
-            <param name="type" value="paired" />
-            <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" />
-            <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" />
-            <param name="adapter_source_list" value="user"/>
-            <param name="adapter" value="AGATCGGAAGAGC"/>
-            <param name="adapter_source_list2" value="user"/>
-            <param name="adapter2" value="AGATCGGAAGAGC"/>
-            <section name="filter_options">
-                <param name="minimum_length" value="10"/>
-                <param name="pair_filter" value="both"/>
-                <conditional name="length_R2_options">
-                    <param name="length_R2_status" value="True"/>
-                    <param name="R2_minimum" value="10"/>
-                    <param name="R2_maximum" value="40"/>
-                </conditional>
-            </section>
-            <output name="out1" decompress="True" file="cutadapt_out1_max_min_04.fq.gz" ftype="fastq.gz"/>
-            <output name="out2" decompress="True" file="cutadapt_out2_max_min_04.fq.gz" ftype="fastq.gz"/>
-            <assert_command>
-                <has_text text="--minimum-length=10:10"/>
-                <has_text text="--maximum-length=:40"/>
-                <has_text text="--pair-filter=both"/>
-            </assert_command>
-        </test>
         <!-- Test length options -->
         <test expect_num_outputs="1">
             <param name="type" value="single" />