Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regression testing of latest master #1796

Closed
DanVanAtta opened this issue Jun 2, 2017 · 11 comments
Closed

Regression testing of latest master #1796

DanVanAtta opened this issue Jun 2, 2017 · 11 comments

Comments

@DanVanAtta
Copy link
Member

Has anyone tested out the latest master? Given it's been so long since we had a stable master, I think we need to invest some time to make sure the latest plays well. If so, we can mark it as a stable and then get back into the cadence of testing things incrementally and updating the stable number more in step with PR merges.

Being incremental like that I think is important so we avoid the "test-the-world-by-hand" scenario. With incremental updates, and testing each PR very thoroughly, my hope was we could avoid the need for full regression testing.

With that said, I'd like to get the latest master marked as a stable if we can, and then put up a lobby message to encourage folks to download the latest for the bug fixes.

@ssoloff
Copy link
Member

ssoloff commented Jun 3, 2017

I've been regularly testing master for the past two weeks while I've been submitting Checkstyle PRs that could possibly break compatibility. That said, I've only tested it in areas covered by the compatibility testing checklist you put together, @DanVanAtta.

@simon33-2
Copy link
Contributor

I've been using it, with a few custom mods most of which are now included into the master. The change I mostly use which isn't included in the master is fighting an amphibious assault automatically if there is only one.

The only thing which annoys me in the current master is that we suddenly have to select which territory we're going to produce sea units from if there are two possibilities. Previously the engine was able to figure this out so I don't know what changed that it can't?

@ron-murhammer
Copy link
Member

ron-murhammer commented Jun 4, 2017

@simon33-2 Actually the engine wasn't able to, it just randomly picked one. This ended up often leading it not choosing the one the user intended and then they not be able to say set land units in one of the territories. It also affects any maps which have 'fighters can be moved to new carriers' as there was no way to select which factory to use for a carrier. See #350

@ron-murhammer
Copy link
Member

@simon33-2 I thought a little more about this change and decided to add more conditions on when to prompt users for territory selection: #1803

@simon33-2
Copy link
Contributor

In the past, if you are producing 4 units in global US1 to SZ101 at peace you could always then produce a land unit in either territory. Just tested it on build 3627. It would update the previous sea placement to facilitate the new placement, reducing the existing placement and adding another one from the other possible territory.

@simon33-2
Copy link
Contributor

If that made sense.

@simon33-2
Copy link
Contributor

I'm getting an NPE with the current master when I load an existing save game and click "Start PBEM/PBF game".

triplea.engine.version.bin:1.9
Exception while parsing: triplea_39861_Ita5.tsvg : java.lang.NullPointerException at games.strategy.engine.data.properties.GameProperties.get(GameProperties.java:86)
Exception while parsing: triplea_39861_Ita5.tsvg : java.lang.NullPointerException at games.strategy.engine.data.properties.GameProperties.get(GameProperties.java:86)
java.lang.NullPointerException
at games.strategy.engine.data.properties.GameProperties.getPlayerProperty(GameProperties.java:142)
at games.strategy.engine.framework.startup.ui.PlayerSelectorRow.(PlayerSelectorRow.java:85)
at games.strategy.engine.framework.startup.ui.PBEMSetupPanel.layoutPlayerPanel(PBEMSetupPanel.java:464)
at games.strategy.engine.framework.startup.ui.PBEMSetupPanel.layoutComponents(PBEMSetupPanel.java:128)
at games.strategy.engine.framework.startup.ui.PBEMSetupPanel.(PBEMSetupPanel.java:90)
at games.strategy.engine.framework.startup.mc.SetupPanelModel.showPBEM(SetupPanelModel.java:41)
at games.strategy.engine.framework.startup.ui.MetaSetupPanel.lambda$setupListeners$1(MetaSetupPanel.java:119)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at org.pushingpixels.substance.internal.utils.RolloverButtonListener.mouseReleased(RolloverButtonListener.java:124)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at games.strategy.engine.framework.GameRunner$1.dispatchEvent(GameRunner.java:367)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
java.lang.NullPointerException
at games.strategy.engine.data.properties.GameProperties.getPlayerProperty(GameProperties.java:142)
at games.strategy.engine.framework.startup.ui.PlayerSelectorRow.(PlayerSelectorRow.java:85)
at games.strategy.engine.framework.startup.ui.PBEMSetupPanel.layoutPlayerPanel(PBEMSetupPanel.java:464)
at games.strategy.engine.framework.startup.ui.PBEMSetupPanel.layoutComponents(PBEMSetupPanel.java:128)
at games.strategy.engine.framework.startup.ui.PBEMSetupPanel.(PBEMSetupPanel.java:90)
at games.strategy.engine.framework.startup.mc.SetupPanelModel.showPBEM(SetupPanelModel.java:41)
at games.strategy.engine.framework.startup.ui.MetaSetupPanel.lambda$setupListeners$1(MetaSetupPanel.java:119)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at org.pushingpixels.substance.internal.utils.RolloverButtonListener.mouseReleased(RolloverButtonListener.java:124)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at games.strategy.engine.framework.GameRunner$1.dispatchEvent(GameRunner.java:367)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

@ron-murhammer
Copy link
Member

@simon33-2 That NPE should be fixed now in current master. There needed to be a few null checks to handle backwards compatibility of new data components that weren't initialized.

@ron-murhammer
Copy link
Member

@simon33-2 Your global example does appear to work fine and properly adjust. But here is a very similar example on 270 BC where you can try to place the boats first then place land units and it doesn't work:
test.zip

Not sure exactly when it does and doesn't adjust.

@ssoloff
Copy link
Member

ssoloff commented Jun 4, 2017

@ron-murhammer Not sure if you get notifications for closed PRs, but please see this comment when you have time.

@ron-murhammer
Copy link
Member

Closing in favor of #1768

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants