File size: 5,914 Bytes
d61821a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
{
  "commit": "d9009100ec762c307b46372243d93f9bc2de7a2b",
  "parent": "0d491648d16f52f5091b23d0e3e5be2794461ade",
  "repository_id": "R003",
  "schema_version": 1,
  "study": "Study 5 fresh validation",
  "task_id": "TASK_S5_R003_005",
  "valid_end_to_end": true,
  "validation": {
    "commands": [
      "python -m pytest -q tests/unit/objects"
    ],
    "elapsed_seconds": 1.5247975829988718,
    "gold": [
      {
        "command": "python -m pytest -q tests/unit/objects",
        "elapsed_seconds": 0.4241219579707831,
        "returncode": 0,
        "stderr": "",
        "stdout": "......................................................s..s.............. [ 24%]\n........................................................................ [ 49%]\n...............................s........................................ [ 73%]\n........................................................................ [ 98%]\n.....                                                                    [100%]\n290 passed, 3 skipped in 0.26s\n",
        "timed_out": false
      }
    ],
    "hidden": [
      {
        "command": "python -m pytest -q tests/unit/objects",
        "elapsed_seconds": 0.4536174579989165,
        "returncode": 1,
        "stderr": "",
        "stdout": "......................................................s..s.............. [ 24%]\n........................................................................ [ 49%]\n...............................s......................................F. [ 73%]\n........................................................................ [ 98%]\n.....                                                                    [100%]\n=================================== FAILURES ===================================\n______________________ test_delete_project_remote_mirror _______________________\n\nproject = <Project id:1>\nresp_remote_mirrors = <responses.RequestsMock object at 0x10b386d50>\n\n    def test_delete_project_remote_mirror(project, resp_remote_mirrors):\n        mirror = project.remote_mirrors.create({\"url\": \"https://example.com\"})\n>       mirror.delete()\n\ntests/unit/objects/test_remote_mirrors.py:83: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <ProjectRemoteMirror id:1>, name = 'delete'\n\n    def __getattr__(self, name: str) -> Any:\n        if name in self.__dict__[\"_updated_attrs\"]:\n            return self.__dict__[\"_updated_attrs\"][name]\n    \n        if name in self.__dict__[\"_attrs\"]:\n            value = self.__dict__[\"_attrs\"][name]\n            # If the value is a list, we copy it in the _updated_attrs dict\n            # because we are not able to detect changes made on the object\n            # (append, insert, pop, ...). Without forcing the attr\n            # creation __setattr__ is never called, the list never ends up\n            # in the _updated_attrs dict, and the update() and save()\n            # method never push the new data to the server.\n            # See https://github.com/python-gitlab/python-gitlab/issues/306\n            #\n            # note: _parent_attrs will only store simple values (int) so we\n            # don't make this check in the next block.\n            if isinstance(value, list):\n                self.__dict__[\"_updated_attrs\"][name] = value[:]\n                return self.__dict__[\"_updated_attrs\"][name]\n    \n            return value\n    \n        if name in self.__dict__[\"_parent_attrs\"]:\n            return self.__dict__[\"_parent_attrs\"][name]\n    \n        message = f\"{type(self).__name__!r} object has no attribute {name!r}\"\n        if self._created_from_list:\n            message = (\n                f\"{message}\\n\\n\"\n                + textwrap.fill(\n                    f\"{self.__class__!r} was created via a list() call and \"\n                    f\"only a subset of the data may be present. To ensure \"\n                    f\"all data is present get the object using a \"\n                    f\"get(object.id) call. For more details, see:\"\n                )\n                + f\"\\n\\n{_URL_ATTRIBUTE_ERROR}\"\n            )\n        elif self._lazy:\n            message = f\"{message}\\n\\n\" + textwrap.fill(\n                f\"If you tried to access object attributes returned from the server, \"\n                f\"note that {self.__class__!r} was created as a `lazy` object and was \"\n                f\"not initialized with any data.\"\n            )\n>       raise AttributeError(message)\nE       AttributeError: 'ProjectRemoteMirror' object has no attribute 'delete'\n\ngitlab/base.py:134: AttributeError\n=========================== short test summary info ============================\nFAILED tests/unit/objects/test_remote_mirrors.py::test_delete_project_remote_mirror\n1 failed, 289 passed, 3 skipped in 0.28s\n",
        "timed_out": false
      }
    ],
    "hidden_apply": {
      "elapsed_seconds": 0.010830292012542486,
      "returncode": 0,
      "stderr": "",
      "stdout": ""
    },
    "original": [
      {
        "command": "python -m pytest -q tests/unit/objects",
        "elapsed_seconds": 0.5553587921895087,
        "returncode": 0,
        "stderr": "",
        "stdout": "......................................................s..s.............. [ 24%]\n........................................................................ [ 49%]\n...............................s........................................ [ 73%]\n........................................................................ [ 98%]\n....                                                                     [100%]\n289 passed, 3 skipped in 0.37s\n",
        "timed_out": false
      }
    ],
    "reason": null,
    "source_apply": {
      "elapsed_seconds": 0.011321249883621931,
      "returncode": 0,
      "stderr": "",
      "stdout": ""
    },
    "valid": true
  }
}