Commit 506ac23c authored by Brian Sheedy's avatar Brian Sheedy Committed by Commit Bot

Fix Gold deleted JSON issue

Fixes an issue in the Skia Gold Python code where if initialization
failed the first time, subsequent attempts would fail due to trying to
use a potentially deleted JSON file. This is fixed by making a copy on
object creation that is used instead of the provided file.

Bug: 1077274
Change-Id: I03ca402ed27bfedf81de320863c6c1946733b46e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2419691
Auto-Submit: Brian Sheedy <bsheedy@chromium.org>
Commit-Queue: Tibor Goldschwendt <tiborg@chromium.org>
Reviewed-by: default avatarTibor Goldschwendt <tiborg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#808985}
parent 4268d45d
......@@ -32,6 +32,7 @@ class AndroidSkiaGoldSessionDiffTest(fake_filesystem_unittest.TestCase):
def setUp(self):
self.setUpPyfakefs()
self._working_dir = tempfile.mkdtemp()
self._json_keys = tempfile.NamedTemporaryFile(delete=False).name
@mock.patch.object(gold_utils.AndroidSkiaGoldSession, '_RunCmdForRcAndOutput')
def test_commandCommonArgs(self, cmd_mock):
......@@ -40,7 +41,7 @@ class AndroidSkiaGoldSessionDiffTest(fake_filesystem_unittest.TestCase):
sgp = gold_utils.AndroidSkiaGoldProperties(args)
session = gold_utils.AndroidSkiaGoldSession(self._working_dir,
sgp,
None,
self._json_keys,
'corpus',
instance='instance')
session.Diff('name', 'png_file', None)
......@@ -84,12 +85,13 @@ class AndroidSkiaGoldSessionDiffLinksTest(fake_filesystem_unittest.TestCase):
def setUp(self):
self.setUpPyfakefs()
self._working_dir = tempfile.mkdtemp()
self._json_keys = tempfile.NamedTemporaryFile(delete=False).name
def test_outputManagerUsed(self):
args = createSkiaGoldArgs(git_revision='a', local_pixel_tests=True)
sgp = gold_utils.AndroidSkiaGoldProperties(args)
session = gold_utils.AndroidSkiaGoldSession(self._working_dir, sgp, None,
None, None)
session = gold_utils.AndroidSkiaGoldSession(self._working_dir, sgp,
self._json_keys, None, None)
with open(os.path.join(self._working_dir, 'input-inputhash.png'), 'w') as f:
f.write('input')
with open(os.path.join(self._working_dir, 'closest-closesthash.png'),
......
......@@ -62,7 +62,6 @@ class SkiaGoldSession(object):
"""
self._working_dir = working_dir
self._gold_properties = gold_properties
self._keys_file = keys_file
self._corpus = corpus
self._instance = instance
self._triage_link_file = tempfile.NamedTemporaryFile(suffix='.txt',
......@@ -73,6 +72,11 @@ class SkiaGoldSession(object):
self._authenticated = False
self._initialized = False
# Copy the given keys file to the working directory in case it ends up
# getting deleted before we try to use it.
self._keys_file = os.path.join(working_dir, 'gold_keys.json')
shutil.copy(keys_file, self._keys_file)
def RunComparison(self,
name,
png_file,
......
......@@ -32,6 +32,7 @@ class GpuSkiaGoldSessionDiffTest(fake_filesystem_unittest.TestCase):
def setUp(self):
self.setUpPyfakefs()
self._working_dir = tempfile.mkdtemp()
self._json_keys = tempfile.NamedTemporaryFile(delete=False).name
@mock.patch.object(gpu_skia_gold_session.GpuSkiaGoldSession,
'_RunCmdForRcAndOutput')
......@@ -41,7 +42,7 @@ class GpuSkiaGoldSessionDiffTest(fake_filesystem_unittest.TestCase):
sgp = gpu_skia_gold_properties.GpuSkiaGoldProperties(args)
session = gpu_skia_gold_session.GpuSkiaGoldSession(self._working_dir,
sgp,
None,
self._json_keys,
'corpus',
instance='instance')
session.Diff('name', 'png_file', None)
......@@ -70,12 +71,14 @@ class GpuSkiaGoldSessionStoreDiffLinksTest(fake_filesystem_unittest.TestCase):
def setUp(self):
self.setUpPyfakefs()
self._working_dir = tempfile.mkdtemp()
self._json_keys = tempfile.NamedTemporaryFile(delete=False).name
def test_outputManagerNotNeeded(self):
args = createSkiaGoldArgs(git_revision='a', local_pixel_tests=True)
sgp = gpu_skia_gold_properties.GpuSkiaGoldProperties(args)
session = gpu_skia_gold_session.GpuSkiaGoldSession(self._working_dir, sgp,
None, None, None)
self._json_keys, None,
None)
input_filepath = os.path.join(self._working_dir, 'input-inputhash.png')
with open(input_filepath, 'w') as f:
f.write('')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment