Blame specs/posix_sys_resource_spec.yaml

Packit 437b5e
specify posix.sys.resource:
Packit 437b5e
- before:
Packit 437b5e
    resource = require "posix.sys.resource"
Packit 437b5e
Packit 437b5e
Packit 437b5e
- describe getrlimit:
Packit 437b5e
  - before:
Packit 437b5e
      getrlimit = resource.getrlimit
Packit 437b5e
Packit 437b5e
  - context with bad arguments:
Packit 437b5e
      badargs.diagnose (getrlimit, "(int)")
Packit 437b5e
Packit 437b5e
  - it returns a PosixRlimit:
Packit 437b5e
      expect (prototype (getrlimit (resource.RLIMIT_AS))).to_be "PosixRlimit"
Packit 437b5e
  - it fetches resource limits for a process:
Packit 437b5e
      for _, rc in pairs {"RLIMIT_CORE", "RLIMIT_CPU", "RLIMIT_DATA", "RLIMIT_FSIZE",
Packit 437b5e
          "RLIMIT_NOFILE", "RLIMIT_STACK", "RLIMIT_AS"}
Packit 437b5e
      do
Packit 437b5e
        rlim = getrlimit (resource[rc])
Packit 437b5e
        expect (type (rlim.rlim_cur)).to_be "number"
Packit 437b5e
        expect (type (rlim.rlim_max)).to_be "number"
Packit 437b5e
      end
Packit 437b5e
Packit 437b5e
Packit 437b5e
- describe setrlimit:
Packit 437b5e
  - before:
Packit 437b5e
      setrlimit, typeerrors = init (resource, "setrlimit")
Packit 437b5e
      getrlimit = resource.getrlimit
Packit 437b5e
Packit 437b5e
  - context with bad arguments: |
Packit 437b5e
      badargs.diagnose (setrlimit, "(int, table)")
Packit 437b5e
Packit 437b5e
      examples {
Packit 437b5e
        ["context diagnosing rlimit table fields"] = {
Packit 437b5e
          {
Packit 437b5e
            ["it diagnoses argument #2 missing rlim_cur field"] = function ()
Packit 437b5e
              expect (setrlimit (-1, {})).to_raise.
Packit 437b5e
                any_of (typeerrors (2, "number", "rlim_cur", "no value"))
Packit 437b5e
            end
Packit 437b5e
          },
Packit 437b5e
          {
Packit 437b5e
            ["it diagnoses argument #2 rlim_cur field type not int"] = function ()
Packit 437b5e
              expect (setrlimit (-1, {rlim_cur = false})).to_raise.
Packit 437b5e
                any_of (typeerrors (2, "number", "rlim_cur", "boolean"))
Packit 437b5e
            end
Packit 437b5e
          },
Packit 437b5e
          {
Packit 437b5e
            ["it diagnoses argument #2 missing rlim_max field"] = function ()
Packit 437b5e
              expect (setrlimit (-1, {rlim_cur = -1})).to_raise.
Packit 437b5e
                any_of (typeerrors (2, "number", "rlim_max", "no value"))
Packit 437b5e
            end
Packit 437b5e
          },
Packit 437b5e
          {
Packit 437b5e
            ["it diagnoses argument #2 rlim_max field type not int"] = function ()
Packit 437b5e
              expect (setrlimit (-1, {rlim_cur = -1, rlim_max = false})).to_raise.
Packit 437b5e
                any_of (typeerrors (2, "number", "rlim_max", "boolean"))
Packit 437b5e
            end
Packit 437b5e
          },
Packit 437b5e
          {
Packit 437b5e
            ["it diagnoses argument #2 spurious fields"] = function ()
Packit 437b5e
              expect (setrlimit (-1, {rlim_cur = -1, rlim_max = -1, bogus = false})).
Packit 437b5e
                to_raise.any_of (typeerrors (2, nil, "bogus"))
Packit 437b5e
            end
Packit 437b5e
          },
Packit 437b5e
        }
Packit 437b5e
      }
Packit 437b5e
  - it accepts PosixRlimit argument:
Packit 437b5e
      pending "requires elevated privileges"
Packit 437b5e
      for _, rc in pairs {"RLIMIT_CORE", "RLIMIT_CPU", "RLIMIT_DATA", "RLIMIT_FSIZE",
Packit 437b5e
          "RLIMIT_NOFILE", "RLIMIT_STACK", "RLIMIT_AS"}
Packit 437b5e
      do
Packit 437b5e
        rlim = getrlimit (resource[rc])
Packit 437b5e
        expect (setrlimit (resource[rc], rlim)).to_be (0)
Packit 437b5e
      end