1. 16 2月, 2018 1 次提交
    • C
      avocado.utils.process: use bytes for raw stdout/stderr · 7d0e6a44
      Cleber Rosa 提交于
      This brings a change in behaviour, in which the stdout/stderr of the
      executed process will now be of bytes type, instead of a string type.
      
      Two new attributes, which are implemented as properties, have been
      added to the CmdResult class, `stdout_text` and `stderr_text`.  Those
      are convenience methods that will return the same content that is in
      `stdout` and `stderr`, reespectively, but decoded on the fly[1].
      
      With regards to encoding, if one is not provided, the result of
      `sys.getdefaultencoding()` will be used ("utf-8" for Python 3 and
      "ascii" for Python 2).
      
      Applications and/or tests using the APIs that return a CmdResult
      should, to the best of my knowledge, set a default encoding themselves
      so a stable behavior across Python versions.  But that if left to
      users of this API.
      
      A different tradeoff/design decision has to do with the tests modified
      here.  One option is to have "text" (as in sequences of human readable
      glyphs) as being of Python type "str".  On Python 2, "str" can be
      compared to "bytes" because a conversion will happen on demand.  That
      is, the following is fine on Python 2:
      
         >>> result = process.run("command")
         >>> "expected" in process.stdout
      
      Where `expected` is of type "str" and `process.stdout` is of type
      "bytes".  This is not true of Python 3, so either the types must match
      or a conversion must be done explicitly.  The solutions to that are:
      
      1) have these "text" as (of type) "bytes" in the source code itself,
         and avoid the conversion whenever possible
      2) have "strings" in the source code itself, and use the conversion
         provided by `CmdResult.stdout_text` and `CmdResult.stderr_text`.
      
      The approach chosen here is to avoid conversion if possible, that is,
      use "byte" types, given the fact that the source code encoding is by
      default 'ascii' and most of the "text" dealt with here can be
      represented in 'ascii' too.  This is equivalent of doing:
      
         result = process.run("command")
         b"expected" in process.stdout
         "errors: %s" % 0 in process.stderr_text
      
      [1] The obvious alternative, instead of decoding these on the fly
          would be to have multiple copies of the "same" data.  This assumes
          that binary data produced on the stdout/stderr will usually be
          larger than textual data.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      7d0e6a44
  2. 15 2月, 2018 2 次提交
  3. 12 2月, 2018 2 次提交
  4. 10 2月, 2018 1 次提交
    • A
      SIMPLE tests: improve status API · c42bfbc9
      Amador Pahim 提交于
      Currently simple tests have a limited status API, being able to set only
      the WARN status by generating an output string in a very specific and
      hard-coded format.
      
      This patch, while respects the current behaviour, creates configuration
      keys, allowing users to provide regular expressions to search for in the
      test outputs, aiming to set the final test status to either WARN or SKIP
      when the test finishes with exit code 0.
      Signed-off-by: NAmador Pahim <apahim@redhat.com>
      c42bfbc9
  5. 14 12月, 2017 1 次提交
  6. 06 12月, 2017 1 次提交
  7. 15 11月, 2017 1 次提交
  8. 13 10月, 2017 1 次提交
  9. 11 10月, 2017 1 次提交
  10. 03 10月, 2017 2 次提交
  11. 15 9月, 2017 1 次提交
    • L
      selftests: Make sure to use correct basedir · c4dcff6d
      Lukáš Doktor 提交于
      The basedir was mainly set correctly, but sometimes not used in some of
      the tests. Let's move the `os.chdir` to `setUp` phase where it makes
      sense and add new ones where they were not present.
      
      Related to basedir the test_mux was using hardcoded path based on the
      method used to execute the test, let's change it to `__file__` which
      gives better results.
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      c4dcff6d
  12. 24 8月, 2017 1 次提交
    • C
      Removal of "import magic" for avocado and avocado-rest-client · d39f9a0a
      Cleber Rosa 提交于
      These scripts rely on some Python library path manipulation to be
      able to load from the source tree.  But, in fact that are a few
      reasons for not having those, including:
      
       * All functionality in `avocado` relies on plugins, which will not be
         available from the source tree unless a `$ setup.py develop` is
         executed, which automatically makes the "import magic" unnecessary.
      
       * Most users will end up using a setuptools generated "entry point"
         instead.
      
      For the sake of less code, I propose this (and all other?) magic to be
      removed.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      d39f9a0a
  13. 16 8月, 2017 1 次提交
  14. 14 8月, 2017 1 次提交
  15. 11 8月, 2017 1 次提交
  16. 06 8月, 2017 2 次提交
  17. 24 5月, 2017 2 次提交
    • C
      avocado list command: also show tag statistics · e3e2cf33
      Cleber Rosa 提交于
      Just like `avocado list` presents the statistics for the test types,
      it may be useful to also list the number of tests that have a
      particular tag.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      e3e2cf33
    • C
      avocado list command: also list test tags · e9ad7b6d
      Cleber Rosa 提交于
      Test tags (via docstring directives) have been supported in Avocado
      for a number of releases, but up until now user would only be able to
      see the tags on their tests by resorting to the source code.
      
      This was already difficult when the tags where set only at the class
      level, now that they can be set both on the class and method
      docstring, users would have to do the "math" on their minds.
      
      Let's display the test tags when the verbose switch is given to the
      list command to make the life of users easier.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      e9ad7b6d
  18. 23 5月, 2017 1 次提交
  19. 18 5月, 2017 1 次提交
  20. 15 5月, 2017 1 次提交
    • C
      selftests: introduce multiple levels of testing coverage · 4942d2e7
      Cleber Rosa 提交于
      A finer level of granularity may help to extend our testing coverage
      while reducing the amount of false positives.  This introduces the
      three different levels, mapped like this:
      
         * level 0, AKA "make check"
         * level 2, AKA "make check-full"
      
      There are no changes of test assignment, that is, tests previously
      being run under "check-full" will continue to be run only at that
      target.  The same is true for tests that would run under "make check"
      before this.
      
      The big change is that there's now a middle ground, that can be
      activated by manually setting the AVOCADO_CHECK_LEVEL variable.  Level
      1 is intended to be used be used on environments that are halfway
      between a dedicated machine and a really low powered environment.
      Signed-off-by: NCleber Rosa <crosa@redhat.com>
      4942d2e7
  21. 27 4月, 2017 1 次提交
    • A
      skip classes: internal improvements · d6056afb
      Amador Pahim 提交于
      Due to the deprecation of the self.skip(), the availability of the skip
      decorators and the new CANCEL status, some internal improvements are
      important to keep our behaviour sane and our own code sound and clean.
      
      - The test.SkipTest class was renamed to test.MockingTest to be even more
        generic, intending to be overridden by sub-classes that make the test
        to end both with SKIP or CANCEL status. To keep it generic,
        test.MockingTest class will not SKIP the test if used directly anymore.
      
      - The test.TimeOutSkipTest and test.ReplaySkipTest classes now are using
        the skip decorators instead of raising an exception in setUp(), since
        'skipping' the test means 'don't execute anything', not even the
        setUp().
      
      - The test.DryRunTest class, which is expected to log itself in setUp()
        and then abort the test execution, is now using self.cancel() (instead
        of raising a SKIP exception), being now compliant with the concept
        that a SKIP test cannot execute anything.
      
      - Selftests were adjusted accordingly.
      Signed-off-by: NAmador Pahim <apahim@redhat.com>
      d6056afb
  22. 25 4月, 2017 1 次提交
    • L
      runner: Increase test postprocess timeout · 76d6efa5
      Lukáš Doktor 提交于
      Currently there is a hardcoded test-postprocess timeout consisting of
      two cycle-timeouts which is something between 1 and 2 seconds. This is
      not sufficient on heavily loaded machines so this patch increases the
      timeouts to:
      
       1s: when test was interrupted (ctrl+c/timeout)
      10s: when the process died but the status was not yet delivered
      60s: when test reported status but the process did not finish
      
      taking into account the current available test/job timeout.
      
      As those deadlines are significantly longer, users could have noticed a
      frozen throbber, which is why I propagate the results_dispatcher and
      handle the throbber also during the postprocess, which makes this patch
      a bit more complicated than one would expect. I used "progress = False"
      to distinguish between running test and postprocessing it.
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      76d6efa5
  23. 24 4月, 2017 1 次提交
  24. 21 4月, 2017 1 次提交
  25. 20 4月, 2017 1 次提交
  26. 06 4月, 2017 1 次提交
  27. 04 4月, 2017 1 次提交
  28. 28 3月, 2017 1 次提交
  29. 27 3月, 2017 1 次提交
  30. 09 3月, 2017 1 次提交
  31. 08 3月, 2017 1 次提交
  32. 24 2月, 2017 1 次提交
    • L
      Test: Turn test status into a property · 990a5edc
      Lukáš Doktor 提交于
      I'm not 100% sure, but I don't see a benefit in allowing people to
      override test status from inside test. They are suppose to use
      assertions, or `self.fail`-like methods. With this change it'd be harder
      to manually override the test status (as can be seen on updated
      unittests) but we minimize the accidental write into `self.status`
      variable, which can lead to confusing results.
      
      Note we can consider adding `set_status` method to allow setting this
      property, but I'd like to avoid allowing direct `self.status = ` usage.
      Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
      990a5edc
  33. 06 2月, 2017 1 次提交
  34. 03 2月, 2017 1 次提交
  35. 12 1月, 2017 1 次提交