from os.path import join
import sublime
import sys
from unittest import TestCase
from unittest.mock import patch

version = sublime.version()

try:
    from libsass import pathutils
except ImportError:
    from sublime_libsass.libsass import pathutils


class TestPathutils(TestCase):
    def test_subpaths(self):
        path = join('/foo','bar','baz')
        exprmt = pathutils.subpaths(path)
        expect = [ join('/foo','bar','baz'), join('/foo','bar'), join('/foo'), join('/') ]
        self.assertEqual(exprmt, expect)

    @patch.object(pathutils, 'os')
    def test_grep_r(self, mock_os):
        mock_os.walk = lambda x: [('/tmp','',['file.scss'])]

        self.assertEqual(pathutils.find_type_dirs('anything', '.scss'), ['/tmp'])
        self.assertEqual(pathutils.find_type_dirs('anything', ['.scss', '.sass']), ['/tmp'])
        self.assertEqual(pathutils.find_type_dirs('anything', '.sass'), [])
        self.assertEqual(pathutils.find_type_dirs('anything', ['.txt', '.csv']), [])

from os.path import join
import sublime
import sys
from unittest import TestCase
from unittest.mock import patch

version = sublime.version()

try:
    from libsass import pathutils
except ImportError:
    from sublime_libsass.libsass import pathutils


class TestPathutils(TestCase):
    def test_subpaths(self):
        path = join('/foo','bar','baz')
        exprmt = pathutils.subpaths(path)
        expect = [ join('/foo','bar','baz'), join('/foo','bar'), join('/foo'), join('/') ]
        self.assertEqual(exprmt, expect)

    @patch.object(pathutils.os, 'walk')
    def test_grep_r(self, mock_walk):
        mock_walk = lambda x: [('/tmp','',['file.scss'])]

        self.assertEqual(pathutils.find_type_dirs('anything', '.scss'), ['/tmp'])
        self.assertEqual(pathutils.find_type_dirs('anything', ['.scss', '.sass']), ['/tmp'])
        self.assertEqual(pathutils.find_type_dirs('anything', '.sass'), [])
        self.assertEqual(pathutils.find_type_dirs('anything', ['.txt', '.csv']), [])

Change mocking scope to take effect
Change mocking scope to take effect

  from os.path import join
  import sublime
  import sys
  from unittest import TestCase
  from unittest.mock import patch
  
  version = sublime.version()
  
  try:
      from libsass import pathutils
  except ImportError:
      from sublime_libsass.libsass import pathutils
  
  
  class TestPathutils(TestCase):
      def test_subpaths(self):
          path = join('/foo','bar','baz')
          exprmt = pathutils.subpaths(path)
          expect = [ join('/foo','bar','baz'), join('/foo','bar'), join('/foo'), join('/') ]
          self.assertEqual(exprmt, expect)
  
-     @patch.object(pathutils, 'os')
+     @patch.object(pathutils.os, 'walk')
-     def test_grep_r(self, mock_os):
+     def test_grep_r(self, mock_walk):
-         mock_os.walk = lambda x: [('/tmp','',['file.scss'])]
+         mock_walk = lambda x: [('/tmp','',['file.scss'])]
  
          self.assertEqual(pathutils.find_type_dirs('anything', '.scss'), ['/tmp'])
          self.assertEqual(pathutils.find_type_dirs('anything', ['.scss', '.sass']), ['/tmp'])
          self.assertEqual(pathutils.find_type_dirs('anything', '.sass'), [])
          self.assertEqual(pathutils.find_type_dirs('anything', ['.txt', '.csv']), [])
  
Change mocking scope to take effect
## Code Before:
from os.path import join
import sublime
import sys
from unittest import TestCase
from unittest.mock import patch

version = sublime.version()

try:
    from libsass import pathutils
except ImportError:
    from sublime_libsass.libsass import pathutils


class TestPathutils(TestCase):
    def test_subpaths(self):
        path = join('/foo','bar','baz')
        exprmt = pathutils.subpaths(path)
        expect = [ join('/foo','bar','baz'), join('/foo','bar'), join('/foo'), join('/') ]
        self.assertEqual(exprmt, expect)

    @patch.object(pathutils, 'os')
    def test_grep_r(self, mock_os):
        mock_os.walk = lambda x: [('/tmp','',['file.scss'])]

        self.assertEqual(pathutils.find_type_dirs('anything', '.scss'), ['/tmp'])
        self.assertEqual(pathutils.find_type_dirs('anything', ['.scss', '.sass']), ['/tmp'])
        self.assertEqual(pathutils.find_type_dirs('anything', '.sass'), [])
        self.assertEqual(pathutils.find_type_dirs('anything', ['.txt', '.csv']), [])

## Instruction:
Change mocking scope to take effect
## Code After:
from os.path import join
import sublime
import sys
from unittest import TestCase
from unittest.mock import patch

version = sublime.version()

try:
    from libsass import pathutils
except ImportError:
    from sublime_libsass.libsass import pathutils


class TestPathutils(TestCase):
    def test_subpaths(self):
        path = join('/foo','bar','baz')
        exprmt = pathutils.subpaths(path)
        expect = [ join('/foo','bar','baz'), join('/foo','bar'), join('/foo'), join('/') ]
        self.assertEqual(exprmt, expect)

    @patch.object(pathutils.os, 'walk')
    def test_grep_r(self, mock_walk):
        mock_walk = lambda x: [('/tmp','',['file.scss'])]

        self.assertEqual(pathutils.find_type_dirs('anything', '.scss'), ['/tmp'])
        self.assertEqual(pathutils.find_type_dirs('anything', ['.scss', '.sass']), ['/tmp'])
        self.assertEqual(pathutils.find_type_dirs('anything', '.sass'), [])
        self.assertEqual(pathutils.find_type_dirs('anything', ['.txt', '.csv']), [])
