From 6aa70a3e93d1a12ac17bc89337ca6791155a4e30 Mon Sep 17 00:00:00 2001 From: Paul Chaignon Date: Fri, 5 Dec 2014 01:22:38 -0500 Subject: [PATCH 1/5] Reorganize the methods called in generated? to only load the data in last resort --- lib/linguist/generated.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/linguist/generated.rb b/lib/linguist/generated.rb index 291fa8bd..50dbc58d 100644 --- a/lib/linguist/generated.rb +++ b/lib/linguist/generated.rb @@ -51,20 +51,20 @@ module Linguist # # Return true or false def generated? - minified_files? || - compiled_coffeescript? || xcode_file? || - generated_parser? || - generated_net_docfile? || generated_net_designer_file? || - generated_postscript? || - generated_protocol_buffer? || - generated_jni_header? || composer_lock? || node_modules? || godeps? || - vcr_cassette? || - generated_by_zephir? + generated_by_zephir? || + minified_files? || + compiled_coffeescript? || + generated_parser? || + generated_net_docfile? || + generated_postscript? || + generated_protocol_buffer? || + generated_jni_header? || + vcr_cassette? end # Internal: Is the blob an Xcode file? From 42ff3f58d9da0e33f36a99ba4ce9eb1ee274e11f Mon Sep 17 00:00:00 2001 From: Paul Chaignon Date: Fri, 5 Dec 2014 11:38:03 -0500 Subject: [PATCH 2/5] Tests for Generated.generated? optimization --- test/test_generated.rb | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 test/test_generated.rb diff --git a/test/test_generated.rb b/test/test_generated.rb new file mode 100644 index 00000000..e5ac9544 --- /dev/null +++ b/test/test_generated.rb @@ -0,0 +1,40 @@ +class TestGenerated < Test::Unit::TestCase + include Linguist + + def samples_path + File.expand_path("../../samples", __FILE__) + end + + def generated_without_loading_data(name) + blob = File.join(samples_path, name) + Generated.generated?(blob, lambda { false }) + end + + def test_generated_without_loading_data + # Xcode project files + assert generated_without_loading_data("Binary/MainMenu.nib") + assert generated_without_loading_data("Dummy/foo.xcworkspacedata") + assert generated_without_loading_data("Dummy/foo.xcuserstate") + + # .NET designer file + assert generated_without_loading_data("Dummu/foo.designer.cs") + + # Composer generated composer.lock file + assert generated_without_loading_data("JSON/composer.lock") + + # Node modules + assert generated_without_loading_data("Dummy/node_modules/foo.js") + + # Godep saved dependencies + assert generated_without_loading_data("Godeps/Godeps.json") + assert generated_without_loading_data("Godeps/_workspace/src/github.com/kr/s3/sign.go") + + # Generated by Zephir + assert generated_without_loading_data("Zephir/filenames/exception.zep.c") + assert generated_without_loading_data("Zephir/filenames/exception.zep.h") + assert generated_without_loading_data("Zephir/filenames/exception.zep.php") + + # Minified files + assert !generated_without_loading_data("JavaScript/jquery-1.6.1.min.js") + end +end From 67ccb24b41880cd2517f6ecf4e08a182a5d49256 Mon Sep 17 00:00:00 2001 From: Paul Chaignon Date: Fri, 5 Dec 2014 10:29:19 -0500 Subject: [PATCH 3/5] Require test helper in generated test --- test/test_generated.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_generated.rb b/test/test_generated.rb index e5ac9544..d5735f4f 100644 --- a/test/test_generated.rb +++ b/test/test_generated.rb @@ -1,3 +1,5 @@ +require_relative "./helper" + class TestGenerated < Test::Unit::TestCase include Linguist From a51d637e5887ffbec15bb968f1ce287fd1d107b4 Mon Sep 17 00:00:00 2001 From: Paul Chaignon Date: Fri, 5 Dec 2014 17:53:19 -0500 Subject: [PATCH 4/5] Error messages for tests on Generated --- test/test_generated.rb | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/test/test_generated.rb b/test/test_generated.rb index d5735f4f..8b2311ea 100644 --- a/test/test_generated.rb +++ b/test/test_generated.rb @@ -7,36 +7,40 @@ class TestGenerated < Test::Unit::TestCase File.expand_path("../../samples", __FILE__) end - def generated_without_loading_data(name) + def generated_without_loading_data?(name) blob = File.join(samples_path, name) - Generated.generated?(blob, lambda { false }) + Generated.generated?(blob, lambda { "" }) end - def test_generated_without_loading_data + def check_generated_without_loading_data(name) + assert generated_without_loading_data?(name), "Data was loaded when calling generated? on #{name}" + end + + def test_check_generated_without_loading_data # Xcode project files - assert generated_without_loading_data("Binary/MainMenu.nib") - assert generated_without_loading_data("Dummy/foo.xcworkspacedata") - assert generated_without_loading_data("Dummy/foo.xcuserstate") + check_generated_without_loading_data("Binary/MainMenu.nib") + check_generated_without_loading_data("Dummy/foo.xcworkspacedata") + check_generated_without_loading_data("Dummy/foo.xcuserstate") # .NET designer file - assert generated_without_loading_data("Dummu/foo.designer.cs") + check_generated_without_loading_data("Dummu/foo.designer.cs") # Composer generated composer.lock file - assert generated_without_loading_data("JSON/composer.lock") + check_generated_without_loading_data("JSON/composer.lock") # Node modules - assert generated_without_loading_data("Dummy/node_modules/foo.js") + check_generated_without_loading_data("Dummy/node_modules/foo.js") # Godep saved dependencies - assert generated_without_loading_data("Godeps/Godeps.json") - assert generated_without_loading_data("Godeps/_workspace/src/github.com/kr/s3/sign.go") + check_generated_without_loading_data("Godeps/Godeps.json") + check_generated_without_loading_data("Godeps/_workspace/src/github.com/kr/s3/sign.go") # Generated by Zephir - assert generated_without_loading_data("Zephir/filenames/exception.zep.c") - assert generated_without_loading_data("Zephir/filenames/exception.zep.h") - assert generated_without_loading_data("Zephir/filenames/exception.zep.php") + check_generated_without_loading_data("Zephir/filenames/exception.zep.c") + check_generated_without_loading_data("Zephir/filenames/exception.zep.h") + check_generated_without_loading_data("Zephir/filenames/exception.zep.php") # Minified files - assert !generated_without_loading_data("JavaScript/jquery-1.6.1.min.js") + assert !generated_without_loading_data?("JavaScript/jquery-1.6.1.min.js"), "Data wasn't loaded when calling generated? on JavaScript/jquery-1.6.1.min.js" end end From 42beadcf344717a786dd32de7d36acb166307faf Mon Sep 17 00:00:00 2001 From: Paul Chaignon Date: Sun, 28 Dec 2014 17:00:13 +0100 Subject: [PATCH 5/5] Use an exception for tests on Generated.generated? --- test/test_generated.rb | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/test/test_generated.rb b/test/test_generated.rb index 8b2311ea..c54f0c37 100644 --- a/test/test_generated.rb +++ b/test/test_generated.rb @@ -7,40 +7,47 @@ class TestGenerated < Test::Unit::TestCase File.expand_path("../../samples", __FILE__) end - def generated_without_loading_data?(name) + class DataLoadedError < StandardError; end + + def generated_without_loading_data(name) blob = File.join(samples_path, name) - Generated.generated?(blob, lambda { "" }) + assert_nothing_raised(DataLoadedError, "Data was loaded when calling generated? on #{name}") do + Generated.generated?(blob, lambda { raise DataLoadedError.new }) + end end - def check_generated_without_loading_data(name) - assert generated_without_loading_data?(name), "Data was loaded when calling generated? on #{name}" + def generated_loading_data(name) + blob = File.join(samples_path, name) + assert_raise(DataLoadedError, "Data wasn't loaded when calling generated? on #{name}") do + Generated.generated?(blob, lambda { raise DataLoadedError.new }) + end end def test_check_generated_without_loading_data # Xcode project files - check_generated_without_loading_data("Binary/MainMenu.nib") - check_generated_without_loading_data("Dummy/foo.xcworkspacedata") - check_generated_without_loading_data("Dummy/foo.xcuserstate") + generated_without_loading_data("Binary/MainMenu.nib") + generated_without_loading_data("Dummy/foo.xcworkspacedata") + generated_without_loading_data("Dummy/foo.xcuserstate") # .NET designer file - check_generated_without_loading_data("Dummu/foo.designer.cs") + generated_without_loading_data("Dummu/foo.designer.cs") # Composer generated composer.lock file - check_generated_without_loading_data("JSON/composer.lock") + generated_without_loading_data("JSON/composer.lock") # Node modules - check_generated_without_loading_data("Dummy/node_modules/foo.js") + generated_without_loading_data("Dummy/node_modules/foo.js") # Godep saved dependencies - check_generated_without_loading_data("Godeps/Godeps.json") - check_generated_without_loading_data("Godeps/_workspace/src/github.com/kr/s3/sign.go") + generated_without_loading_data("Godeps/Godeps.json") + generated_without_loading_data("Godeps/_workspace/src/github.com/kr/s3/sign.go") # Generated by Zephir - check_generated_without_loading_data("Zephir/filenames/exception.zep.c") - check_generated_without_loading_data("Zephir/filenames/exception.zep.h") - check_generated_without_loading_data("Zephir/filenames/exception.zep.php") + generated_without_loading_data("Zephir/filenames/exception.zep.c") + generated_without_loading_data("Zephir/filenames/exception.zep.h") + generated_without_loading_data("Zephir/filenames/exception.zep.php") # Minified files - assert !generated_without_loading_data?("JavaScript/jquery-1.6.1.min.js"), "Data wasn't loaded when calling generated? on JavaScript/jquery-1.6.1.min.js" + generated_loading_data("JavaScript/jquery-1.6.1.min.js") end end