def test_normalize_manifests(self): manifests = Manifest.normalize_manifests({ 'package': 'sass/path', 'package.name': ('sass/path', 'css/path'), 'package.name2': Manifest('sass/path', 'css/path'), 'package.name3': { 'sass_path': 'sass/path', 'css_path': 'css/path', 'strip_extension': True, }, }) assert len(manifests) == 4 assert isinstance(manifests['package'], Manifest) assert manifests['package'].sass_path == 'sass/path' assert manifests['package'].css_path == 'sass/path' assert isinstance(manifests['package.name'], Manifest) assert manifests['package.name'].sass_path == 'sass/path' assert manifests['package.name'].css_path == 'css/path' assert isinstance(manifests['package.name2'], Manifest) assert manifests['package.name2'].sass_path == 'sass/path' assert manifests['package.name2'].css_path == 'css/path' assert isinstance(manifests['package.name3'], Manifest) assert manifests['package.name3'].sass_path == 'sass/path' assert manifests['package.name3'].css_path == 'css/path' assert manifests['package.name3'].strip_extension is True
def test_manifest_build_strip_extension(tmpdir): src = tmpdir.join('test').ensure_dir() src.join('x.scss').write('a{b: c;}') m = Manifest(sass_path='test', css_path='css', strip_extension=True) m.build(package_dir=str(tmpdir)) assert tmpdir.join('css/x.css').read() == 'a {\n b: c; }\n'
def test_build_one(self): with tempdir() as d: src_path = os.path.join(d, 'test') def test_source_path(*path): return normalize_path(os.path.join(d, 'test', *path)) def replace_source_path(s, name): return s.replace('SOURCE', test_source_path(name)) shutil.copytree('test', src_path) m = Manifest(sass_path='test', css_path='css') m.build_one(d, 'a.scss') with open(os.path.join(d, 'css', 'a.scss.css')) as f: assert A_EXPECTED_CSS == f.read() m.build_one(d, 'b.scss', source_map=True) with io.open( os.path.join(d, 'css', 'b.scss.css'), encoding='UTF-8', ) as f: self.assertEqual( replace_source_path(B_EXPECTED_CSS_WITH_MAP, 'b.scss'), f.read(), ) self.assert_source_map_file( { 'version': 3, 'file': '../test/b.css', 'sources': ['../test/b.scss'], 'names': [], 'mappings': ('AAAA,AACE,CADD,CACC,CAAC,CAAC;EACA,SAAS,EAAE,IAAI,' 'GAChB'), }, os.path.join(d, 'css', 'b.scss.css.map'), ) m.build_one(d, 'd.scss', source_map=True) with io.open( os.path.join(d, 'css', 'd.scss.css'), encoding='UTF-8', ) as f: assert (replace_source_path(D_EXPECTED_CSS_WITH_MAP, 'd.scss') == f.read()) self.assert_source_map_file( { 'version': 3, 'file': '../test/d.css', 'sources': ['../test/d.scss'], 'names': [], 'mappings': (';AAKA,AAAA,IAAI,CAAC;EAHH,gBAAgB,EAAE,KAAK,GAQxB;' 'EALD,AAEE,IAFE,CAEF,CAAC,CAAC;IACA,IAAI,EAAE,sBAAsB,' 'GAC7B'), }, os.path.join(d, 'css', 'd.scss.css.map'), )
def test_normalize_manifests(self): manifests = Manifest.normalize_manifests({ 'package': 'sass/path', 'package.name': ('sass/path', 'css/path'), 'package.name2': Manifest('sass/path', 'css/path') }) assert len(manifests) == 3 assert isinstance(manifests['package'], Manifest) assert manifests['package'].sass_path == 'sass/path' assert manifests['package'].css_path == 'sass/path' assert isinstance(manifests['package.name'], Manifest) assert manifests['package.name'].sass_path == 'sass/path' assert manifests['package.name'].css_path == 'css/path' assert isinstance(manifests['package.name2'], Manifest) assert manifests['package.name2'].sass_path == 'sass/path' assert manifests['package.name2'].css_path == 'css/path'
def test_build_one(self): d = tempfile.mkdtemp() src_path = os.path.join(d, 'test') def test_source_path(*path): return normalize_path(os.path.join(d, 'test', *path)) def replace_source_path(s, name): return s.replace('SOURCE', test_source_path(name)) try: shutil.copytree('test', src_path) m = Manifest(sass_path='test', css_path='css') m.build_one(d, 'a.scss') with open(os.path.join(d, 'css', 'a.scss.css')) as f: self.assertEqual(A_EXPECTED_CSS, f.read()) m.build_one(d, 'b.scss', source_map=True) with open(os.path.join(d, 'css', 'b.scss.css'), **utf8_if_py3) as f: self.assertEqual( replace_source_path(B_EXPECTED_CSS_WITH_MAP, 'b.scss'), f.read()) self.assert_source_map_file( { 'version': 3, 'file': '../test/b.css', 'sources': ['../test/b.scss'], 'names': [], 'mappings': (';AAAA,AACE,CADD,CACC,CAAC,CAAC;EACA,SAAS,EAAE,IAAK,' 'GACjB'), }, os.path.join(d, 'css', 'b.scss.css.map')) m.build_one(d, 'd.scss', source_map=True) with open(os.path.join(d, 'css', 'd.scss.css'), **utf8_if_py3) as f: self.assertEqual( replace_source_path(D_EXPECTED_CSS_WITH_MAP, 'd.scss'), f.read()) self.assert_source_map_file( { 'version': 3, 'file': '../test/d.css', 'sources': ['../test/d.scss'], 'names': [], 'mappings': (';;AAKA,AAAA,IAAI,CAAC;EAHH,gBAAgB,EAAE,KAAM,GAQzB;;' 'EALD,AAEE,IAFE,CAEF,CAAC,CAAC;IACA,IAAI,EAAE,0BAA2B,' 'GAClC'), }, os.path.join(d, 'css', 'd.scss.css.map')) finally: shutil.rmtree(d)
def test_build_one(self): with tempdir() as d: src_path = os.path.join(d, 'test') def test_source_path(*path): return normalize_path(os.path.join(d, 'test', *path)) def replace_source_path(s, name): return s.replace('SOURCE', test_source_path(name)) shutil.copytree('test', src_path) m = Manifest(sass_path='test', css_path='css') m.build_one(d, 'a.scss') with open(os.path.join(d, 'css', 'a.scss.css')) as f: assert A_EXPECTED_CSS == f.read() m.build_one(d, 'b.scss', source_map=True) with io.open( os.path.join(d, 'css', 'b.scss.css'), encoding='UTF-8', ) as f: self.assertEqual( replace_source_path(B_EXPECTED_CSS_WITH_MAP, 'b.scss'), f.read(), ) self.assert_source_map_file( { 'version': 3, 'file': '../test/b.css', 'sources': ['../test/b.scss'], 'names': [], 'mappings': ( 'AAAA,AACE,CADD,CACC,CAAC,CAAC;EACA,SAAS,EAAE,IAAK,' 'GACjB' ), }, os.path.join(d, 'css', 'b.scss.css.map') ) m.build_one(d, 'd.scss', source_map=True) with io.open( os.path.join(d, 'css', 'd.scss.css'), encoding='UTF-8', ) as f: assert ( replace_source_path(D_EXPECTED_CSS_WITH_MAP, 'd.scss') == f.read() ) self.assert_source_map_file( { 'version': 3, 'file': '../test/d.css', 'sources': ['../test/d.scss'], 'names': [], 'mappings': ( ';AAKA,AAAA,IAAI,CAAC;EAHH,gBAAgB,EAAE,KAAM,GAQzB;' 'EALD,AAEE,IAFE,CAEF,CAAC,CAAC;IACA,IAAI,EAAE,0BAA2B,' 'GAClC' ), }, os.path.join(d, 'css', 'd.scss.css.map') )
def test_build_one(self): d = tempfile.mkdtemp() src_path = os.path.join(d, 'test') test_source_path = lambda *path: normalize_path( os.path.join(d, 'test', *path)) replace_source_path = lambda s, name: s.replace( 'SOURCE', test_source_path(name)) try: shutil.copytree('test', src_path) m = Manifest(sass_path='test', css_path='css') m.build_one(d, 'a.scss') with open(os.path.join(d, 'css', 'a.scss.css')) as f: self.assertEqual(A_EXPECTED_CSS, f.read()) m.build_one(d, 'b.scss', source_map=True) with open(os.path.join(d, 'css', 'b.scss.css'), **utf8_if_py3) as f: self.assertEqual( replace_source_path(B_EXPECTED_CSS_WITH_MAP, 'b.scss'), f.read()) self.assert_source_map_file( { 'version': 3, 'file': '../test/b.css', 'sources': ['../test/b.scss'], 'sourcesContent': [], 'names': [], 'mappings': ';AACE,CAAC,CAAC,CAAC,CAAD;EACA,SAAS,EAAE,IAAK,GADf', }, os.path.join(d, 'css', 'b.scss.css.map')) m.build_one(d, 'd.scss', source_map=True) with open(os.path.join(d, 'css', 'd.scss.css'), **utf8_if_py3) as f: self.assertEqual( replace_source_path(D_EXPECTED_CSS_WITH_MAP, 'd.scss'), f.read()) self.assert_source_map_file( { 'version': 3, 'file': '../test/d.css', 'sources': ['../test/d.scss'], 'sourcesContent': [], 'names': [], 'mappings': ';;AAKA,IAAI,CAAC;EAHH,gBAAgB,EAAE,KAAM,GAGpB;;EAEJ,IAAI,CAAC,CAAC,CAAJ;IACA,IAAI,EAAE,0BAA2B,GADhC', }, os.path.join(d, 'css', 'd.scss.css.map')) finally: shutil.rmtree(d)
def build_scss(): manifests = Manifest.normalize_manifests(app.config["SASS_MANIFEST"]) css_files = [] for package_name, manifest in manifests.items(): css_files = manifest.build("hubgrep/", output_style=app.config.get( "CSS_OUTPUT_STYLE", "compressed")) print(f"built css files: {list(css_files)}") print("deleting empty folders...") delete_empty_folders("hubgrep/static/")
def test_build_one(self): d = tempfile.mkdtemp() src_path = os.path.join(d, 'test') test_source_path = lambda *path: normalize_path( os.path.join(d, 'test', *path) ) replace_source_path = lambda s, name: s.replace( 'SOURCE', test_source_path(name) ) try: shutil.copytree('test', src_path) m = Manifest(sass_path='test', css_path='css') m.build_one(d, 'a.scss') with open(os.path.join(d, 'css', 'a.scss.css')) as f: self.assertEqual(A_EXPECTED_CSS, f.read()) m.build_one(d, 'b.scss', source_map=True) with open(os.path.join(d, 'css', 'b.scss.css'), **utf8_if_py3) as f: self.assertEqual( replace_source_path(B_EXPECTED_CSS_WITH_MAP, 'b.scss'), f.read() ) self.assert_source_map_file( { 'version': 3, 'file': '../test/b.css', 'sources': ['../test/b.scss'], 'sourcesContent': [], 'names': [], 'mappings': ';AACE,CAAC,CAAC,CAAC,CAAD;EACA,SAAS,EAAE,IAAK,GADf', }, os.path.join(d, 'css', 'b.scss.css.map') ) m.build_one(d, 'd.scss', source_map=True) with open(os.path.join(d, 'css', 'd.scss.css'), **utf8_if_py3) as f: self.assertEqual( replace_source_path(D_EXPECTED_CSS_WITH_MAP, 'd.scss'), f.read() ) self.assert_source_map_file( { 'version': 3, 'file': '../test/d.css', 'sources': ['../test/d.scss'], 'sourcesContent': [], 'names': [], 'mappings': ';;AAKA,IAAI,CAAC;EAHH,gBAAgB,EAAE,KAAM,GAGpB;;EAEJ,IAAI,CAAC,CAAC,CAAJ;IACA,IAAI,EAAE,0BAA2B,GADhC', }, os.path.join(d, 'css', 'd.scss.css.map') ) finally: shutil.rmtree(d)
def test_build_one(self): d = tempfile.mkdtemp() src_path = os.path.join(d, 'test') if os.sep != '/' and os.altsep: normalize = lambda p: os.path.abspath( os.path.normpath(os.path.join(src_path, p)) ).replace(os.sep, os.altsep) else: normalize = lambda p: p try: shutil.copytree('test', src_path) m = Manifest(sass_path='test', css_path='css') m.build_one(d, 'a.scss') with open(os.path.join(d, 'css', 'a.scss.css')) as f: self.assertEqual(A_EXPECTED_CSS, f.read()) m.build_one(d, 'b.scss', source_map=True) with open(os.path.join(d, 'css', 'b.scss.css'), **utf8_if_py3) as f: self.assertEqual( B_EXPECTED_CSS + '\n/*# sourceMappingURL=b.scss.css.map */', f.read() ) self.assert_json_file( { 'version': 3, 'file': '', 'sources': [normalize('../test/b.scss')], 'names': [], 'mappings': 'AAAA,EAAE;EAEE,WAAW' }, os.path.join(d, 'css', 'b.scss.css.map') ) m.build_one(d, 'd.scss', source_map=True) with open(os.path.join(d, 'css', 'd.scss.css'), **utf8_if_py3) as f: self.assertEqual( D_EXPECTED_CSS + '\n/*# sourceMappingURL=d.scss.css.map */', f.read() ) self.assert_json_file( { 'version': 3, 'file': '', 'sources': [normalize('../test/d.scss')], 'names': [], 'mappings': 'AAKA;EAHE,kBAAkB;EAIpB,KAAK;IAED,MAAM' }, os.path.join(d, 'css', 'd.scss.css.map') ) finally: shutil.rmtree(d)
def test_build_one(self): d = tempfile.mkdtemp() src_path = os.path.join(d, 'test') test_source_path = lambda *path: normalize_path( os.path.join(d, 'test', *path)) replace_source_path = lambda s, name: s.replace( 'SOURCE', test_source_path(name)) try: shutil.copytree('test', src_path) m = Manifest(sass_path='test', css_path='css') m.build_one(d, 'a.scss') with open(os.path.join(d, 'css', 'a.scss.css')) as f: self.assertEqual(A_EXPECTED_CSS, f.read()) m.build_one(d, 'b.scss', source_map=True) with open(os.path.join(d, 'css', 'b.scss.css'), **utf8_if_py3) as f: self.assertEqual( replace_source_path(B_EXPECTED_CSS_WITH_MAP, 'b.scss'), f.read()) self.assert_source_map_file( { 'version': 3, 'file': '../test/b.css', 'sources': ['../test/b.scss'], 'sourcesContent': [], 'names': [], 'mappings': ';AAAA,EAAE;EAEE,WAAW' }, os.path.join(d, 'css', 'b.scss.css.map')) m.build_one(d, 'd.scss', source_map=True) with open(os.path.join(d, 'css', 'd.scss.css'), **utf8_if_py3) as f: self.assertEqual( replace_source_path(D_EXPECTED_CSS_WITH_MAP, 'd.scss'), f.read()) self.assert_source_map_file( { 'version': 3, 'file': '../test/d.css', 'sources': ['../test/d.scss'], 'sourcesContent': [], 'names': [], 'mappings': ';AAKA;EAHE,kBAAkB;;EAIpB,KAAK;IAED,MAAM' }, os.path.join(d, 'css', 'd.scss.css.map')) finally: shutil.rmtree(d)