6. What not to do

Multiple pipelines

Too conflicted

Non-existent file for in or pipeline (or pipeline)

When there's only one of each, it's a problem if they don't actually exist

in and / or out and an implicit fileset

The implicit fileset is ignored (and, when the log level is verbose, a message is emitted)

Two or more of out, a resource for outPort, a mapper for outPort, and extension

Too conflicted

Duplicate parameter QNames for the same port or duplicate option QNames

Too conflicted

Pipeline input port with no explicit binding (or more than one when one calabash input port is unnamed)

No input is applied to the port.

When one calabash port is unnamed and more than one pipeline input port has no explicit binding, one of the unbound pipeline ports is mapped to the unnamed port, but you can't control which pipeline port.

Pipeline output port with no explicit binding (or more than one when one calabash output port is unnamed)

The pipeline output on that port is discarded

When one calabash output port is unnamed and more than one pipeline output port has no explicit binding, one of the unbound pipeline ports is mapped to the unnamed port, but you can't control which pipeline port.

Resources and mapper on same port

Too conflicted

Multiple mappers for one port

Too conflicted

Mapper on main input port

The file(s) on the main input port, determined by the inPort value, provides the name that other mappers use as their basis. A mapper on the main input port has nothing to use as a basis, so it's not allowed.

Multiple specifications for an output port or output port resource collections or mappers that resolve to more than one filename

The outputs of a pipeline run are each directed to at most one file

namespace without prefix or without uri

namespace is for mapping prefixes to URIs