summaryrefslogtreecommitdiff
path: root/test/rubygems/test_project_sanity.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/rubygems/test_project_sanity.rb')
-rw-r--r--test/rubygems/test_project_sanity.rb58
1 files changed, 58 insertions, 0 deletions
diff --git a/test/rubygems/test_project_sanity.rb b/test/rubygems/test_project_sanity.rb
new file mode 100644
index 0000000000..72f5e3b36e
--- /dev/null
+++ b/test/rubygems/test_project_sanity.rb
@@ -0,0 +1,58 @@
+# frozen_string_literal: true
+
+require "rubygems/test_case"
+require "open3"
+
+class TestProjectSanity < Minitest::Test
+
+ def test_rake_package_builds_ok
+ skip unless File.exist?(File.expand_path("../../../Rakefile", __FILE__))
+
+ with_empty_pkg_folder do
+ output, status = Open3.capture2e("rake package")
+
+ assert_equal true, status.success?, <<~MSG.chomp
+ Expected `rake package` to work, but got errors:
+
+ ```
+ #{output}
+ ```
+
+ If you have added or removed files, make sure you run `rake update_manifest` to update the `Manifest.txt` accordingly
+ MSG
+ end
+ end
+
+ def test_manifest_is_up_to_date
+ skip unless File.exist?(File.expand_path("../../../Rakefile", __FILE__))
+
+ _, status = Open3.capture2e("rake check_manifest")
+
+ assert status.success?, "Expected Manifest.txt to be up to date, but it's not. Run `rake update_manifest` to sync it."
+ end
+
+ private
+
+ def with_empty_pkg_folder
+ if File.exist?("pkg")
+ FileUtils.cp_r("pkg", "tmp")
+
+ begin
+ FileUtils.rm_rf("pkg")
+ yield
+ ensure
+ FileUtils.rm_rf("pkg")
+ FileUtils.cp_r("tmp/pkg", ".")
+ end
+ else
+ Dir.mkdir("pkg")
+
+ begin
+ yield
+ ensure
+ FileUtils.rm_rf("pkg")
+ end
+ end
+ end
+
+end