#!/usr/bin/env python # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this file, # You can obtain one at http://mozilla.org/MPL/2.0/.
import json import os import tempfile import unittest
import mozunit import six from mozfile.mozfile import NamedTemporaryFile from six import StringIO
from mozbuild.backend.configenvironment import ConfigEnvironment from mozbuild.mozinfo import build_dict, write_mozinfo
class Base(object): def _config(self, substs={}):
d = os.path.dirname(__file__) return ConfigEnvironment(d, d, substs=substs)
class TestBuildDict(unittest.TestCase, Base): def test_missing(self): """
Test that missing required values raises. """
with self.assertRaises(Exception):
build_dict(self._config(substs=dict(OS_TARGET="foo")))
with self.assertRaises(Exception):
build_dict(self._config(substs=dict(TARGET_CPU="foo")))
with self.assertRaises(Exception):
build_dict(self._config(substs=dict(MOZ_WIDGET_TOOLKIT="foo")))
def test_arm(self): """
Test that all arm CPU architectures => arm. """
d = build_dict(
self._config(
dict(
OS_TARGET="Linux",
TARGET_CPU="arm",
MOZ_WIDGET_TOOLKIT="gtk",
)
)
)
self.assertEqual("arm", d["processor"])
def test_unknown(self): """
Test that unknown values pass through okay. """
d = build_dict(
self._config(
dict(
OS_TARGET="RandOS",
TARGET_CPU="cptwo",
MOZ_WIDGET_TOOLKIT="foobar",
)
)
)
self.assertEqual("randos", d["os"])
self.assertEqual("cptwo", d["processor"])
self.assertEqual("foobar", d["toolkit"]) # unknown CPUs should not get a bits value
self.assertFalse("bits"in d)
def test_debug(self): """
Test that debug values are properly detected. """
d = build_dict(
self._config(
dict(
OS_TARGET="Linux",
TARGET_CPU="i386",
MOZ_WIDGET_TOOLKIT="gtk",
)
)
)
self.assertEqual(False, d["debug"])
class TestWriteMozinfo(unittest.TestCase, Base): """
Test the write_mozinfo function. """
def setUp(self):
fd, f = tempfile.mkstemp()
self.f = six.ensure_text(f)
os.close(fd)
def tearDown(self):
os.unlink(self.f)
def test_basic(self): """
Test that writing to a file produces correct output. """
c = self._config(
dict(
OS_TARGET="WINNT",
TARGET_CPU="i386",
MOZ_WIDGET_TOOLKIT="windows",
)
)
tempdir = tempfile.gettempdir()
c.topsrcdir = tempdir with NamedTemporaryFile(
dir=os.path.normpath(c.topsrcdir), mode="wt"
) as mozconfig:
mozconfig.write("unused contents")
mozconfig.flush()
c.mozconfig = mozconfig.name
write_mozinfo(self.f, c) with open(self.f) as f:
d = json.load(f)
self.assertEqual("win", d["os"])
self.assertEqual("x86", d["processor"])
self.assertEqual("windows", d["toolkit"])
self.assertEqual(tempdir, d["topsrcdir"])
self.assertEqual(mozconfig.name, d["mozconfig"])
self.assertEqual(32, d["bits"])
def test_fileobj(self): """
Test that writing to a file-like object produces correct output. """
s = StringIO()
c = self._config(
dict(
OS_TARGET="WINNT",
TARGET_CPU="i386",
MOZ_WIDGET_TOOLKIT="windows",
)
)
write_mozinfo(s, c)
d = json.loads(s.getvalue())
self.assertEqual("win", d["os"])
self.assertEqual("x86", d["processor"])
self.assertEqual("windows", d["toolkit"])
self.assertEqual(32, d["bits"])
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.