#!/usr/bin/env python
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import os
import unittest

import PRESUBMIT

EXTENSIONS_PATH = os.path.join('chrome', 'common', 'extensions')
DOCS_PATH = os.path.join(EXTENSIONS_PATH, 'docs')
SERVER2_PATH = os.path.join(DOCS_PATH, 'server2')
PUBLIC_PATH = os.path.join(DOCS_PATH, 'templates', 'public')
PRIVATE_PATH = os.path.join(DOCS_PATH, 'templates', 'private')
INTROS_PATH = os.path.join(DOCS_PATH, 'templates', 'intros')
ARTICLES_PATH = os.path.join(DOCS_PATH, 'templates', 'articles')

class PRESUBMITTest(unittest.TestCase):
  def testCreateIntegrationTestArgs(self):
    input_files = [
      os.path.join(EXTENSIONS_PATH, 'test.cc'),
      os.path.join(EXTENSIONS_PATH, 'test2.cc'),
      os.path.join('test', 'test.py')
    ]
    expected_files = []
    self.assertEqual(expected_files,
                     PRESUBMIT._CreateIntegrationTestArgs(input_files))
    expected_files.append(os.path.join('apps', 'fileSystem.html'))
    input_files.append(os.path.join(EXTENSIONS_PATH, 'api', 'file_system.idl'))
    self.assertEqual(expected_files,
                     PRESUBMIT._CreateIntegrationTestArgs(input_files))
    expected_files.append(os.path.join('extensions', 'alarms.html'))
    expected_files.append(os.path.join('apps', 'alarms.html'))
    input_files.append(os.path.join(EXTENSIONS_PATH, 'api', 'alarms.json'))
    self.assertEqual(expected_files,
                     PRESUBMIT._CreateIntegrationTestArgs(input_files))
    expected_files.append('extensions/devtools_network.html')
    input_files.append(os.path.join(EXTENSIONS_PATH,
                                    'api',
                                    'devtools',
                                    'network.json'))
    self.assertEqual(expected_files,
                     PRESUBMIT._CreateIntegrationTestArgs(input_files))
    expected_files.append(os.path.join('extensions', 'docs.html'))
    expected_files.append(os.path.join('apps', 'docs.html'))
    input_files.append(os.path.join(PUBLIC_PATH, 'extensions', 'docs.html'))
    self.assertEqual(expected_files,
                     PRESUBMIT._CreateIntegrationTestArgs(input_files))
    expected_files.append(os.path.join('extensions', 'bookmarks.html'))
    input_files.append(os.path.join(INTROS_PATH, 'bookmarks.html'))
    self.assertEqual(expected_files,
                     PRESUBMIT._CreateIntegrationTestArgs(input_files))
    expected_files.append(os.path.join('extensions', 'i18n.html'))
    expected_files.append(os.path.join('apps', 'i18n.html'))
    input_files.append(os.path.join(INTROS_PATH, 'i18n.html'))
    self.assertEqual(expected_files,
                     PRESUBMIT._CreateIntegrationTestArgs(input_files))
    expected_files.append(os.path.join('apps', 'about_apps.html'))
    input_files.append(os.path.join(ARTICLES_PATH, 'about_apps.html'))
    self.assertEqual(expected_files,
                     PRESUBMIT._CreateIntegrationTestArgs(input_files))
    input_files.append(os.path.join(PRIVATE_PATH, 'type.html'))
    self.assertEqual([ '-a' ],
                     PRESUBMIT._CreateIntegrationTestArgs(input_files))
    input_files.pop()
    input_files.append(os.path.join(SERVER2_PATH, 'test.txt'))
    self.assertEqual(expected_files,
                     PRESUBMIT._CreateIntegrationTestArgs(input_files))
    input_files.append(os.path.join(SERVER2_PATH, 'handler.py'))
    self.assertEqual([ '-a' ],
                     PRESUBMIT._CreateIntegrationTestArgs(input_files))

if __name__ == '__main__':
  unittest.main()