ThrowTheSwitch / Ceedling

Ruby-based unit testing and build system for C projects
http://throwtheswitch.org
Other
588 stars 247 forks source link

Pre-release 1.0.0 run issues #943

Open mdyme opened 2 weeks ago

mdyme commented 2 weeks ago

Hi, I'm trying to run the latest pre-release 1.0.0 version and I have on my Win11 x64:

c:\Users\mdymek\Downloads\Ceedling-1.0.0-cb01ae0\bin>ruby --version
ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x64-mingw-ucrt]

c:\Users\mdymek\Downloads\Ceedling-1.0.0-cb01ae0\bin>ruby .\ceedling version
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.

EXCEPTION: Could not collect version information for vendor component: c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/vendor/unity/src/unity.h

On the older Ruby version:

c:\Users\mdymek\Downloads\Ceedling-1.0.0-cb01ae0\bin>ruby --version
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x64-mingw32]

c:\Users\mdymek\Downloads\Ceedling-1.0.0-cb01ae0\bin>ruby .\ceedling version

EXCEPTION: Could not collect version information for vendor component: c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/vendor/unity/src/unity.h

The same exception for all other ceeling commands.

mvandervoord commented 2 weeks ago

Hi everyone. If you're installing our pre-release locally and don't have a previous version of ceedling installed, it likely didn't install all the dependencies. They can be fetched using ruby's (built-in) package management tool.

gem install constructor

I suspect this is what needs to happen? If you still have issues, let me know!

mdyme commented 2 weeks ago

constructor installed successfully.

Issue still exists. Another example:

c:\Users\mdymek\Downloads\Ceedling-1.0.0-cb01ae0\examples\temp_sensor>ruby ..\..\bin\ceedling
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
Loaded project configuration from environment variable `CEEDLING_PROJECT_FILE`.
 > Using: c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/examples/temp_sensor/project.yml
 > Working directory: c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/examples/temp_sensor

EXCEPTION: Could not collect version information for vendor component: c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/vendor/unity/src/unity.h
mvandervoord commented 2 weeks ago

Hm. If take a look at that folder, does c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/vendor/unity/src/unity.h exist? Is there anything inside :/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/vendor?

mdyme commented 2 weeks ago

Following folders are empty:

These folders are intentionally empty in your release zip file? They should be downloaded manually from repos described in the CeedlingPacket.md?

mdyme commented 2 weeks ago

Ceddling version is now printed correctly, thanks!

Other issue arised:

c:\Users\mdymek\Downloads\Ceedling-1.0.0-cb01ae0\examples\temp_sensor>ruby ..\..\bin\ceedling
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
Loaded project configuration from environment variable `CEEDLING_PROJECT_FILE`.
 > Using: c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/examples/temp_sensor/project.yml
 > Working directory: c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/examples/temp_sensor
