Feature: Install RPMs by provides


@dnf5
Scenario: Install an RPM by provide that equals to e:v-r
  Given I use repository "dnf-ci-fedora"
   When I execute dnf with args "install 'filesystem = 0:3.9-2.fc29'"
   Then the exit code is 0
    And Transaction is following
        | Action        | Package                               |
        | install       | filesystem-0:3.9-2.fc29.x86_64        |
        | install-dep   | setup-0:2.12.1-1.fc29.noarch          |

@RHEL-5747
Scenario: Try to install an RPM by provide when provides should be ignored and only RPM name allowed => FAIL
  Given I use repository "dnf-ci-fedora"
   When I execute dnf with args "install-n 'filesystem = 0:3.9-2.fc29'"
   Then the exit code is 1

@dnf5
Scenario: Install an RPM by provide that is greater than e:vr
  Given I use repository "dnf-ci-fedora"
   When I execute dnf with args "install 'filesystem > 0:3.9-2'"
   Then the exit code is 0
    And Transaction is following
        | Action        | Package                               |
        | install       | filesystem-0:3.9-2.fc29.x86_64        |
        | install-dep   | setup-0:2.12.1-1.fc29.noarch          |


@dnf5
Scenario: Install an RPM by provide that is greater or equal to e:vr
  Given I use repository "dnf-ci-fedora"
   When I execute dnf with args "install 'filesystem >= 0:3.9-2'"
   Then the exit code is 0
    And Transaction is following
        | Action        | Package                               |
        | install       | filesystem-0:3.9-2.fc29.x86_64        |
        | install-dep   | setup-0:2.12.1-1.fc29.noarch          |


@dnf5
Scenario: Install an RPM by provide that is lower than e:vr
  Given I use repository "dnf-ci-fedora"
    And I use repository "dnf-ci-fedora-updates"
   When I execute dnf with args "install 'glibc < 0:2.28-26.fc29'"
   Then the exit code is 0
    And Transaction is following
        | Action        | Package                               |
        | install       | glibc-0:2.28-9.fc29.x86_64            |
        | install-dep   | glibc-common-0:2.28-9.fc29.x86_64     |
        | install-dep   | glibc-all-langpacks-0:2.28-9.fc29.x86_64      |
        | install-dep   | basesystem-0:11-6.fc29.noarch         |
        | install-dep   | filesystem-0:3.9-2.fc29.x86_64        |
        | install-dep   | setup-0:2.12.1-1.fc29.noarch          |


@dnf5
Scenario: Install an RPM by provide that is lower or equal to e:vr
  Given I use repository "dnf-ci-fedora"
    And I use repository "dnf-ci-fedora-updates"
   When I execute dnf with args "install 'glibc <= 0:2.28-26.fc29'"
   Then the exit code is 0
    And Transaction is following
        | Action        | Package                               |
        | install       | glibc-0:2.28-26.fc29.x86_64           |
        | install-dep   | glibc-common-0:2.28-26.fc29.x86_64    |
        | install-dep   | glibc-all-langpacks-0:2.28-26.fc29.x86_64     |
        | install-dep   | basesystem-0:11-6.fc29.noarch         |
        | install-dep   | filesystem-0:3.9-2.fc29.x86_64        |
        | install-dep   | setup-0:2.12.1-1.fc29.noarch          |


@dnf5
Scenario: I can install an RPM by $provide where $provide is key
  Given I use repository "dnf-ci-fedora"
    And I execute dnf with args "install webclient"
   Then the exit code is 0
    And Transaction is following
        | Action        | Package                                   |
        | install       | wget-0:1.19.5-5.fc29.x86_64               |


# @dnf5
# TODO(nsella) rpmdb check fail
# No match for argument: /var/db/
Scenario Outline: I can install an RPM by <provide type>
  Given I use repository "dnf-ci-fedora"
    And I execute dnf with args "install <provide> "
 Then the exit code is 0
  And Transaction is following
       | Action        | Package                                   |
       | install       | glibc-0:2.28-9.fc29.x86_64                |
       | install-dep   | setup-0:2.12.1-1.fc29.noarch              |
       | install-dep   | glibc-all-langpacks-0:2.28-9.fc29.x86_64  |
       | install-dep   | glibc-common-0:2.28-9.fc29.x86_64         |
       | install-dep   | filesystem-0:3.9-2.fc29.x86_64            |
       | install-dep   | basesystem-0:11-6.fc29.noarch             |

Examples:
        | provide type                 | provide          |
        | file provide                 | /etc/ld.so.conf  |
        | file provide with wildcards  | /etc/ld*conf     |
        | directory provide            | /var/db/         |