diff --git a/.gitignore b/.gitignore index 74a9d77c9..882fd2676 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,7 @@ coverage /node_modules .DS_Store app/javascript/src/componentLoader/components/* + +# ignore addon features +features/addons/* +!features/addons/.gitkeep diff --git a/config/initializers/load_addons_specs.rb b/config/initializers/load_addons_specs.rb new file mode 100644 index 000000000..feafb1f8e --- /dev/null +++ b/config/initializers/load_addons_specs.rb @@ -0,0 +1,45 @@ +require 'singleton' + +class AddonsSpecLoader + include Singleton + include AddonsHelper + + # rspec will recognise symlinks in the second run + def mount + FileUtils.rm_f Dir.glob("#{Dir.pwd}/spec/addons/*") + available_addons.each do |addon| + specs_path = "addons/#{addon}/spec" + next unless Dir.exist? specs_path + File.symlink("#{Dir.pwd}/#{specs_path}", + "#{Dir.pwd}/spec/addons/#{addon}") + end + end + + # cucumber can't respolve path with symlinks so we copy files from addons + def copy_to_features + FileUtils.rm_f Dir.glob("#{Dir.pwd}/features/addons/*") + available_addons.each do |addon| + feature_path = "addons/#{addon}/features" + FileUtils.copy_entry("#{Dir.pwd}/#{feature_path}", + "#{Dir.pwd}/features/addons/#{addon}") + end + end + + private + + def available_addons + list_all_addons.map { |addon| addon.to_s.split('::').last.underscore } + end +end + +if ENV['RAILS_ENV'].in? %w(test development) + begin + puts '[sciNote] Generating symlinks for addons!' + puts '[sciNote] Copying features from addons!' + AddonsSpecLoader.instance.mount + AddonsSpecLoader.instance.copy_to_features + rescue + puts '[sciNote] Unable to load specs from addons!' + puts '[sciNote] Your system does not support symlink!' + end +end diff --git a/features/addons/.gitkeep b/features/addons/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/features/addons/organization_management b/features/addons/organization_management new file mode 120000 index 000000000..eb9762c71 --- /dev/null +++ b/features/addons/organization_management @@ -0,0 +1 @@ +/usr/src/app/addons/organization_management/features \ No newline at end of file diff --git a/spec/addons/organization_management b/spec/addons/organization_management new file mode 120000 index 000000000..052f6f0ce --- /dev/null +++ b/spec/addons/organization_management @@ -0,0 +1 @@ +/usr/src/app/addons/organization_management/spec \ No newline at end of file