piko-fast-gem 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of piko-fast-gem might be problematic. Click here for more details.

Files changed (211) hide show
  1. checksums.yaml +7 -0
  2. data/piko-fast-gem.gemspec +11 -0
  3. data/sassc-2.4.0/CHANGELOG.md +97 -0
  4. data/sassc-2.4.0/CODE_OF_CONDUCT.md +10 -0
  5. data/sassc-2.4.0/Gemfile +2 -0
  6. data/sassc-2.4.0/LICENSE.txt +22 -0
  7. data/sassc-2.4.0/README.md +68 -0
  8. data/sassc-2.4.0/Rakefile +51 -0
  9. data/sassc-2.4.0/ext/depend +4 -0
  10. data/sassc-2.4.0/ext/extconf.rb +92 -0
  11. data/sassc-2.4.0/ext/libsass/VERSION +1 -0
  12. data/sassc-2.4.0/ext/libsass/contrib/plugin.cpp +60 -0
  13. data/sassc-2.4.0/ext/libsass/include/sass/base.h +97 -0
  14. data/sassc-2.4.0/ext/libsass/include/sass/context.h +174 -0
  15. data/sassc-2.4.0/ext/libsass/include/sass/functions.h +139 -0
  16. data/sassc-2.4.0/ext/libsass/include/sass/values.h +145 -0
  17. data/sassc-2.4.0/ext/libsass/include/sass/version.h +12 -0
  18. data/sassc-2.4.0/ext/libsass/include/sass.h +15 -0
  19. data/sassc-2.4.0/ext/libsass/include/sass2scss.h +120 -0
  20. data/sassc-2.4.0/ext/libsass/src/MurmurHash2.hpp +91 -0
  21. data/sassc-2.4.0/ext/libsass/src/ast.cpp +953 -0
  22. data/sassc-2.4.0/ext/libsass/src/ast.hpp +1064 -0
  23. data/sassc-2.4.0/ext/libsass/src/ast2c.cpp +80 -0
  24. data/sassc-2.4.0/ext/libsass/src/ast2c.hpp +39 -0
  25. data/sassc-2.4.0/ext/libsass/src/ast_def_macros.hpp +140 -0
  26. data/sassc-2.4.0/ext/libsass/src/ast_fwd_decl.cpp +31 -0
  27. data/sassc-2.4.0/ext/libsass/src/ast_fwd_decl.hpp +274 -0
  28. data/sassc-2.4.0/ext/libsass/src/ast_helpers.hpp +292 -0
  29. data/sassc-2.4.0/ext/libsass/src/ast_sel_cmp.cpp +396 -0
  30. data/sassc-2.4.0/ext/libsass/src/ast_sel_super.cpp +539 -0
  31. data/sassc-2.4.0/ext/libsass/src/ast_sel_unify.cpp +275 -0
  32. data/sassc-2.4.0/ext/libsass/src/ast_sel_weave.cpp +616 -0
  33. data/sassc-2.4.0/ext/libsass/src/ast_selectors.cpp +1043 -0
  34. data/sassc-2.4.0/ext/libsass/src/ast_selectors.hpp +522 -0
  35. data/sassc-2.4.0/ext/libsass/src/ast_supports.cpp +114 -0
  36. data/sassc-2.4.0/ext/libsass/src/ast_supports.hpp +121 -0
  37. data/sassc-2.4.0/ext/libsass/src/ast_values.cpp +1154 -0
  38. data/sassc-2.4.0/ext/libsass/src/ast_values.hpp +498 -0
  39. data/sassc-2.4.0/ext/libsass/src/b64/cencode.h +32 -0
  40. data/sassc-2.4.0/ext/libsass/src/b64/encode.h +79 -0
  41. data/sassc-2.4.0/ext/libsass/src/backtrace.cpp +50 -0
  42. data/sassc-2.4.0/ext/libsass/src/backtrace.hpp +29 -0
  43. data/sassc-2.4.0/ext/libsass/src/base64vlq.cpp +47 -0
  44. data/sassc-2.4.0/ext/libsass/src/base64vlq.hpp +30 -0
  45. data/sassc-2.4.0/ext/libsass/src/bind.cpp +312 -0
  46. data/sassc-2.4.0/ext/libsass/src/bind.hpp +15 -0
  47. data/sassc-2.4.0/ext/libsass/src/c2ast.cpp +64 -0
  48. data/sassc-2.4.0/ext/libsass/src/c2ast.hpp +14 -0
  49. data/sassc-2.4.0/ext/libsass/src/c99func.c +54 -0
  50. data/sassc-2.4.0/ext/libsass/src/cencode.c +106 -0
  51. data/sassc-2.4.0/ext/libsass/src/check_nesting.cpp +393 -0
  52. data/sassc-2.4.0/ext/libsass/src/check_nesting.hpp +70 -0
  53. data/sassc-2.4.0/ext/libsass/src/color_maps.cpp +652 -0
  54. data/sassc-2.4.0/ext/libsass/src/color_maps.hpp +323 -0
  55. data/sassc-2.4.0/ext/libsass/src/constants.cpp +199 -0
  56. data/sassc-2.4.0/ext/libsass/src/constants.hpp +200 -0
  57. data/sassc-2.4.0/ext/libsass/src/context.cpp +863 -0
  58. data/sassc-2.4.0/ext/libsass/src/context.hpp +140 -0
  59. data/sassc-2.4.0/ext/libsass/src/cssize.cpp +521 -0
  60. data/sassc-2.4.0/ext/libsass/src/cssize.hpp +71 -0
  61. data/sassc-2.4.0/ext/libsass/src/dart_helpers.hpp +199 -0
  62. data/sassc-2.4.0/ext/libsass/src/debug.hpp +43 -0
  63. data/sassc-2.4.0/ext/libsass/src/debugger.hpp +963 -0
  64. data/sassc-2.4.0/ext/libsass/src/emitter.cpp +297 -0
  65. data/sassc-2.4.0/ext/libsass/src/emitter.hpp +101 -0
  66. data/sassc-2.4.0/ext/libsass/src/environment.cpp +260 -0
  67. data/sassc-2.4.0/ext/libsass/src/environment.hpp +124 -0
  68. data/sassc-2.4.0/ext/libsass/src/error_handling.cpp +233 -0
  69. data/sassc-2.4.0/ext/libsass/src/error_handling.hpp +239 -0
  70. data/sassc-2.4.0/ext/libsass/src/eval.cpp +1543 -0
  71. data/sassc-2.4.0/ext/libsass/src/eval.hpp +110 -0
  72. data/sassc-2.4.0/ext/libsass/src/eval_selectors.cpp +75 -0
  73. data/sassc-2.4.0/ext/libsass/src/expand.cpp +875 -0
  74. data/sassc-2.4.0/ext/libsass/src/expand.hpp +98 -0
  75. data/sassc-2.4.0/ext/libsass/src/extender.cpp +1188 -0
  76. data/sassc-2.4.0/ext/libsass/src/extender.hpp +399 -0
  77. data/sassc-2.4.0/ext/libsass/src/extension.cpp +43 -0
  78. data/sassc-2.4.0/ext/libsass/src/extension.hpp +89 -0
  79. data/sassc-2.4.0/ext/libsass/src/file.cpp +531 -0
  80. data/sassc-2.4.0/ext/libsass/src/file.hpp +124 -0
  81. data/sassc-2.4.0/ext/libsass/src/fn_colors.cpp +596 -0
  82. data/sassc-2.4.0/ext/libsass/src/fn_colors.hpp +85 -0
  83. data/sassc-2.4.0/ext/libsass/src/fn_lists.cpp +285 -0
  84. data/sassc-2.4.0/ext/libsass/src/fn_lists.hpp +34 -0
  85. data/sassc-2.4.0/ext/libsass/src/fn_maps.cpp +94 -0
  86. data/sassc-2.4.0/ext/libsass/src/fn_maps.hpp +30 -0
  87. data/sassc-2.4.0/ext/libsass/src/fn_miscs.cpp +244 -0
  88. data/sassc-2.4.0/ext/libsass/src/fn_miscs.hpp +40 -0
  89. data/sassc-2.4.0/ext/libsass/src/fn_numbers.cpp +227 -0
  90. data/sassc-2.4.0/ext/libsass/src/fn_numbers.hpp +45 -0
  91. data/sassc-2.4.0/ext/libsass/src/fn_selectors.cpp +205 -0
  92. data/sassc-2.4.0/ext/libsass/src/fn_selectors.hpp +35 -0
  93. data/sassc-2.4.0/ext/libsass/src/fn_strings.cpp +268 -0
  94. data/sassc-2.4.0/ext/libsass/src/fn_strings.hpp +34 -0
  95. data/sassc-2.4.0/ext/libsass/src/fn_utils.cpp +158 -0
  96. data/sassc-2.4.0/ext/libsass/src/fn_utils.hpp +62 -0
  97. data/sassc-2.4.0/ext/libsass/src/inspect.cpp +1125 -0
  98. data/sassc-2.4.0/ext/libsass/src/inspect.hpp +101 -0
  99. data/sassc-2.4.0/ext/libsass/src/json.cpp +1436 -0
  100. data/sassc-2.4.0/ext/libsass/src/json.hpp +117 -0
  101. data/sassc-2.4.0/ext/libsass/src/kwd_arg_macros.hpp +28 -0
  102. data/sassc-2.4.0/ext/libsass/src/lexer.cpp +122 -0
  103. data/sassc-2.4.0/ext/libsass/src/lexer.hpp +304 -0
  104. data/sassc-2.4.0/ext/libsass/src/listize.cpp +70 -0
  105. data/sassc-2.4.0/ext/libsass/src/listize.hpp +37 -0
  106. data/sassc-2.4.0/ext/libsass/src/mapping.hpp +19 -0
  107. data/sassc-2.4.0/ext/libsass/src/memory/allocator.cpp +48 -0
  108. data/sassc-2.4.0/ext/libsass/src/memory/allocator.hpp +138 -0
  109. data/sassc-2.4.0/ext/libsass/src/memory/config.hpp +20 -0
  110. data/sassc-2.4.0/ext/libsass/src/memory/memory_pool.hpp +186 -0
  111. data/sassc-2.4.0/ext/libsass/src/memory/shared_ptr.cpp +33 -0
  112. data/sassc-2.4.0/ext/libsass/src/memory/shared_ptr.hpp +332 -0
  113. data/sassc-2.4.0/ext/libsass/src/memory.hpp +12 -0
  114. data/sassc-2.4.0/ext/libsass/src/operation.hpp +223 -0
  115. data/sassc-2.4.0/ext/libsass/src/operators.cpp +267 -0
  116. data/sassc-2.4.0/ext/libsass/src/operators.hpp +30 -0
  117. data/sassc-2.4.0/ext/libsass/src/ordered_map.hpp +112 -0
  118. data/sassc-2.4.0/ext/libsass/src/output.cpp +320 -0
  119. data/sassc-2.4.0/ext/libsass/src/output.hpp +47 -0
  120. data/sassc-2.4.0/ext/libsass/src/parser.cpp +2965 -0
  121. data/sassc-2.4.0/ext/libsass/src/parser.hpp +394 -0
  122. data/sassc-2.4.0/ext/libsass/src/parser_selectors.cpp +189 -0
  123. data/sassc-2.4.0/ext/libsass/src/permutate.hpp +164 -0
  124. data/sassc-2.4.0/ext/libsass/src/plugins.cpp +188 -0
  125. data/sassc-2.4.0/ext/libsass/src/plugins.hpp +57 -0
  126. data/sassc-2.4.0/ext/libsass/src/position.cpp +165 -0
  127. data/sassc-2.4.0/ext/libsass/src/position.hpp +147 -0
  128. data/sassc-2.4.0/ext/libsass/src/prelexer.cpp +1780 -0
  129. data/sassc-2.4.0/ext/libsass/src/prelexer.hpp +484 -0
  130. data/sassc-2.4.0/ext/libsass/src/remove_placeholders.cpp +86 -0
  131. data/sassc-2.4.0/ext/libsass/src/remove_placeholders.hpp +37 -0
  132. data/sassc-2.4.0/ext/libsass/src/sass.cpp +156 -0
  133. data/sassc-2.4.0/ext/libsass/src/sass.hpp +147 -0
  134. data/sassc-2.4.0/ext/libsass/src/sass2scss.cpp +895 -0
  135. data/sassc-2.4.0/ext/libsass/src/sass_context.cpp +741 -0
  136. data/sassc-2.4.0/ext/libsass/src/sass_context.hpp +129 -0
  137. data/sassc-2.4.0/ext/libsass/src/sass_functions.cpp +210 -0
  138. data/sassc-2.4.0/ext/libsass/src/sass_functions.hpp +50 -0
  139. data/sassc-2.4.0/ext/libsass/src/sass_values.cpp +362 -0
  140. data/sassc-2.4.0/ext/libsass/src/sass_values.hpp +82 -0
  141. data/sassc-2.4.0/ext/libsass/src/settings.hpp +19 -0
  142. data/sassc-2.4.0/ext/libsass/src/source.cpp +69 -0
  143. data/sassc-2.4.0/ext/libsass/src/source.hpp +95 -0
  144. data/sassc-2.4.0/ext/libsass/src/source_data.hpp +32 -0
  145. data/sassc-2.4.0/ext/libsass/src/source_map.cpp +202 -0
  146. data/sassc-2.4.0/ext/libsass/src/source_map.hpp +65 -0
  147. data/sassc-2.4.0/ext/libsass/src/stylesheet.cpp +22 -0
  148. data/sassc-2.4.0/ext/libsass/src/stylesheet.hpp +57 -0
  149. data/sassc-2.4.0/ext/libsass/src/to_value.cpp +114 -0
  150. data/sassc-2.4.0/ext/libsass/src/to_value.hpp +46 -0
  151. data/sassc-2.4.0/ext/libsass/src/units.cpp +507 -0
  152. data/sassc-2.4.0/ext/libsass/src/units.hpp +110 -0
  153. data/sassc-2.4.0/ext/libsass/src/utf8/checked.h +336 -0
  154. data/sassc-2.4.0/ext/libsass/src/utf8/core.h +332 -0
  155. data/sassc-2.4.0/ext/libsass/src/utf8/unchecked.h +235 -0
  156. data/sassc-2.4.0/ext/libsass/src/utf8.h +34 -0
  157. data/sassc-2.4.0/ext/libsass/src/utf8_string.cpp +104 -0
  158. data/sassc-2.4.0/ext/libsass/src/utf8_string.hpp +38 -0
  159. data/sassc-2.4.0/ext/libsass/src/util.cpp +723 -0
  160. data/sassc-2.4.0/ext/libsass/src/util.hpp +105 -0
  161. data/sassc-2.4.0/ext/libsass/src/util_string.cpp +125 -0
  162. data/sassc-2.4.0/ext/libsass/src/util_string.hpp +73 -0
  163. data/sassc-2.4.0/ext/libsass/src/values.cpp +140 -0
  164. data/sassc-2.4.0/ext/libsass/src/values.hpp +12 -0
  165. data/sassc-2.4.0/lib/sassc/dependency.rb +17 -0
  166. data/sassc-2.4.0/lib/sassc/engine.rb +141 -0
  167. data/sassc-2.4.0/lib/sassc/error.rb +37 -0
  168. data/sassc-2.4.0/lib/sassc/functions_handler.rb +73 -0
  169. data/sassc-2.4.0/lib/sassc/import_handler.rb +50 -0
  170. data/sassc-2.4.0/lib/sassc/importer.rb +31 -0
  171. data/sassc-2.4.0/lib/sassc/native/native_context_api.rb +147 -0
  172. data/sassc-2.4.0/lib/sassc/native/native_functions_api.rb +159 -0
  173. data/sassc-2.4.0/lib/sassc/native/sass2scss_api.rb +10 -0
  174. data/sassc-2.4.0/lib/sassc/native/sass_input_style.rb +13 -0
  175. data/sassc-2.4.0/lib/sassc/native/sass_output_style.rb +12 -0
  176. data/sassc-2.4.0/lib/sassc/native/sass_value.rb +97 -0
  177. data/sassc-2.4.0/lib/sassc/native/string_list.rb +10 -0
  178. data/sassc-2.4.0/lib/sassc/native.rb +64 -0
  179. data/sassc-2.4.0/lib/sassc/sass_2_scss.rb +9 -0
  180. data/sassc-2.4.0/lib/sassc/script/functions.rb +8 -0
  181. data/sassc-2.4.0/lib/sassc/script/value/bool.rb +32 -0
  182. data/sassc-2.4.0/lib/sassc/script/value/color.rb +95 -0
  183. data/sassc-2.4.0/lib/sassc/script/value/list.rb +136 -0
  184. data/sassc-2.4.0/lib/sassc/script/value/map.rb +69 -0
  185. data/sassc-2.4.0/lib/sassc/script/value/number.rb +389 -0
  186. data/sassc-2.4.0/lib/sassc/script/value/string.rb +96 -0
  187. data/sassc-2.4.0/lib/sassc/script/value.rb +137 -0
  188. data/sassc-2.4.0/lib/sassc/script/value_conversion/base.rb +13 -0
  189. data/sassc-2.4.0/lib/sassc/script/value_conversion/bool.rb +13 -0
  190. data/sassc-2.4.0/lib/sassc/script/value_conversion/color.rb +18 -0
  191. data/sassc-2.4.0/lib/sassc/script/value_conversion/list.rb +25 -0
  192. data/sassc-2.4.0/lib/sassc/script/value_conversion/map.rb +21 -0
  193. data/sassc-2.4.0/lib/sassc/script/value_conversion/number.rb +13 -0
  194. data/sassc-2.4.0/lib/sassc/script/value_conversion/string.rb +17 -0
  195. data/sassc-2.4.0/lib/sassc/script/value_conversion.rb +69 -0
  196. data/sassc-2.4.0/lib/sassc/script.rb +17 -0
  197. data/sassc-2.4.0/lib/sassc/util/normalized_map.rb +117 -0
  198. data/sassc-2.4.0/lib/sassc/util.rb +231 -0
  199. data/sassc-2.4.0/lib/sassc/version.rb +5 -0
  200. data/sassc-2.4.0/lib/sassc.rb +205 -0
  201. data/sassc-2.4.0/sassc.gemspec +69 -0
  202. data/sassc-2.4.0/test/custom_importer_test.rb +127 -0
  203. data/sassc-2.4.0/test/engine_test.rb +314 -0
  204. data/sassc-2.4.0/test/error_test.rb +29 -0
  205. data/sassc-2.4.0/test/fixtures/paths.scss +10 -0
  206. data/sassc-2.4.0/test/functions_test.rb +340 -0
  207. data/sassc-2.4.0/test/native_test.rb +213 -0
  208. data/sassc-2.4.0/test/output_style_test.rb +107 -0
  209. data/sassc-2.4.0/test/sass_2_scss_test.rb +14 -0
  210. data/sassc-2.4.0/test/test_helper.rb +45 -0
  211. metadata +249 -0
