1342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch#!/usr/bin/env python 2342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 3342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch# Copyright (c) 2012 Google Inc. All rights reserved. 4342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch# Use of this source code is governed by a BSD-style license that can be 5342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch# found in the LICENSE file. 6342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 7342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch"""Unit tests for the common.py file.""" 8342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 9342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdochimport gyp.common 10342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdochimport unittest 11342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdochimport sys 12342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 13342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 14342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdochclass TestTopologicallySorted(unittest.TestCase): 15342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch def test_Valid(self): 16342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch """Test that sorting works on a valid graph with one possible order.""" 17342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch graph = { 18342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 'a': ['b', 'c'], 19342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 'b': [], 20342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 'c': ['d'], 21342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 'd': ['b'], 22342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch } 23342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch def GetEdge(node): 24342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch return tuple(graph[node]) 25342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.assertEqual( 26342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch gyp.common.TopologicallySorted(graph.keys(), GetEdge), 27342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch ['a', 'c', 'd', 'b']) 28342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 29342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch def test_Cycle(self): 30342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch """Test that an exception is thrown on a cyclic graph.""" 31342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch graph = { 32342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 'a': ['b'], 33342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 'b': ['c'], 34342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 'c': ['d'], 35342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 'd': ['a'], 36342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch } 37342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch def GetEdge(node): 38342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch return tuple(graph[node]) 39342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.assertRaises( 40342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch gyp.common.CycleError, gyp.common.TopologicallySorted, 41342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch graph.keys(), GetEdge) 42342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 43342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 44342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdochclass TestGetFlavor(unittest.TestCase): 45342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch """Test that gyp.common.GetFlavor works as intended""" 46342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch original_platform = '' 47342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 48342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch def setUp(self): 49342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.original_platform = sys.platform 50342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 51342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch def tearDown(self): 52342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch sys.platform = self.original_platform 53342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 54342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch def assertFlavor(self, expected, argument, param): 55342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch sys.platform = argument 56342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.assertEqual(expected, gyp.common.GetFlavor(param)) 57342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 58342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch def test_platform_default(self): 59342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.assertFlavor('freebsd', 'freebsd9' , {}) 60342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.assertFlavor('freebsd', 'freebsd10', {}) 61342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.assertFlavor('openbsd', 'openbsd5' , {}) 62342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.assertFlavor('solaris', 'sunos5' , {}); 63342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.assertFlavor('solaris', 'sunos' , {}); 64342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.assertFlavor('linux' , 'linux2' , {}); 65342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.assertFlavor('linux' , 'linux3' , {}); 66342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 67342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch def test_param(self): 68342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch self.assertFlavor('foobar', 'linux2' , {'flavor': 'foobar'}) 69342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 70342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch 71342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdochif __name__ == '__main__': 72342c50ce1624b485728b9a4fc41d8bbf37eb46cfBen Murdoch unittest.main() 73