github_file_system_test.py revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
1#!/usr/bin/env python
2# Copyright (c) 2012 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import json
7import os
8import sys
9import unittest
10
11from appengine_blobstore import AppEngineBlobstore
12from appengine_url_fetcher import AppEngineUrlFetcher
13from appengine_wrappers import files
14from fake_fetchers import ConfigureFakeFetchers
15from github_file_system import GithubFileSystem
16from object_store_creator import ObjectStoreCreator
17import url_constants
18
19class GithubFileSystemTest(unittest.TestCase):
20  def setUp(self):
21    ConfigureFakeFetchers()
22    self._base_path = os.path.join(sys.path[0],
23                                   'test_data',
24                                   'github_file_system')
25    self._file_system = GithubFileSystem.Create(ObjectStoreCreator.ForTest())
26
27  def _ReadLocalFile(self, filename):
28    with open(os.path.join(self._base_path, filename), 'r') as f:
29      return f.read()
30
31  def testList(self):
32    self.assertEqual(json.loads(self._ReadLocalFile('expected_list.json')),
33                     self._file_system.Read(['/']).Get())
34
35  def testRead(self):
36    self.assertEqual(self._ReadLocalFile('expected_read.txt'),
37                     self._file_system.ReadSingle('/analytics/launch.js').Get())
38
39  def testStat(self):
40    self.assertEqual(0, self._file_system.Stat('zipball').version)
41
42  def testKeyGeneration(self):
43    self.assertEqual(0, len(files.GetBlobKeys()))
44    self._file_system.ReadSingle('/analytics/launch.js').Get()
45    self.assertEqual(1, len(files.GetBlobKeys()))
46    self._file_system.ReadSingle('/analytics/main.css').Get()
47    self.assertEqual(1, len(files.GetBlobKeys()))
48
49if __name__ == '__main__':
50  unittest.main()
51