Generate output for a given Github Action - firebase

I'm trying to get the output of a given github action, in this case: https://github.com/w9jds/firebase-action
The thing is that there's no output from this action, and I was wondering how could I get the prints that the workflow itself did during that github action step.

Related

How to locate the method using an error message string?

I would like to know where is this error code located in the AOT. Would like to know the path to understand the structure and develop custom code.
Transaction has been selected, for settlement, although settlement type: none was selected
I generally use one of two methods to locate message strings.
Provided the cross reference is updated (it should be in dev) use the "Label editor" to to search for then string, see this answer.
Put a breakpoint in top of info.add method, disable CIL if needed, then rerun to get the error message invoking the debugger, see this answer.

How to write (or access?) log of errors and warnings in R

Can anyone tell me how to keep a simple log of errors and warnings thrown during sourcing of code in R? Specifically I want to write them to an object during sourcing so I can print them into a message after execution in case the user missed it as the lines scrolled by.
Background: I wrote a small data validation program, about 600 lines, that allows the user to select an excel file which will be automatically imported, processed, and exported again. I tried hard to include automatic checks in the code (such as checking for required column names and throwing a pop up box if not present), but am aware that I can't think of every possible error that could occur, especially with other users. What I would like is to have every error/warning/etc. that occurs during sourcing to be written to an object that I could then call later such as in a pop up box. I have been able to figure out every step except for creating the error log.
ErrorLog <- (code for collecting errors/warnings here)
(Program Code - already completed)
ErrorPopUp <- tkmessageBox(title = "ERRORS", message = paste("
Please note the following errors/warnings occurred during file processing:
",
ErrorLog ,
"To proceed and export file please press OK. To exit the program without
saving, please press cancel."), icon = "warning", type = "okcancel")
(code to continue and export or quit)
I appreciate any ideas, and thx for the patience as I saw many posts on advanced topics such as creating your own error messages or sending them to windows, but none for simply writing an object listing them.

Basic Alexa Skills

I have downloaded the Alexa Skills online tutorial found at:
https://github.com/amzn/alexa-skills-kit-js/blob/master/samples/reindeerGames/src/index.js
and followed (I think) all of the instructions in the tutorial found at:
https://developer.amazon.com/public/community/post/TxDJWS16KUPVKO/New-Alexa-Skills-Kit-Template-Build-a-Trivia-Skill-in-under-an-Hour
This is meant to be a tutorial for first time Alexa Skills developers. My question is, I get this error message once I hit the "Save and Test" button:
errorMessage": "Exception: TypeError: Cannot read property 'application' of undefined"
Does anyone know what the above error means or how to get rid of it?
Thanks v much.
This looks like a javascript error telling you that you are trying to use a property named application on an undefined variable.
JavaScript assigns the value "undefined" to any variable that you use but haven't set yet.
There are a several ways that you can debug problems in your Lambdas. Perhaps the easiest is to review the Logs. To do this:
Go to the Lambda console (where you upload your code to Lambda)
Select the Monitoring tab
Select "View logs in CloudWatch" (in the upper right)
Review the latest log, looking for a reported error in one of your files (typically index.js) and specifically the line number. That should help you find the error.
Note that the time stamps will be GMT, so probably won't match your actual time. This can be confusing if you have multiple entries. But the minutes should match, helping you verify that you're looking at the correct log entry.
A more advanced, and quicker way to debug Lambda problems, is the include a "test" request, and run this each time you upload code to Lambda.
To set this up:
Run one of your defined utterances in the ASK test page under the "Service Simulator" section.
Copy the code displayed below that in the "Lambda Request" section.
Now switch to the Lambda console for your Lambda function
Click the down arrow in the Actions button and select "Configure test event"
Paste the request you copied above into the text field
Click Save and Test.
Now each time you upload new code to Lambda, you can select "Test" and the request that you just saved will be run.
And best of all, the console log will be displayed in the lower right corner, saving you from having to switch to the logs and refresh to view them.

How to get and set the default output directory in Robot Framework(Ride) in Run time

I would like to move all my output files to a custom location, to a Run directory created based on Date time during Run time. The output folder by datetime is created in the TestSetup
I have function "Process_Output_files" which will move the files to the Run folder(Run1,Run2,Run3 Folders).
I have tried using the argument-d and used the function "Process_Output_files" as suite tear down to move the output files to the respective Run directory.
But I get the following error "The process cannot access the file because it is being used by another process". I know this is because the Robot Framework (Ride) is currently using this.
If I dont use the -d argument, the output files are getting saved in temp folders.
c:\users\<user>\appdata\local\temp\RIDEfmbr9x.d\output.xml
c:\users\<user>\appdata\local\temp\RIDEfmbr9x.d\log.html
c:\users\<user>\appdata\local\temp\RIDEfmbr9x.d\report.html
My question is, Is there a way to get move the files to custom location during run time with in Robot Framework.
You can use the following syntax in RIDE (Arguments:) to create the output in newfolders dynamically
--outputdir C:/AutomationLogs/%date:~-4,4%%date:~-10,2%%date:~-7,2% --timestampoutputs
The above syntax gives you the output in below folder:
Output: C:\AutomationLogs\20151125\output-20151125-155017.xml
Log: C:\AutomationLogs\20151125\log-20151125-155017.html
Report: C:\AutomationLogs\20151125\report-20151125-155017.html
Hope this helps :)
I understand the end result you want is to have your output files in their custom folders. If this is your desire, it can be accomplished at runtime and you won't have to move them as part of your post processing. This will not work in RIDE, unfortunately, since the folder structure is created dynamically. I have two options for you.
Option 1: Use a script to kick off your tests
RIDE is awesome, but in my humble opinion, one shouldn't be using it to run ones tests, only to build and debug ones tests. Scripts are far more powerful and flexible.
Assuming you have a test, test2.txt, you wish to run, the script you use to do this could be something like:
from time import gmtime, strftime
import os
#strftime returns string representations of a date-time tuple.
#gmtime returns the date-time tuple representing greenwich mean time
dts=strftime("%Y.%m.%d.%H.%M.%S", gmtime())
cmd="pybot -d Run%s test2"%(dts,)
os.system(cmd)
As an aside, if you do intend to do post processing of your files using rebot, be aware you may not need to create intermediate log and report files. The output.xml files contain everything you need, so if you don't want to create superfluous files, use --log NONE --report NONE
Option 2: Use a listener to do post processing
A listener is a program you write that responds to events (x_start, x_end, etc). The close() event is akin to the teardown function and is the last thing called. So, assuming you have a function moveFiles() you simply need to create a listener class (myListener), define the close() method to call your moveFiles() function, and alert your test that it should report to a listener with the argument --listener myListener.
This option should be compatible with RIDE though I admit I have never tried to use listeners with the IDE.
At least you can write a custom run script that handles the moving of files after the test case execution. In this case the files are no longer used by pybot.

Two tables with different names and using the single record cannot be created, how can I implent this?

I'm trying to create two tables using the same record, with two different names, but it creates only any one of them or sometimes throws an exception.
Following is the code from my record file:
-record(account,{acctnum, cnic, name, address,date ,time, balance=0}).
Following is my code from module called accounts:
-module(accounts).
-compile(export_all).
-include("records.hrl").
start()->
ets:new(current,[named_table,{keypos, #account.cnic}]),
ets:new(savings,[named_table,{keypos, #account.cnic}]).
Sometimes it returns an atom called savings, but sometimes it gives the following error:
** exception error: bad argument
in function ets:new/2
called as ets:new(current,[named_table,{keypos,3}])
in call from accounts:start/0 (accounts.erl, line 5)
Please do let me know that either it's possible to create two tables in ets using a single record?
If not, then how can I Implement it, I'm trying to create two tables, one for the savings account and other for the current account, how can I resolve this problem?
There is not problem with creating two ETS based on one record.
** exception error: bad argument
in function ets:new/2
called as ets:new(current,[named_table,{keypos,3}])
in call from accounts:start/0 (accounts.erl, line 5)
Such exception usually means that the table with the same name is already created. I.e. function start was called twice (first one successfully, and second one - not).
When you execute start for the first time, everything is ok, and you get the result the last line of the function. You can check this by using the tv module; execute tv:start() and you can inspect any ets or mnesia table.
If you execute start again, then as Alexey says, you will get an error because the table current (and saving) already exists. This maks the shell crash, and destroy the 2 tables; so the next time you will use start, it will be ok again.
If you cannot know if the ets table is already existing, you can test it with a code like this:
ensure(T,Def) ->
case ets:info(T) of
undefined -> ets:new(T,Def);
_ -> ets:delete_all_objects(T) %% or anything you need to do in this case
end.

Resources