<internal:C:/Ruby33-x64/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:136:in `require': cannot load such file -- unicode/display_width (LoadError)
        from <internal:C:/Ruby33-x64/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:136:in `require'
        from c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/lib/ceedling/reportinator.rb:8:in `<top (required)>'
        from <internal:C:/Ruby33-x64/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:136:in `require'
        from <internal:C:/Ruby33-x64/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:136:in `require'
        from c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/lib/ceedling/rakefile.rb:20:in `<top (required)>'
        from <internal:C:/Ruby33-x64/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:136:in `require'
        from <internal:C:/Ruby33-x64/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:136:in `require'
        from c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/bin/cli_helper.rb:133:in `load_ceedling'
        from c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/bin/cli_handler.rb:223:in `build'
        from c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/bin/cli.rb:346:in `build'
        from C:/Ruby33-x64/lib/ruby/gems/3.3.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
        from C:/Ruby33-x64/lib/ruby/gems/3.3.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
        from C:/Ruby33-x64/lib/ruby/gems/3.3.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
        from c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/bin/cli.rb:93:in `start'
        from ../../bin/ceedling:125:in `<main>'
mvandervoord commented 2 weeks ago

Sigh. No. They are not intentionally blank. For some reason github actions sometimes builds our zip with dependencies and sometimes without and I've not yet figured out how to control it. I'm sure it's a setting I'm missing.

In any case, downloading those projects manually should solve your problem. I apologize that it's this painful.

mdyme commented 2 weeks ago

Thanks for explanation, I'm happy that it worked! Please see the new issue when running tests for your example project.

mvandervoord commented 2 weeks ago

The warning looks like a new deprecation from the latest Ruby. I'll have to add that to my list.

The error looks like a missing gem again.

gem install unicode-display_width

(note the weird dash vs underscores)

mdyme commented 2 weeks ago

It seems that we have issue when running tests from temp_sensor project (regardless tested file/testcase):

c:\Users\mdymek\Downloads\Ceedling-1.0.0-cb01ae0\examples\temp_sensor>ruby ..\..\bin\ceedling
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
Loaded project configuration from environment variable `CEEDLING_PROJECT_FILE`.
 > Using: c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/examples/temp_sensor/project.yml
 > Working directory: c:/Users/mdymek/Downloads/Ceedling-1.0.0-cb01ae0/examples/temp_sensor

Ceedling set up completed in 420 milliseconds

Preparing Build Paths...

Collecting Test Context
-----------------------
Parsing TestMain.c for build directive macros...

Ingesting Test Configurations
-----------------------------
Collecting search paths, flags, and defines TestMain.c...

Collecting Test Context
-----------------------
Preprocessing #include statements for TestMain.c...
Extracting #include statements via preprocessor from TestMain.c...
Using fallback regex #include extraction for TestMain.c...
ERROR: wrong number of arguments (given 2, expected 1)
EXCEPTION: ArgumentError ==> wrong number of arguments (given 2, expected 1)
Ceedling could not complete operations because of errors
mvandervoord commented 2 weeks ago

Can you run it as ruby ..\..\bin\ceedling -v=4 clobber test:all? That should capture the error at the end so we can see the specific line(s) that are failing.

mvandervoord commented 2 weeks ago

Hey @mdyme -- when you installed this version of ceedling to test, did you install it as a rubygem or did you download the zip file? (I'm just looking for clues as to where I am missing the vendor libraries)

tuti333 commented 1 week ago

Hi! I have similar issue on my end. I wanted to try out 1.0.0, without breaking current environment so i tried to use it on WSL.

Ubuntu 24.04.1 LTS ruby 3.2.3 (2024-01-18 revision 52bb2ac0a6) [x86_64-linux-gnu]

I installed gem from local package ceedling-1.0.0-533d636 first and then also with ceedling-1.0.0-9fc30fb.

Before that i had to install manually gems:

I also installed constructor after seeing this conversation.

Tests works, but the same error appears

ceedling test:all --project ./tools/project/ceedling/project.yml
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
🚧 Loaded project configuration from command line argument.
 > Using: /mnt/c/Work/tools/project/ceedling/project.yml
 > Working directory: /mnt/c/Work/

Ceedling set up completed in 28.74 seconds

👟 Preparing Build Paths...

...

--------------------
OVERALL TEST SUMMARY
--------------------
TESTED:  69
PASSED:  69
FAILED:   0
IGNORED:  0

Ceedling operations completed in 6.24 seconds

But for example dumpconfig call fails. Im not exactly sure is this a reason or not, but same command with same version of ceedling on Windows and newer Ruby version works properly.

ceedling dumpconfig temp.yml -p ./tools/project/ceedling/project.yml -m ./tools/project/ceedling/ctc_armclang.yml
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.

🧨 EXCEPTION: undefined method `each' for "./tools/project/ceedling/ctc_armclang.yml":String
JuPrgn commented 1 week ago

On my docker image I also add to install manually (gem install package_name):

Before successfully install : gem install --local ceedling_1.0.0.gem

tuti333 commented 1 week ago

oh so unicode-display_width and deep_merge really blocked ceedling installation, but thor didnt. I just installed thor-1.3.2 gem, and this error is gone.

Thanks JuPrgn

mvandervoord commented 1 week ago

I'm glad you were able to work through these issues. I'm sorry that this is so painful at the moment. The dependencies will be automatic with an official (non-local) gem release. :/