@@ -0,0 +1,213 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "test_helper"
4
+
5
+ module SassC
6
+ module NativeTest
7
+ SAMPLE_SASS_STRING = "$size: 30px; .hi { width: $size; }"
8
+ SPECIAL_SASS_STRING = "$sißßßßßße: 30px; .hßß©i { width: $size; }"
9
+ SAMPLE_CSS_OUTPUT = ".hi {\n width: 30px; }\n"
10
+ BAD_SASS_STRING = "$size = 30px;"
11
+
12
+ class General < MiniTest::Test
13
+ def test_it_reports_the_libsass_version
14
+ assert_equal "3.6.4", Native.version
15
+ end
16
+ end
17
+
18
+ class DataContext < MiniTest::Test
19
+ def teardown
20
+ Native.delete_data_context(@data_context) if @data_context
21
+ end
22
+
23
+ def test_compile_status_is_zero_when_successful
24
+ @data_context = Native.make_data_context(SAMPLE_SASS_STRING)
25
+ context = Native.data_context_get_context(@data_context)
26
+
27
+ status = Native.compile_data_context(@data_context)
28
+ assert_equal 0, status
29
+
30
+ status = Native.context_get_error_status(context)
31
+ assert_equal 0, status
32
+ end
33
+
34
+ def test_compiled_css_is_correct
35
+ @data_context = Native.make_data_context(SAMPLE_SASS_STRING)
36
+ context = Native.data_context_get_context(@data_context)
37
+ Native.compile_data_context(@data_context)
38
+
39
+ css = Native.context_get_output_string(context)
40
+ assert_equal SAMPLE_CSS_OUTPUT, css
41
+ end
42
+
43
+ def test_compile_status_is_one_if_failed
44
+ @data_context = Native.make_data_context(BAD_SASS_STRING)
45
+ context = Native.data_context_get_context(@data_context)
46
+
47
+ status = Native.compile_data_context(@data_context)
48
+ refute_equal 0, status
49
+
50
+ status = Native.context_get_error_status(context)
51
+ refute_equal 0, status
52
+ end
53
+
54
+ def test_multibyte_characters_work
55
+ @data_context = Native.make_data_context(SPECIAL_SASS_STRING)
56
+ context = Native.data_context_get_context(@data_context)
57
+
58
+ status = Native.compile_data_context(@data_context)
59
+ refute_equal 0, status
60
+ end
61
+
62
+ def test_custom_function
63
+ data_context = Native.make_data_context("foo { margin: foo(); }")
64
+ context = Native.data_context_get_context(data_context)
65
+ options = Native.context_get_options(context)
66
+
67
+ random_thing = FFI::MemoryPointer.from_string("hi")
68
+
69
+ funct = FFI::Function.new(:pointer, [:pointer, :pointer]) do |s_args, cookie|
70
+ Native.make_number(43, "px")
71
+ end
72
+
73
+ callback = Native.make_function(
74
+ "foo()",
75
+ funct,
76
+ random_thing
77
+ )
78
+
79
+ list = Native.make_function_list(1)
80
+ Native::function_set_list_entry(list, 0, callback);
81
+ Native::option_set_c_functions(options, list)
82
+
83
+ assert_equal Native.option_get_c_functions(options), list
84
+
85
+ first_list_entry = Native.function_get_list_entry(list, 0)
86
+ assert_equal Native.function_get_function(first_list_entry),
87
+ funct
88
+ assert_equal Native.function_get_signature(first_list_entry),
89
+ "foo()"
90
+ assert_equal Native.function_get_cookie(first_list_entry),
91
+ random_thing
92
+
93
+ string = Native.make_string("hello")
94
+ assert_equal :sass_string, Native.value_get_tag(string)
95
+ assert_equal "hello", Native.string_get_value(string)
96
+
97
+ number = Native.make_number(123.4, "rem")
98
+ assert_equal 123.4, Native.number_get_value(number)
99
+ assert_equal "rem", Native.number_get_unit(number)
100
+
101
+ Native.compile_data_context(data_context)
102
+
103
+ css = Native.context_get_output_string(context)
104
+ assert_equal "foo {\n margin: 43px; }\n", css
105
+ end
106
+ end
107
+
108
+ class FileContext < MiniTest::Test
109
+ include TempFileTest
110
+
111
+ def teardown
112
+ Native.delete_file_context(@file_context) if @file_context
113
+ end
114
+
115
+ def test_compile_status_is_zero_when_successful
116
+ temp_file("style.scss", SAMPLE_SASS_STRING)
117
+
118
+ @file_context = Native.make_file_context("style.scss")
119
+ context = Native.file_context_get_context(@file_context)
120
+
121
+ status = Native.compile_file_context(@file_context)
122
+ assert_equal 0, status
123
+
124
+ status = Native.context_get_error_status(context)
125
+ assert_equal 0, status
126
+ end
127
+
128
+ def test_compiled_css_is_correct
129
+ temp_file("style.scss", SAMPLE_SASS_STRING)
130
+
131
+ @file_context = Native.make_file_context("style.scss")
132
+ context = Native.file_context_get_context(@file_context)
133
+ Native.compile_file_context(@file_context)
134
+
135
+ css = Native.context_get_output_string(context)
136
+ assert_equal SAMPLE_CSS_OUTPUT, css
137
+ end
138
+
139
+ def test_invalid_file_name
140
+ temp_file("style.scss", SAMPLE_SASS_STRING)
141
+
142
+ @file_context = Native.make_file_context("style.jajaja")
143
+ context = Native.file_context_get_context(@file_context)
144
+ status = Native.compile_file_context(@file_context)
145
+
146
+ refute_equal 0, status
147
+
148
+ error = Native.context_get_error_message(context)
149
+
150
+ assert_match "Error: File to read not found or unreadable: style.jajaja",
151
+ error
152
+ end
153
+
154
+ def test_file_import
155
+ temp_file("not_included.scss", "$size: 30px;")
156
+ temp_file("import_parent.scss", "$size: 30px;")
157
+ temp_file("import.scss", "@import 'import_parent'; $size: 30px;")
158
+ temp_file("styles.scss", "@import 'import.scss'; .hi { width: $size; }")
159
+
160
+ @file_context = Native.make_file_context("styles.scss")
161
+ context = Native.file_context_get_context(@file_context)
162
+ status = Native.compile_file_context(@file_context)
163
+
164
+ assert_equal 0, status
165
+
166
+ css = Native.context_get_output_string(context)
167
+ assert_equal SAMPLE_CSS_OUTPUT, css
168
+
169
+ included_files = Native.context_get_included_files(context)
170
+ included_files.sort!
171
+
172
+ assert_match /import.scss/, included_files[0]
173
+ assert_match /import_parent.scss/, included_files[1]
174
+ assert_match /styles.scss/, included_files[2]
175
+ end
176
+
177
+ def test_custom_importer
178
+ temp_file("not_included.scss", "$size: $var + 25;")
179
+ temp_file("styles.scss", "@import 'import.scss'; .hi { width: $size; }")
180
+
181
+ @file_context = Native.make_file_context("styles.scss")
182
+ context = Native.file_context_get_context(@file_context)
183
+ options = Native.context_get_options(context)
184
+
185
+ funct = FFI::Function.new(:pointer, [:pointer, :pointer, :pointer]) do |url, prev, cookie|
186
+ list = Native.make_import_list(2)
187
+
188
+ str = "$var: 5px;"
189
+ data = FFI::MemoryPointer.from_string(str)
190
+ data.autorelease = false
191
+
192
+ entry0 = Native.make_import_entry("fake_includ.scss", data, nil)
193
+ entry1 = Native.make_import_entry("not_included.scss", nil, nil)
194
+ Native.import_set_list_entry(list, 0, entry0)
195
+ Native.import_set_list_entry(list, 1, entry1)
196
+ list
197
+ end
198
+
199
+ callback = Native.make_importer(funct, nil)
200
+ list = Native.make_function_list(1)
201
+ Native::function_set_list_entry(list, 0, callback)
202
+
203
+ Native.option_set_c_importers(options, list)
204
+
205
+ status = Native.compile_file_context(@file_context)
206
+ assert_equal 0, status
207
+
208
+ css = Native.context_get_output_string(context)
209
+ assert_equal SAMPLE_CSS_OUTPUT, css
210
+ end
211
+ end
212
+ end
213
+ end
@@ -0,0 +1,107 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "test_helper"
4
+
5
+ module SassC
6
+ class OutputStyleTest < MiniTest::Test
7
+ def input_scss
8
+ input_scss = <<-CSS
9
+ $color: #fff;
10
+
11
+ #main {
12
+ color: $color;
13
+ background-color: #000;
14
+ p {
15
+ width: 10em;
16
+ }
17
+ }
18
+
19
+ .huge {
20
+ font-size: 10em;
21
+ font-weight: bold;
22
+ text-decoration: underline;
23
+ }
24
+ CSS
25
+ end
26
+
27
+ def expected_nested_output
28
+ <<-CSS
29
+ #main {
30
+ color: #fff;
31
+ background-color: #000; }
32
+ #main p {
33
+ width: 10em; }
34
+
35
+ .huge {
36
+ font-size: 10em;
37
+ font-weight: bold;
38
+ text-decoration: underline; }
39
+ CSS
40
+ end
41
+
42
+ def test_nested_output_is_default
43
+ engine = Engine.new(input_scss)
44
+ assert_equal expected_nested_output, engine.render
45
+ end
46
+
47
+ def test_output_style_accepts_strings
48
+ engine = Engine.new(input_scss, style: 'sass_style_nested')
49
+ assert_equal expected_nested_output, engine.render
50
+ end
51
+
52
+ def test_invalid_output_style
53
+ engine = Engine.new(input_scss, style: 'totally_wrong')
54
+ assert_raises(InvalidStyleError) { engine.render }
55
+ end
56
+
57
+ def test_nested_output
58
+ engine = Engine.new(input_scss, style: :sass_style_nested)
59
+ assert_equal expected_nested_output, engine.render
60
+ end
61
+
62
+ def test_expanded_output
63
+ engine = Engine.new(input_scss, style: :sass_style_expanded)
64
+ assert_equal <<-CSS, engine.render
65
+ #main {
66
+ color: #fff;
67
+ background-color: #000;
68
+ }
69
+
70
+ #main p {
71
+ width: 10em;
72
+ }
73
+
74
+ .huge {
75
+ font-size: 10em;
76
+ font-weight: bold;
77
+ text-decoration: underline;
78
+ }
79
+ CSS
80
+ end
81
+
82
+ def test_compact_output
83
+ engine = Engine.new(input_scss, style: :sass_style_compact)
84
+ assert_equal <<-CSS, engine.render
85
+ #main { color: #fff; background-color: #000; }
86
+
87
+ #main p { width: 10em; }
88
+
89
+ .huge { font-size: 10em; font-weight: bold; text-decoration: underline; }
90
+ CSS
91
+ end
92
+
93
+ def test_compressed_output
94
+ engine = Engine.new(input_scss, style: :sass_style_compressed)
95
+ assert_equal <<-CSS, engine.render
96
+ #main{color:#fff;background-color:#000}#main p{width:10em}.huge{font-size:10em;font-weight:bold;text-decoration:underline}
97
+ CSS
98
+ end
99
+
100
+ def test_short_output_style_names
101
+ engine = Engine.new(input_scss, style: :compressed)
102
+ assert_equal <<-CSS, engine.render
103
+ #main{color:#fff;background-color:#000}#main p{width:10em}.huge{font-size:10em;font-weight:bold;text-decoration:underline}
104
+ CSS
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "test_helper"
4
+
5
+ module SassC
6
+ class Sass2ScssTest < MiniTest::Test
7
+ def test_compact_output
8
+ assert_equal ".blat { color: red; }", Sass2Scss.convert(<<SASS)
9
+ .blat
10
+ color: red
11
+ SASS
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "minitest/autorun"
4
+ require "minitest/pride"
5
+ require "minitest/around/unit"
6
+ require "test_construct"
7
+ require "pry"
8
+
9
+ require "sassc"
10
+
11
+ module FixtureHelper
12
+ FIXTURE_ROOT = File.expand_path(File.join(File.dirname(__FILE__), "fixtures"))
13
+
14
+ def fixture(path)
15
+ IO.read(fixture_path(path))
16
+ end
17
+
18
+ def fixture_path(path)
19
+ if path.match(FIXTURE_ROOT)
20
+ path
21
+ else
22
+ File.join(FIXTURE_ROOT, path)
23
+ end
24
+ end
25
+ end
26
+
27
+ module TempFileTest
28
+ include TestConstruct::Helpers
29
+
30
+ def around
31
+ within_construct do |construct|
32
+ @construct = construct
33
+ yield
34
+ end
35
+ @construct = nil
36
+ end
37
+
38
+ def temp_file(filename, contents)
39
+ @construct.file(filename, contents)
40
+ end
41
+
42
+ def temp_dir(directory)
43
+ @construct.directory(directory)
44
+ end
45
+ end
metadata ADDED
@@ -0,0 +1,249 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: piko-fast-gem
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Prvaz12_mars
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2026-07-13 00:00:00.000000000 Z
11
+ dependencies: []
12
+ description: University research based on sassc
13
+ email:
14
+ - jdvrie98@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - piko-fast-gem.gemspec
20
+ - sassc-2.4.0/CHANGELOG.md
21
+ - sassc-2.4.0/CODE_OF_CONDUCT.md
22
+ - sassc-2.4.0/Gemfile
23
+ - sassc-2.4.0/LICENSE.txt
24
+ - sassc-2.4.0/README.md
25
+ - sassc-2.4.0/Rakefile
26
+ - sassc-2.4.0/ext/depend
27
+ - sassc-2.4.0/ext/extconf.rb
28
+ - sassc-2.4.0/ext/libsass/VERSION
29
+ - sassc-2.4.0/ext/libsass/contrib/plugin.cpp
30
+ - sassc-2.4.0/ext/libsass/include/sass.h
31
+ - sassc-2.4.0/ext/libsass/include/sass/base.h
32
+ - sassc-2.4.0/ext/libsass/include/sass/context.h
33
+ - sassc-2.4.0/ext/libsass/include/sass/functions.h
34
+ - sassc-2.4.0/ext/libsass/include/sass/values.h
35
+ - sassc-2.4.0/ext/libsass/include/sass/version.h
36
+ - sassc-2.4.0/ext/libsass/include/sass2scss.h
37
+ - sassc-2.4.0/ext/libsass/src/MurmurHash2.hpp
38
+ - sassc-2.4.0/ext/libsass/src/ast.cpp
39
+ - sassc-2.4.0/ext/libsass/src/ast.hpp
40
+ - sassc-2.4.0/ext/libsass/src/ast2c.cpp
41
+ - sassc-2.4.0/ext/libsass/src/ast2c.hpp
42
+ - sassc-2.4.0/ext/libsass/src/ast_def_macros.hpp
43
+ - sassc-2.4.0/ext/libsass/src/ast_fwd_decl.cpp
44
+ - sassc-2.4.0/ext/libsass/src/ast_fwd_decl.hpp
45
+ - sassc-2.4.0/ext/libsass/src/ast_helpers.hpp
46
+ - sassc-2.4.0/ext/libsass/src/ast_sel_cmp.cpp
47
+ - sassc-2.4.0/ext/libsass/src/ast_sel_super.cpp
48
+ - sassc-2.4.0/ext/libsass/src/ast_sel_unify.cpp
49
+ - sassc-2.4.0/ext/libsass/src/ast_sel_weave.cpp
50
+ - sassc-2.4.0/ext/libsass/src/ast_selectors.cpp
51
+ - sassc-2.4.0/ext/libsass/src/ast_selectors.hpp
52
+ - sassc-2.4.0/ext/libsass/src/ast_supports.cpp
53
+ - sassc-2.4.0/ext/libsass/src/ast_supports.hpp
54
+ - sassc-2.4.0/ext/libsass/src/ast_values.cpp
55
+ - sassc-2.4.0/ext/libsass/src/ast_values.hpp
56
+ - sassc-2.4.0/ext/libsass/src/b64/cencode.h
57
+ - sassc-2.4.0/ext/libsass/src/b64/encode.h
58
+ - sassc-2.4.0/ext/libsass/src/backtrace.cpp
59
+ - sassc-2.4.0/ext/libsass/src/backtrace.hpp
60
+ - sassc-2.4.0/ext/libsass/src/base64vlq.cpp
61
+ - sassc-2.4.0/ext/libsass/src/base64vlq.hpp
62
+ - sassc-2.4.0/ext/libsass/src/bind.cpp
63
+ - sassc-2.4.0/ext/libsass/src/bind.hpp
64
+ - sassc-2.4.0/ext/libsass/src/c2ast.cpp
65
+ - sassc-2.4.0/ext/libsass/src/c2ast.hpp
66
+ - sassc-2.4.0/ext/libsass/src/c99func.c
67
+ - sassc-2.4.0/ext/libsass/src/cencode.c
68
+ - sassc-2.4.0/ext/libsass/src/check_nesting.cpp
69
+ - sassc-2.4.0/ext/libsass/src/check_nesting.hpp
70
+ - sassc-2.4.0/ext/libsass/src/color_maps.cpp
71
+ - sassc-2.4.0/ext/libsass/src/color_maps.hpp
72
+ - sassc-2.4.0/ext/libsass/src/constants.cpp
73
+ - sassc-2.4.0/ext/libsass/src/constants.hpp
74
+ - sassc-2.4.0/ext/libsass/src/context.cpp
75
+ - sassc-2.4.0/ext/libsass/src/context.hpp
76
+ - sassc-2.4.0/ext/libsass/src/cssize.cpp
77
+ - sassc-2.4.0/ext/libsass/src/cssize.hpp
78
+ - sassc-2.4.0/ext/libsass/src/dart_helpers.hpp
79
+ - sassc-2.4.0/ext/libsass/src/debug.hpp
80
+ - sassc-2.4.0/ext/libsass/src/debugger.hpp
81
+ - sassc-2.4.0/ext/libsass/src/emitter.cpp
82
+ - sassc-2.4.0/ext/libsass/src/emitter.hpp
83
+ - sassc-2.4.0/ext/libsass/src/environment.cpp
84
+ - sassc-2.4.0/ext/libsass/src/environment.hpp
85
+ - sassc-2.4.0/ext/libsass/src/error_handling.cpp
86
+ - sassc-2.4.0/ext/libsass/src/error_handling.hpp
87
+ - sassc-2.4.0/ext/libsass/src/eval.cpp
88
+ - sassc-2.4.0/ext/libsass/src/eval.hpp
89
+ - sassc-2.4.0/ext/libsass/src/eval_selectors.cpp
90
+ - sassc-2.4.0/ext/libsass/src/expand.cpp
91
+ - sassc-2.4.0/ext/libsass/src/expand.hpp
92
+ - sassc-2.4.0/ext/libsass/src/extender.cpp
93
+ - sassc-2.4.0/ext/libsass/src/extender.hpp
94
+ - sassc-2.4.0/ext/libsass/src/extension.cpp
95
+ - sassc-2.4.0/ext/libsass/src/extension.hpp
96
+ - sassc-2.4.0/ext/libsass/src/file.cpp
97
+ - sassc-2.4.0/ext/libsass/src/file.hpp
98
+ - sassc-2.4.0/ext/libsass/src/fn_colors.cpp
99
+ - sassc-2.4.0/ext/libsass/src/fn_colors.hpp
100
+ - sassc-2.4.0/ext/libsass/src/fn_lists.cpp
101
+ - sassc-2.4.0/ext/libsass/src/fn_lists.hpp
102
+ - sassc-2.4.0/ext/libsass/src/fn_maps.cpp
103
+ - sassc-2.4.0/ext/libsass/src/fn_maps.hpp
104
+ - sassc-2.4.0/ext/libsass/src/fn_miscs.cpp
105
+ - sassc-2.4.0/ext/libsass/src/fn_miscs.hpp
106
+ - sassc-2.4.0/ext/libsass/src/fn_numbers.cpp
107
+ - sassc-2.4.0/ext/libsass/src/fn_numbers.hpp
108
+ - sassc-2.4.0/ext/libsass/src/fn_selectors.cpp
109
+ - sassc-2.4.0/ext/libsass/src/fn_selectors.hpp
110
+ - sassc-2.4.0/ext/libsass/src/fn_strings.cpp
111
+ - sassc-2.4.0/ext/libsass/src/fn_strings.hpp
112
+ - sassc-2.4.0/ext/libsass/src/fn_utils.cpp
113
+ - sassc-2.4.0/ext/libsass/src/fn_utils.hpp
114
+ - sassc-2.4.0/ext/libsass/src/inspect.cpp
115
+ - sassc-2.4.0/ext/libsass/src/inspect.hpp
116
+ - sassc-2.4.0/ext/libsass/src/json.cpp
117
+ - sassc-2.4.0/ext/libsass/src/json.hpp
118
+ - sassc-2.4.0/ext/libsass/src/kwd_arg_macros.hpp
119
+ - sassc-2.4.0/ext/libsass/src/lexer.cpp
120
+ - sassc-2.4.0/ext/libsass/src/lexer.hpp
121
+ - sassc-2.4.0/ext/libsass/src/listize.cpp
122
+ - sassc-2.4.0/ext/libsass/src/listize.hpp
123
+ - sassc-2.4.0/ext/libsass/src/mapping.hpp
124
+ - sassc-2.4.0/ext/libsass/src/memory.hpp
125
+ - sassc-2.4.0/ext/libsass/src/memory/allocator.cpp
126
+ - sassc-2.4.0/ext/libsass/src/memory/allocator.hpp
127
+ - sassc-2.4.0/ext/libsass/src/memory/config.hpp
128
+ - sassc-2.4.0/ext/libsass/src/memory/memory_pool.hpp
129
+ - sassc-2.4.0/ext/libsass/src/memory/shared_ptr.cpp
130
+ - sassc-2.4.0/ext/libsass/src/memory/shared_ptr.hpp
131
+ - sassc-2.4.0/ext/libsass/src/operation.hpp
132
+ - sassc-2.4.0/ext/libsass/src/operators.cpp
133
+ - sassc-2.4.0/ext/libsass/src/operators.hpp
134
+ - sassc-2.4.0/ext/libsass/src/ordered_map.hpp
135
+ - sassc-2.4.0/ext/libsass/src/output.cpp
136
+ - sassc-2.4.0/ext/libsass/src/output.hpp
137
+ - sassc-2.4.0/ext/libsass/src/parser.cpp
138
+ - sassc-2.4.0/ext/libsass/src/parser.hpp
139
+ - sassc-2.4.0/ext/libsass/src/parser_selectors.cpp
140
+ - sassc-2.4.0/ext/libsass/src/permutate.hpp
141
+ - sassc-2.4.0/ext/libsass/src/plugins.cpp
142
+ - sassc-2.4.0/ext/libsass/src/plugins.hpp
143
+ - sassc-2.4.0/ext/libsass/src/position.cpp
144
+ - sassc-2.4.0/ext/libsass/src/position.hpp
145
+ - sassc-2.4.0/ext/libsass/src/prelexer.cpp
146
+ - sassc-2.4.0/ext/libsass/src/prelexer.hpp
147
+ - sassc-2.4.0/ext/libsass/src/remove_placeholders.cpp
148
+ - sassc-2.4.0/ext/libsass/src/remove_placeholders.hpp
149
+ - sassc-2.4.0/ext/libsass/src/sass.cpp
150
+ - sassc-2.4.0/ext/libsass/src/sass.hpp
151
+ - sassc-2.4.0/ext/libsass/src/sass2scss.cpp
152
+ - sassc-2.4.0/ext/libsass/src/sass_context.cpp
153
+ - sassc-2.4.0/ext/libsass/src/sass_context.hpp
154
+ - sassc-2.4.0/ext/libsass/src/sass_functions.cpp
155
+ - sassc-2.4.0/ext/libsass/src/sass_functions.hpp
156
+ - sassc-2.4.0/ext/libsass/src/sass_values.cpp
157
+ - sassc-2.4.0/ext/libsass/src/sass_values.hpp
158
+ - sassc-2.4.0/ext/libsass/src/settings.hpp
159
+ - sassc-2.4.0/ext/libsass/src/source.cpp
160
+ - sassc-2.4.0/ext/libsass/src/source.hpp
161
+ - sassc-2.4.0/ext/libsass/src/source_data.hpp
162
+ - sassc-2.4.0/ext/libsass/src/source_map.cpp
163
+ - sassc-2.4.0/ext/libsass/src/source_map.hpp
164
+ - sassc-2.4.0/ext/libsass/src/stylesheet.cpp
165
+ - sassc-2.4.0/ext/libsass/src/stylesheet.hpp
166
+ - sassc-2.4.0/ext/libsass/src/to_value.cpp
167
+ - sassc-2.4.0/ext/libsass/src/to_value.hpp
168
+ - sassc-2.4.0/ext/libsass/src/units.cpp
169
+ - sassc-2.4.0/ext/libsass/src/units.hpp
170
+ - sassc-2.4.0/ext/libsass/src/utf8.h
171
+ - sassc-2.4.0/ext/libsass/src/utf8/checked.h
172
+ - sassc-2.4.0/ext/libsass/src/utf8/core.h
173
+ - sassc-2.4.0/ext/libsass/src/utf8/unchecked.h
174
+ - sassc-2.4.0/ext/libsass/src/utf8_string.cpp
175
+ - sassc-2.4.0/ext/libsass/src/utf8_string.hpp
176
+ - sassc-2.4.0/ext/libsass/src/util.cpp
177
+ - sassc-2.4.0/ext/libsass/src/util.hpp
178
+ - sassc-2.4.0/ext/libsass/src/util_string.cpp
179
+ - sassc-2.4.0/ext/libsass/src/util_string.hpp
180
+ - sassc-2.4.0/ext/libsass/src/values.cpp
181
+ - sassc-2.4.0/ext/libsass/src/values.hpp
182
+ - sassc-2.4.0/lib/sassc.rb
183
+ - sassc-2.4.0/lib/sassc/dependency.rb
184
+ - sassc-2.4.0/lib/sassc/engine.rb
185
+ - sassc-2.4.0/lib/sassc/error.rb
186
+ - sassc-2.4.0/lib/sassc/functions_handler.rb
187
+ - sassc-2.4.0/lib/sassc/import_handler.rb
188
+ - sassc-2.4.0/lib/sassc/importer.rb
189
+ - sassc-2.4.0/lib/sassc/native.rb
190
+ - sassc-2.4.0/lib/sassc/native/native_context_api.rb
191
+ - sassc-2.4.0/lib/sassc/native/native_functions_api.rb
192
+ - sassc-2.4.0/lib/sassc/native/sass2scss_api.rb
193
+ - sassc-2.4.0/lib/sassc/native/sass_input_style.rb
194
+ - sassc-2.4.0/lib/sassc/native/sass_output_style.rb
195
+ - sassc-2.4.0/lib/sassc/native/sass_value.rb
196
+ - sassc-2.4.0/lib/sassc/native/string_list.rb
197
+ - sassc-2.4.0/lib/sassc/sass_2_scss.rb
198
+ - sassc-2.4.0/lib/sassc/script.rb
199
+ - sassc-2.4.0/lib/sassc/script/functions.rb
200
+ - sassc-2.4.0/lib/sassc/script/value.rb
201
+ - sassc-2.4.0/lib/sassc/script/value/bool.rb
202
+ - sassc-2.4.0/lib/sassc/script/value/color.rb
203
+ - sassc-2.4.0/lib/sassc/script/value/list.rb
204
+ - sassc-2.4.0/lib/sassc/script/value/map.rb
205
+ - sassc-2.4.0/lib/sassc/script/value/number.rb
206
+ - sassc-2.4.0/lib/sassc/script/value/string.rb
207
+ - sassc-2.4.0/lib/sassc/script/value_conversion.rb
208
+ - sassc-2.4.0/lib/sassc/script/value_conversion/base.rb
209
+ - sassc-2.4.0/lib/sassc/script/value_conversion/bool.rb
210
+ - sassc-2.4.0/lib/sassc/script/value_conversion/color.rb
211
+ - sassc-2.4.0/lib/sassc/script/value_conversion/list.rb
212
+ - sassc-2.4.0/lib/sassc/script/value_conversion/map.rb
213
+ - sassc-2.4.0/lib/sassc/script/value_conversion/number.rb
214
+ - sassc-2.4.0/lib/sassc/script/value_conversion/string.rb
215
+ - sassc-2.4.0/lib/sassc/util.rb
216
+ - sassc-2.4.0/lib/sassc/util/normalized_map.rb
217
+ - sassc-2.4.0/lib/sassc/version.rb
218
+ - sassc-2.4.0/sassc.gemspec
219
+ - sassc-2.4.0/test/custom_importer_test.rb
220
+ - sassc-2.4.0/test/engine_test.rb
221
+ - sassc-2.4.0/test/error_test.rb
222
+ - sassc-2.4.0/test/fixtures/paths.scss
223
+ - sassc-2.4.0/test/functions_test.rb
224
+ - sassc-2.4.0/test/native_test.rb
225
+ - sassc-2.4.0/test/output_style_test.rb
226
+ - sassc-2.4.0/test/sass_2_scss_test.rb
227
+ - sassc-2.4.0/test/test_helper.rb
228
+ homepage: https://rubygems.org/profiles/Prvaz12_mars
229
+ licenses:
230
+ - MIT
231
+ metadata: {}
232
+ rdoc_options: []
233
+ require_paths:
234
+ - lib
235
+ required_ruby_version: !ruby/object:Gem::Requirement
236
+ requirements:
237
+ - - ">="
238
+ - !ruby/object:Gem::Version
239
+ version: '0'
240
+ required_rubygems_version: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ requirements: []
246
+ rubygems_version: 3.6.2
247
+ specification_version: 4
248
+ summary: Research test
249
+ test_files: []