Coverage for tests/test_diaPipe.py : 42%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
# This file is part of ap_association. # # Developed for the LSST Data Management System. # This product includes software developed by the LSST Project # (https://www.lsst.org). # See the COPYRIGHT file at the top-level directory of this distribution # for details of code ownership. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>.
def _makeDefaultConfig(cls): config = DiaPipelineTask.ConfigClass() config.apdb.db_url = "sqlite://" config.apdb.isolation_level = "READ_UNCOMMITTED" config.diaSourceDpddifier.copyColumns = {"id": "id", "parent": "parent", "coord_ra": "coord_ra", "coord_dec": "coord_dec"} config.diaSourceDpddifier.flagMap = os.path.join( getPackageDir("ap_association"), "tests", "test-flag-map.yaml") return config
def mockPatchSubtasks(self, task): """Make mocks for all the ap_pipe subtasks.
This is needed because the task itself cannot be a mock. The task's subtasks do not exist until the task is created, so this allows us to mock them instead.
Parameters ---------- task : `lsst.ap.association.DiaPipelineTask` The task whose subtasks will be mocked.
Yields ------ subtasks : `lsst.pipe.base.Struct` All mocks created by this context manager, including:
``diaCatalogLoader`` ``dpddifier`` ``associator`` ``forcedSource`` a mock for the corresponding subtask. Mocks do not return any particular value, but have mocked methods that can be queried for calls by ApPipeTask """ with patch.object(task, "diaCatalogLoader") as mockDiaCatLoader, \ patch.object(task, "diaSourceDpddifier") as mockDpddifier, \ patch.object(task, "associator") as mockAssociator, \ patch.object(task, "diaForcedSource") as mockForcedSource, \ patch.object(task, "apdb") as mockApdb: yield pipeBase.Struct(diaCatalogLoader=mockDiaCatLoader, dpddifier=mockDpddifier, associator=mockAssociator, diaForcedSource=mockForcedSource, apdb=mockApdb)
self.config = self._makeDefaultConfig() self.srcSchema = afwTable.SourceTable.makeMinimalSchema() self.srcSchema.addField("base_PixelFlags_flag", type="Flag") self.srcSchema.addField("base_PixelFlags_flag_offimage", type="Flag")
pass
pass
"""Test the normal workflow of each ap_pipe step. """ task = DiaPipelineTask( config=self.config, initInputs={"diaSourceSchema": self.srcSchema}) diffIm = Mock(spec=afwImage.Exposure) exposure = Mock(spec=afwImage.ExposureF) diaSrc = Mock(sepc=afwTable.SourceCatalog) ccdExposureIdBits = 32 with self.mockPatchSubtasks(task) as subtasks: result = task.run(diaSrc, diffIm, exposure, ccdExposureIdBits) subtasks.dpddifier.run.assert_called_once() subtasks.dpddifier.run.assert_called_once() subtasks.associator.run.assert_called_once() subtasks.diaForcedSource.run.assert_called_once() self.assertEqual(result.apdb_maker.db_url, "sqlite://") self.assertEqual(result.apdb_maker.isolation_level, "READ_UNCOMMITTED")
lsst.utils.tests.init()
lsst.utils.tests.init() unittest.main() |